Hey,

I've been trying to emulate parts of 3rd party library and stumbled
upon a problem. The library has certain classes with java.lang.Object
references that I wanted to get rid of, and I want the classes to
implement java.io.Serializable. The package structure is like that:

-java/dao/
    -EntityWithObjectReference.java
    -EntityWithObjectReference_CustomFieldSerializer.java
    -ExtendedEntity.java

-resources/
    serialization.gwt.xml
    -substituted.dao/
        EntityWithObjectReference.java

Everything is built using maven, so files end up where they should
be.

Original base entity class I want to emulate:
package dao;
public class EntityWithObjectReference {
    public Object objReference;
    private String text;
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
}

Emulated base entity class (implements serializable, Object ref
removed):

package dao;
import java.io.Serializable;
public class EntityWithObjectReference implements Serializable {
    private String text;
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
}

The class I actually use in both client and server side:

package dao;
import java.io.Serializable;
public class ExtendedEntity extends EntityWithObjectReference
implements Serializable {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

There's also a EntityWithObjectReference_CustomFieldSerializer.java,
which simply ignores the Object reference for now:

package dao;
import com.google.gwt.user.client.rpc.*;
public class EntityWithObjectReference_CustomFieldSerializer {
    public static void serialize(SerializationStreamWriter writer,
EntityWithObjectReference entity) throws SerializationException {
        writer.writeString(entity.getText());
    }
    public static void deserialize(SerializationStreamReader reader,
EntityWithObjectReference entity) throws SerializationException {
        entity.setText( reader.readString());
    }
}

Now, if I just leave the source element empty (it should include all
the java files in the package), everything works fine, serialization
works as expected, and custom serializer is being called.

serialization.gwt.xml:
<module>
    <inherits name="com.google.gwt.core.Core"/>
    <source path="dao">
        <!--include name="ExtendedEntity.java"/-->
        <!--include name="EntityWithObjectReference.java"/-->
    </source>
    <super-source path="substituted"/>
</module>

***When I try to uncomment the two lines*** that explicitly include
the specific java files (I need that because the original library I
want to emulate has a number of additional files in the source
packages that gwt doesn't ever need to know about), there's a problem
- GWT keeps complaining that 'This application is out of date, please
click the refresh button on your browser'. The server response is the
same in both cases:

//OK[3,2,1,["dao.ExtendedEntity/1266011518","xxx","evil entity"],0,5]

But GWT generated javascript expects a different checksum in this
case, and an exception is raised when deserializing the data. Any
ideas why this is happening? Bug, feature, a bit of both? I'd be more
than happy to supply the code to verify this behavior, if anyone can
help me sort this out.

regards,
Andrius J.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to