BUG - Doubly Linked List

6 views
Skip to first unread message

JJ

unread,
Jul 31, 2006, 4:02:58 PM7/31/06
to Google Web Toolkit
I ran into a deserialization bug (on server side of RPC call) with
doubly linked lists where the depth of the list is greater than 2 (or
>1 if you're 0-based counting). Here is my setup:

class ObjectTree {
ObjectTree parent;
/** @gwt.typeArgs <...ObjectTree> *
ArrayList children;
}

These scenarios work:
ObjectTree with no children.
ObjectTree with children who do not have children.
ObjectTree with children who have children whose parent==null.

This definitely fails:
ObjectTree with children (parent != null) who have children (parent !=
null).

For my implementation I was able to easily solve the problem by setting
the parent member to transient.

Below is a partial Exception.

Thanks,
JJ

-------
<Jul 31, 2006 3:59:21 PM EDT> <Error> <HTTP> <BEA-101046>
<[ServletContext(id=46
24432,name=portalWeb,context-path=/portalWeb)] Exception while
dispatching incom
ing RPC call
com.google.gwt.user.client.rpc.SerializationException:
java.lang.reflect.Invocat
ionTargetException
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserizeWith
CustomSerializer(ServerSerializationStream.java:589)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserialize(
ServerSerializationStream.java:512)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.readObject(S
erverSerializationStream.java:443)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeV
alue(ServerSerializationStream.java:411)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeC
lass(ServerSerializationStream.java:468)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeC
lass(ServerSerializationStream.java:478)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserialize(
ServerSerializationStream.java:519)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.readObject(S
erverSerializationStream.java:443)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeV
alue(ServerSerializationStream.java:411)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(Remot
eServiceServlet.java:290)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServ
iceServlet.java:186)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1006)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:419)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:315)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:6722)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3764)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2644)
at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserizeWith
CustomSerializer(ServerSerializationStream.java:572)
... 22 more
Caused by: com.google.gwt.user.client.rpc.SerializationException:
java.lang.refl
ect.InvocationTargetException
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserizeWith
CustomSerializer(ServerSerializationStream.java:589)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserialize(
ServerSerializationStream.java:512)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.readObject(S
erverSerializationStream.java:443)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeV
alue(ServerSerializationStream.java:411)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeC
lass(ServerSerializationStream.java:468)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeC
lass(ServerSerializationStream.java:478)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserialize(
ServerSerializationStream.java:519)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.readObject(S
erverSerializationStream.java:443)
at
com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSe
rializer.deserialize(ArrayList_CustomFieldSerializer.java:49)
... 27 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserizeWith
CustomSerializer(ServerSerializationStream.java:572)
... 35 more
Caused by: java.lang.IllegalArgumentException
at
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccess
orImpl.java:63)
at java.lang.reflect.Field.set(Field.java:519)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeC
lass(ServerSerializationStream.java:470)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserializeC
lass(ServerSerializationStream.java:478)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.deserialize(
ServerSerializationStream.java:519)
at
com.google.gwt.user.server.rpc.ServerSerializationStream.readObject(S
erverSerializationStream.java:443)
at
com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSe
rializer.deserialize(ArrayList_CustomFieldSerializer.java:49)
... 40 more
>

Scott Blum

unread,
Aug 1, 2006, 1:48:11 AM8/1/06
to Google Web Toolkit
Hi JJ,

I'm not sure I completely followed the description... do you by chance
have sample code that can setup the problematic ObjectTree state to
reproduce the problem? I'd like to try it out and make sure it won't
be a problem for the next release. I'd just need the client side code.

Thanks!
Scott

Reply all
Reply to author
Forward
0 new messages