I have encountered an annoying issue with the GWT-Compiler. It seems
that there is some kind of lazy loading of classes which have
'IsSerializable' implemented.
I have a Model-Class - implementing 'IsSerializable' - like this:

-----
package com.xxx.client.model;

import com.google.gwt.user.client.rpc.IsSerializable;

public class MyLazyTestModel implements IsSerializable {

  private String test = "test";

  private static final long serialVersionUID = 2249512603071211875L;

  public MyLazyTestModel(String str) {
    test = str;
  }

  public MyLazyTestModel() {
  }

  public String getTest() {
    return test;
  }
}
-----

When i am now in the ServiceImpl-Class, and i want to add
'MyLazyTestModel ' to a Map included in an other Model, i get errors
like this:

-----
Caused by: com.google.gwt.user.client.rpc.SerializationException: Type
'com.xxx.client.model.MyTestModel' was not included in the set of
types which can be serialized by this SerializationPolicy or its Class
object could not be loaded. For security purposes, this type will not
be serialized.
        at
com.google.gwt.user.server.rpc.impl.StandardSerializationPolicy.validateSerialize
(StandardSerializationPolicy.java:83)
        at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize
(ServerSerializationStreamWriter.java:591)
        at
com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject
(AbstractSerializationStreamWriter.java:129)
        at com.extjs.gxt.ui.client.data.RpcMap_CustomFieldSerializer.serialize
(RpcMap_CustomFieldSerializer.java:37)
        ... 72 more
----

---
SCHWERWIEGEND: dispatcher: ERROR: The serialization policy file '/
myportal/68EC899B83CE3F6734F2C89A84927232.gwt.rpc' was not found;
did you forget to include it in this deployment?

SCHWERWIEGEND: dispatcher: WARNING: Failed to get the
SerializationPolicy '68EC899B83CE3F6734F2C89A84927232' for
module 'http://localhost/myportal/'; a legacy, 1.3.3 compatible,
serialization policy will be used.
You may experience SerializationExceptions as a result.
---


Ok, when i add a dummy RPC with MyLazyTestModel as the returntype, the
application is working.

-----
void getMyLazyTestModel(AsyncCallback<MyLazyTestModel> async);
-----


So i think the compiler is throwing away classes which implements
'IsSerializable' when they are not really visible for it. Storing
MyLazyTestModel into a Map makes it 'invisible' to the compiler
because the compiler can (or is) not analyze the map correctly. In my
opinion this is wrong, the compiler should add ALL files inside the
Client-Package into the SerializationPolicy, and not only these who
are visible while they are used.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to