Thank you for your advices. I think I will linearize the tree as a List by replacing the strong reference link between an Option and its childs to a String meaning the id (the id is an attribute) of the child options.
Then, I will serialize the option list to a json String with flexjson and send it to the client over GWT-RPC. On the client, I think that the json String deserialization will be done quickly ; I've seen on StreamReader source code that the String deserialisation does not lead to a lot of compute time because the HTTP response is String itself. Then, I will deserialize this json String with the eval() method, and I will try to map it to my Option type with a JavaScript Overlay Types. And, if there is a need to split deserialization into multiple deferred command, I will split my json String into multiple json string before evaluating this with eval(), and do the eval() on each sub-sequence json string in a deferred command. Even if this split is not simple... What do you think about this solution ? 2010/12/20 David Chandler <[email protected]> > Following up on George's post, here's the DeRPC doc. You can find a > little additional info by searching for "DeRPC" on the public issue > tracker. DeRPC was created to help with large object graph > serialization; however, DeRPC (NOT GWT-RPC) will likely be deprecated > eventually in favor of RequestFactory. > > > http://code.google.com/webtoolkit/doc/latest/DevGuideServerCommunication.html#DevGuideDeRPC > http://code.google.com/p/google-web-toolkit/issues/list > > /dmc > > On Sun, Dec 19, 2010 at 3:43 AM, Damien Picard <[email protected]> > wrote: > > Hi, > > > > In a few words, I've got a problem with big object deserialization after > an > > RPC call. > > On Internet Explorer, the browser ask me to interrupt the script because > the > > deserialization process is too long. > > > > In fact, my RPC service returns a deep recursive tree, and some other > data, > > where the Item is called Option : > > > > The generated FieldSerializer looks like : > > > > public static void > > deserialize(com.google.gwt.user.client.rpc.SerializationStreamReader > > streamReader, Option instance) throws > > com.google.gwt.user.client.rpc.SerializationException{ > > //The childs of this Option node, defining the tree > > setChildren(instance, (java.util.List) streamReader.readObject()); > > //Some other atomic data > > (...) > > > > } > > > > In my mind, the invocation of setChildren() involves that the childs > Options > > are deserialized too. And, because of my tree is too deep, this > > deserialization process leeds to have a "Would you like to interrupt the > > script ?" in IE6/7. > > > > I think I could resolve this problem by adding a deferred command in this > > process : > > > > public static void > > deserialize(com.google.gwt.user.client.rpc.SerializationStreamReader > > streamReader, Option instance) throws > > com.google.gwt.user.client.rpc.SerializationException{ > > //The childs of this Option node, defining the tree > > Command c = new Command(){ > > public void execute(){ > > setChildren(instance, (java.util.List) > > streamReader.readObject()); > > } > > } > > DeferredCommand.addPause(); > > DeferredCommand.addCommand(c); > > //Some other atomic data > > (...) > > > > } > > > > But, to do that, I have to modify the generator of this serializer, and > i've > > not found where I can do that. So my questions are : > > > > Is it a good idea ? > > How can I modify /implement my own serializer generator for this tree ? > > > > P.S. : Furthermore, I will have to deal with asynchronism because of my > > deserialize method will returns before my tree will be totaly > deserialized ; > > but I will work on this in a second step. > > > > Thank you. > > > > -- > > Damien Picard > > Axeiya Services : http://axeiya.com/ > > gwt-ckeditor : http://code.google.com/p/gwt-ckeditor/ > > Mon livre sur GWT : http://axeiya.com/index.php/ouvrage-gwt.html > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Google Web Toolkit" group. > > To post to this group, send email to [email protected] > . > > To unsubscribe from this group, send email to > > [email protected]<google-web-toolkit%[email protected]> > . > > For more options, visit this group at > > http://groups.google.com/group/google-web-toolkit?hl=en. > > > > > > -- > David Chandler > Developer Programs Engineer, Google Web Toolkit > http://googlewebtoolkit.blogspot.com/ > > -- > You received this message because you are subscribed to the Google Groups > "Google Web Toolkit" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<google-web-toolkit%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/google-web-toolkit?hl=en. > > -- Damien Picard Axeiya Services : http://axeiya.com/ gwt-ckeditor : http://code.google.com/p/gwt-ckeditor/ Mon livre sur GWT : http://axeiya.com/index.php/ouvrage-gwt.html -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
