Suppose, there's a 3rd party class:

    public class A {
        private int v;
        public A(int v) {
            this.v = v;
        }
        public int v() {
            return v;
        }
    }

If you want it to deserialize on client, you usually write a 
CustomFieldSerializer that calls the constructor in instantiate():

    public class A_CustomFieldSerializer extends CustomFieldSerializer<A> {
        public static void deserialize(SerializationStreamReader 
streamReader,
                A instance) throws SerializationException {
        }
        public static A instantiate(SerializationStreamReader streamReader)
                throws SerializationException {
            return new A(streamReader.readInt());
        }
        public static void serialize(SerializationStreamWriter streamWriter,
                A instance) throws SerializationException {
            streamWriter.writeInt(instance.v());
        }
        @Override
        public void deserializeInstance(SerializationStreamReader 
streamReader,
                A instance) throws SerializationException {
            deserialize(streamReader, instance);
        }
        @Override
        public boolean hasCustomInstantiateInstance() {
            return true;
        }
        @Override
        public A instantiateInstance(SerializationStreamReader streamReader)
                throws SerializationException {
            return instantiate(streamReader);
        }
        @Override
        public void serializeInstance(SerializationStreamWriter 
streamWriter,
                A instance) throws SerializationException {
            serialize(streamWriter, instance);
        }
    }

If someone tries to extends this class, deserialization corrupts the 
stream, because readInt() is not called:

    public class B extends A {
        public B() {
            super(0);
        }
    }

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to