Reviewers: bobv,

Description:
This fixes external issue 3969
(http://code.google.com/p/google-web-toolkit/issues/detail?id=3969).
When a class with superclasses was being serialized, the extra info for
the superclass and the subclass were being stored in the same place
using WeakMapping.  The result was that the superclass version was seen
when deserializing the subclass, causing an exception.  By using
different keys, we can associate each portion of the data with the
appropriate phase of the serialization/deserialization process.



Please review this at http://gwt-code-reviews.appspot.com/102817

Affected files:
   user/src/com/google/gwt/user/rebind/rpc/FieldSerializerCreator.java


Index: user/src/com/google/gwt/user/rebind/rpc/FieldSerializerCreator.java
===================================================================
--- user/src/com/google/gwt/user/rebind/rpc/FieldSerializerCreator.java  
(revision 6897)
+++ user/src/com/google/gwt/user/rebind/rpc/FieldSerializerCreator.java  
(working copy)
@@ -35,6 +35,7 @@
  import com.google.gwt.user.rebind.SourceWriter;

  import java.io.PrintWriter;
+import java.io.Serializable;

  /**
   * Creates a field serializer for a class that implements
@@ -272,7 +273,9 @@
       */
      if (serializableClass.isEnhanced()) {
        sourceWriter.println(WEAK_MAPPING_CLASS_NAME + ".set(instance, "
-          + "\"server-enhanced-data\", streamReader.readString());");
+          + "\"server-enhanced-data-"
+          + serializableClass.getQualifiedSourceName()
+          + "\", streamReader.readString());");
      }

      for (JField serializableField : serializableFields) {
@@ -320,7 +323,8 @@

      if (serializableClass.isEnhanced()) {
        sourceWriter.println("streamWriter.writeString((String) "
-          + WEAK_MAPPING_CLASS_NAME + ".get(instance,  
\"server-enhanced-data\"));");
+          + WEAK_MAPPING_CLASS_NAME + ".get(instance,  
\"server-enhanced-data-"
+          + serializableClass.getQualifiedSourceName() + "\"));");
      }

      for (JField serializableField : serializableFields) {


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to