package com.google.appengine.api.datastore;
import com.google.gwt.user.client.rpc.SerializationException;
import com.google.gwt.user.client.rpc.SerializationStreamReader;
import com.google.gwt.user.client.rpc.SerializationStreamWriter;
/**
* Custom field serializer for the datastore Key class.
* Does not transmit appid, just parent/kind/id/name.
*/
public class Key_CustomFieldSerializer
{
public static void deserialize(SerializationStreamReader streamReader, Key instance)
throws SerializationException
{
// already handled in instantiate
}
public static Key instantiate(SerializationStreamReader streamReader)
throws SerializationException
{
Key parent = (Key) streamReader.readObject();
String kind = streamReader.readString();
long id = streamReader.readLong();
String name = streamReader.readString();
if (name == null)
return KeyFactory.createKey(parent, kind, id);
else
return KeyFactory.createKey(parent, kind, name);
}
public static void serialize(SerializationStreamWriter streamWriter, Key instance)
throws SerializationException
{
streamWriter.writeObject(instance.getParent());
streamWriter.writeString(instance.getKind());
streamWriter.writeLong(instance.getId());
streamWriter.writeString(instance.getName());
}
}