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
