Deserialization woes again!

2 views
Skip to first unread message

Denis Treskunov

unread,
Jul 19, 2006, 3:26:44 PM7/19/06
to Google Web Toolkit
After spending some time looking into why I was getting the following
exception [1] when the server was deserializing an RPC object, I came
upon the helpful post [2] by mmendez who recommended that
com.google.gwt.user.rpc.ServerSerializationStream be patched. However,
the patch [3] introduced a different error into deserialization code:
[4]. It seems that not adding a duplicate entry to
fAlreadyDecodedObjects breaks lookupDecodedObject(String) which looks
past the end of the ArrayList.

Could anyone advise me on the easiest way to solve this problem?

[1]
Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException:
java.lang.reflect.InvocationTargetException
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserizeWithCustomSerializer(ServerSerializationStream.java:593)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserialize(ServerSerializationStream.java:516)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.readObject(ServerSerializationStream.java:447)
etc...

[2]
http://groups.google.com/group/Google-Web-Toolkit/msg/d7eb22f646db8e11

[3]
+ // FIXED
// Called during decode to allow an object to be coalesced
public void rememberDecodedObject(Object o) {
- fAlreadyDecodedObjects.add(o);
+ if (!fAlreadyDecodedObjects.contains(o)) {
+ fAlreadyDecodedObjects.add(o);
+ }
}

[4]
java.lang.IndexOutOfBoundsException: Index: 13, Size: 13
at java.util.ArrayList.RangeCheck(ArrayList.java:546)
at java.util.ArrayList.get(ArrayList.java:321)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.lookupDecodedObject(ServerSerializationStream.java:379)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.prevInstance(ServerSerializationStream.java:363)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserialize(ServerSerializationStream.java:487)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.readObject(ServerSerializationStream.java:446)

Reply all
Reply to author
Forward
0 new messages