Revision: 10644
Author:   cromwell...@google.com
Date:     Tue Sep 13 11:22:30 2011
Log: When -XdisableClassMetadata is used, Class.getName() can return Class$S<seedNumber> as a class name. However, there are other modes where it can return Class$<obfuscated function name>. In some rare cases, these two could collide of if an obfuscated name of a class ended up as something like 'S123'. This patch changes the WebModeClientOracle to treat Class$S123 differently than 'S123' when deobfuscating class names.

Review at http://gwt-code-reviews.appspot.com/1540804

Review by: rj...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=10644

Modified:
 /trunk/user/src/com/google/gwt/rpc/server/WebModeClientOracle.java

=======================================
--- /trunk/user/src/com/google/gwt/rpc/server/WebModeClientOracle.java Thu Jul 28 15:01:32 2011 +++ /trunk/user/src/com/google/gwt/rpc/server/WebModeClientOracle.java Tue Sep 13 11:22:30 2011
@@ -383,12 +383,14 @@
   @Override
   public String getTypeName(String seedName) {
     // TODO: Decide how to handle the no-metadata case
+    ClassData data = null;
     if (seedName.startsWith("Class$")) {
       seedName = seedName.substring(6);
-    }
-    ClassData data = seedNamesToClassData.get(seedName);
+      data = seedIdsToClassData.get(seedName);
+    }
+
     if (data == null) {
-      data = seedIdsToClassData.get(seedName);
+      data = seedNamesToClassData.get(seedName);
     }
     return data == null ? null : data.typeName;
   }

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

Reply via email to