Various fixes for deRPC. - If an array type is artificially rescued, it should rescue its component type. - Don't generate bad RPC proxy code if the legacy type-elision flag is set. - Correctly handle CustomFieldSerializers that write null Strings. Patch by: bobv Review by: jgw (desk) git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6323 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/ArtificialRescueChecker.java b/dev/core/src/com/google/gwt/dev/javac/ArtificialRescueChecker.java index edaaae1..c1ffc49 100644 --- a/dev/core/src/com/google/gwt/dev/javac/ArtificialRescueChecker.java +++ b/dev/core/src/com/google/gwt/dev/javac/ArtificialRescueChecker.java
@@ -103,6 +103,15 @@ referencedTypes = Lists.add(referencedTypes, className); } + boolean isArray = false; + while (className.endsWith("[]")) { + className = className.substring(0, className.length() - 2); + if (collectTypes) { + referencedTypes = Lists.add(referencedTypes, className); + } + isArray = true; + } + if (!reportErrors) { // Nothing else to do return; @@ -110,11 +119,6 @@ // Goal (2) // Strip off any array-like extensions and just find base type - boolean isArray = false; - while (className.endsWith("[]")) { - className = className.substring(0, className.length() - 2); - isArray = true; - } // Fix JSNI primitive type names to something JDT will understand if (isArray && className.length() == 1) {
diff --git a/user/src/com/google/gwt/rpc/rebind/RpcProxyCreator.java b/user/src/com/google/gwt/rpc/rebind/RpcProxyCreator.java index 5d277be..65dd36d 100644 --- a/user/src/com/google/gwt/rpc/rebind/RpcProxyCreator.java +++ b/user/src/com/google/gwt/rpc/rebind/RpcProxyCreator.java
@@ -113,6 +113,11 @@ } @Override + protected void generateStreamWriterOverride(SourceWriter srcWriter) { + // Intentional no-op. Called if elideTypeNames is on, which is ignored + } + + @Override protected void generateTypeHandlers(TreeLogger logger, GeneratorContext ctx, SerializableTypeOracle serializationSto, SerializableTypeOracle deserializationSto)
diff --git a/user/src/com/google/gwt/rpc/server/CommandServerSerializationStreamReader.java b/user/src/com/google/gwt/rpc/server/CommandServerSerializationStreamReader.java index 231e0e0..30dc6e0 100644 --- a/user/src/com/google/gwt/rpc/server/CommandServerSerializationStreamReader.java +++ b/user/src/com/google/gwt/rpc/server/CommandServerSerializationStreamReader.java
@@ -314,7 +314,7 @@ } public String readString() throws SerializationException { - return readNextCommand(StringValueCommand.class).getValue(); + return (String) readObject(); } private <T extends ValueCommand> T readNextCommand(Class<T> clazz)