Reviewers: bobvawter_google.com, Description: Attempting to transfer objects marked as @PersistenceCapable(detachable="true") via RPC currently fails due to mismatched class bytecode between the server and client. This patch detects such objects and manually serializes the extra information required to maintain the identity of the object should it be transferred from aJDO-enabled server to a client and back to the server. The object must be in the Detached state in order for the transfer to be meaningful -- in general, applications sending persistent objects over the wire need to follow the same rules they would in order to successfully serialize and deserialize such objects.
Future work: 1) Deal with classes whose persistence is specified via an xml configuration file rather than via annotations. 2) Detect if an attempt is made to transfer an object that is not in the Detached state. Please review this at http://gwt-code-reviews.appspot.com/47807 Affected files: dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java user/src/com/google/gwt/user/client/rpc/WeakMapping.java user/src/com/google/gwt/user/rebind/rpc/FieldSerializerCreator.java user/src/com/google/gwt/user/server/rpc/impl/Base64Utils.java user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java user/src/com/google/gwt/user/server/rpc/impl/ServerSerializationStreamReader.java user/src/com/google/gwt/user/server/rpc/impl/ServerSerializationStreamWriter.java user/super/com/google/gwt/emul/java/lang/Object.java user/super/com/google/gwt/user/translatable/com/google/gwt/user/client/rpc/WeakMapping.java user/test/com/google/gwt/user/server/rpc/RPCTest.java --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---