Revision: 5858 Author: [email protected] Date: Fri Jul 31 13:28:49 2009 Log: Copy changes from Name review to ease future merge, fix WANT_BINARIES inverted from desired test.
http://code.google.com/p/google-web-toolkit/source/detail?r=5858 Modified: /changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/CompilationState.java /changes/jat/ihm/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java /changes/jat/ihm/dev/core/src/com/google/gwt/dev/util/Name.java /changes/jat/ihm/dev/core/test/com/google/gwt/dev/util/NameTest.java ======================================= --- /changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/CompilationState.java Fri Jul 31 10:13:46 2009 +++ /changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/CompilationState.java Fri Jul 31 13:28:49 2009 @@ -44,7 +44,7 @@ * True if we want to use binaries (.class/etc files). */ private static final boolean WANT_BINARIES = System.getProperty( - "gwt.typeOracle.noUseClasses") != null; + "gwt.typeOracle.noUseClasses") == null; private static Set<CompilationUnit> concatSet(Collection<CompilationUnit> a, Collection<CompilationUnit> b) { ======================================= --- /changes/jat/ihm/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java Wed Jul 29 15:12:22 2009 +++ /changes/jat/ihm/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java Fri Jul 31 13:28:49 2009 @@ -36,7 +36,7 @@ import com.google.gwt.dev.shell.rewrite.HostedModeClassRewriter; import com.google.gwt.dev.shell.rewrite.HostedModeClassRewriter.InstanceMethodOracle; import com.google.gwt.dev.util.JsniRef; -import com.google.gwt.dev.util.Name.DottedName; +import com.google.gwt.dev.util.Name.SourceOrBinaryName; import com.google.gwt.dev.util.Name.InternalName; import com.google.gwt.dev.util.Util; import com.google.gwt.util.tools.Utility; @@ -254,7 +254,7 @@ */ private Class<?> getClassFromBinaryOrSourceName(String className) { // Try the type oracle first - JClassType type = typeOracle.findType(DottedName.toSourceName(className)); + JClassType type = typeOracle.findType(SourceOrBinaryName.toSourceName(className)); if (type != null) { // Use the type oracle to compute the exact binary name String jniSig = type.getJNISignature(); ======================================= --- /changes/jat/ihm/dev/core/src/com/google/gwt/dev/util/Name.java Fri Jul 31 10:13:46 2009 +++ /changes/jat/ihm/dev/core/src/com/google/gwt/dev/util/Name.java Fri Jul 31 13:28:49 2009 @@ -37,10 +37,18 @@ return binaryName.substring(lastDot + 1); } - public static String getInnerClassName(String binaryName, - String innerClassName) { - assert isBinaryName(binaryName); - return binaryName + '$' + innerClassName; + /** + * Construct the fully qualified name of an inner class. + * + * @param outerClassBinaryName binary name of outer class, ie + * {...@code org.test.Foo} + * @param innerClassShortName short name of inner class, ie {...@code Bar} + * @return fully qualified binary name of the inner class + */ + public static String getInnerClassName(String outerClassBinaryName, + String innerClassShortName) { + assert isBinaryName(outerClassBinaryName); + return outerClassBinaryName + '$' + innerClassShortName; } public static String getOuterClassName(String binaryName) { @@ -81,114 +89,137 @@ // don't change a trailing $ to a . return binaryName.replaceAll("[$](\\w)", ".$1"); } - } - - /** - * Represents a Java class name in either source or binary form, for example: - * {...@code org.example.Foo.Bar or org.example.Foo$Bar}. - * - * See {...@link "http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#59892"} - */ - public static class DottedName { - - public static String toSourceName(String dottedName) { - // don't change a trailing $ to a . - return dottedName.replaceAll("[$](\\w)", ".$1"); + + private BinaryName() { } } - /** - * Represents a Java class name in internal form, for example: - * {...@code org/example/Foo$Bar}. - * - * See {...@link "http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#14757"} - */ - public static class InternalName { - - public static String getClassName(String name) { - assert isInternalName(name); - int lastSlash = name.lastIndexOf('/'); - if (lastSlash < 0) { - return name; - } - return name.substring(lastSlash + 1); - } - - public static String getInnerClassName(String internalName, String innerClassName) { - assert isInternalName(internalName); - return internalName + '$' + innerClassName; - } - - /** - * Return the outer class name of an inner class, or null if this is not - * an inner class. + /** + * Represents a Java class name in internal form, for example: + * {...@code org/example/Foo$Bar}. * - * @param name internal name which might be an inner class - * @return an internal name of the enclosing class or null if none + * See {...@link "http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#14757"} */ - public static String getOuterClassName(String name) { - int lastDollar = name.lastIndexOf('$'); - if (lastDollar < 0) { - return null; - } - return name.substring(0, lastDollar); - } - - public static String getPackageName(String name) { - assert isInternalName(name); - int lastSlash = name.lastIndexOf('/'); - if (lastSlash < 0) { - return ""; - } - return name.substring(0, lastSlash); - } - - public static String getShortClassName(String internalName) { - assert isInternalName(internalName); - String className = getClassName(internalName); - int lastDollar = className.lastIndexOf('$', className.length() - 2); - if (lastDollar < 0) { - return className; - } - return className.substring(lastDollar + 1); + public static class InternalName { + + public static String getClassName(String name) { + assert isInternalName(name); + int lastSlash = name.lastIndexOf('/'); + if (lastSlash < 0) { + return name; + } + return name.substring(lastSlash + 1); + } + + /** + * Construct the fully qualified name of an inner class. + * + * @param outerClassInternalName internal name of outer class, + * ie {...@code org.test.Foo} + * @param innerClassShortName short name of inner class, ie {...@code Bar} + * @return fully qualified internal name of the inner class + */ + public static String getInnerClassName(String outerClassInternalName, + String innerClassShortName) { + assert isInternalName(outerClassInternalName); + return outerClassInternalName + '$' + innerClassShortName; + } + + /** + * Return the outer class name of an inner class, or null if this is not + * an inner class. + * + * @param name internal name which might be an inner class + * @return an internal name of the enclosing class or null if none + */ + public static String getOuterClassName(String name) { + int lastDollar = name.lastIndexOf('$'); + if (lastDollar < 0) { + return null; + } + return name.substring(0, lastDollar); + } + + public static String getPackageName(String name) { + assert isInternalName(name); + int lastSlash = name.lastIndexOf('/'); + if (lastSlash < 0) { + return ""; + } + return name.substring(0, lastSlash); + } + + public static String getShortClassName(String internalName) { + assert isInternalName(internalName); + String className = getClassName(internalName); + int lastDollar = className.lastIndexOf('$', className.length() - 2); + if (lastDollar < 0) { + return className; + } + return className.substring(lastDollar + 1); + } + + public static String toBinaryName(String internalName) { + assert isInternalName(internalName); + return internalName.replace('/', '.'); + } + + public static String toSourceName(String internalName) { + assert isInternalName(internalName); + // don't change a trailing $ or slash to a . + return internalName.replaceAll("[$/](\\w)", ".$1"); + } + + private InternalName() { + } } - public static String toBinaryName(String internalName) { - assert isInternalName(internalName); - return internalName.replace('/', '.'); - } - - public static String toSourceName(String internalName) { - assert isInternalName(internalName); - // don't change a trailing $ or slash to a . - return internalName.replaceAll("[$/](\\w)", ".$1"); - } - - private InternalName() { - } - } + /** + * Represents a Java class name in source form, for example: + * {...@code org.example.Foo.Bar}. + * + * See {...@link "http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#20207"} + */ +public static class SourceName { + + /** + * Construct the fully qualified name of an inner class. + * + * @param outerClassSourceName source name of outer class, ie + * {...@code org.test.Foo} + * @param innerClassShortName short name of inner class, ie {...@code Bar} + * @return fully qualified source name of the inner class + */ + public static String getInnerClassName(String outerClassSourceName, + String innerClassShortName) { + assert isSourceName(outerClassSourceName); + return outerClassSourceName + '.' + innerClassShortName; + } + + public static String getShortClassName(String sourceName) { + assert isSourceName(sourceName); + int lastDollar = sourceName.lastIndexOf('.'); + if (lastDollar < 0) { + return sourceName; + } + return sourceName.substring(lastDollar + 1); + } + + private SourceName() { + } +} /** - * Represents a Java class name in source form, for example: - * {...@code org.example.Foo.Bar}. + * Represents a Java class name in either source or binary form, for example: + * {...@code org.example.Foo.Bar or org.example.Foo$Bar}. * - * See {...@link "http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#20207"} + * See {...@link "http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#59892"} */ - public static class SourceName { - - public static String getInnerClassName(String sourceName, - String innerClassName) { - assert isSourceName(sourceName); - return sourceName + '.' + innerClassName; - } - - public static String getShortClassName(String sourceName) { - assert isSourceName(sourceName); - int lastDollar = sourceName.lastIndexOf('.'); - if (lastDollar < 0) { - return sourceName; - } - return sourceName.substring(lastDollar + 1); + public static class SourceOrBinaryName { + + public static String toSourceName(String dottedName) { + // don't change a trailing $ to a . + return dottedName.replaceAll("[$](\\w)", ".$1"); } } @@ -232,7 +263,6 @@ * @param name class name to test */ public static boolean isBinaryName(String name) { - assert isBinaryName(name); return name == null || !name.contains("/"); } @@ -261,4 +291,18 @@ int dollar = name.indexOf('$'); return !name.contains("/") && (dollar < 0 || dollar == name.length() - 1); } -} + + /** + * @return true if name could be a valid source or binary name. + * + * Note that many invalid names might pass this test. + * + * @param name class name to test + */ + public static boolean isSourceOrBinaryName(String name) { + return name == null || !name.contains("/"); + } + + private Name() { + } +} ======================================= --- /changes/jat/ihm/dev/core/test/com/google/gwt/dev/util/NameTest.java Fri Jul 31 10:13:46 2009 +++ /changes/jat/ihm/dev/core/test/com/google/gwt/dev/util/NameTest.java Fri Jul 31 13:28:49 2009 @@ -16,7 +16,7 @@ package com.google.gwt.dev.util; import com.google.gwt.dev.util.Name.BinaryName; -import com.google.gwt.dev.util.Name.DottedName; +import com.google.gwt.dev.util.Name.SourceOrBinaryName; import com.google.gwt.dev.util.Name.InternalName; import com.google.gwt.dev.util.Name.SourceName; @@ -60,15 +60,15 @@ assertEquals("Bar", BinaryName.getShortClassName("org.test.Foo$Bar")); } - public void testDottedName() { + public void testSourceOrBinaryName() { assertEquals("org.test.Foo.Bar", - DottedName.toSourceName("org.test.Foo.Bar")); + SourceOrBinaryName.toSourceName("org.test.Foo.Bar")); assertEquals("org.test.Foo.Bar", - DottedName.toSourceName("org.test.Foo$Bar")); + SourceOrBinaryName.toSourceName("org.test.Foo$Bar")); assertEquals("org.test.Foo.Bar$", - DottedName.toSourceName("org.test.Foo.Bar$")); + SourceOrBinaryName.toSourceName("org.test.Foo.Bar$")); assertEquals("org.test.Foo.Bar$", - DottedName.toSourceName("org.test.Foo$Bar$")); + SourceOrBinaryName.toSourceName("org.test.Foo$Bar$")); } public void testGetBinaryNameForClass() { @@ -94,11 +94,11 @@ InternalName.toSourceName("org/test/Foo$Bar$Baz")); assertEquals("org.test.Foo.Bar.Baz$", InternalName.toSourceName("org/test/Foo$Bar$Baz$")); - assertEquals("org.test.Foo", InternalName.toBinaryName("org.test.Foo")); + assertEquals("org.test.Foo", InternalName.toBinaryName("org/test/Foo")); assertEquals("org.test.Foo$Bar", - InternalName.toBinaryName("org.test.Foo$Bar")); + InternalName.toBinaryName("org/test/Foo$Bar")); assertEquals("org.test.Foo$Bar$Baz", - InternalName.toBinaryName("org.test.Foo$Bar$Baz")); + InternalName.toBinaryName("org/test/Foo$Bar$Baz")); assertEquals("org.test.Foo$Bar$Baz$", InternalName.toBinaryName("org/test/Foo$Bar$Baz$")); assertEquals("org.test.Foo$Bar$Baz$1", @@ -163,6 +163,22 @@ assertTrue(Name.isSourceName("org.test.Foo.Bar.Baz")); assertTrue(Name.isSourceName("org.test.Foo.Bar.Baz$")); } + + public void testIsSourceOrBinaryName() { + assertTrue(Name.isSourceOrBinaryName("org.test.Foo")); + assertTrue(Name.isSourceOrBinaryName("org.test.Foo$Bar")); + assertTrue(Name.isSourceOrBinaryName("org.test.Foo$Bar$Baz")); + assertTrue(Name.isSourceOrBinaryName("org.test.Foo$Bar$Baz$")); + assertTrue(Name.isSourceOrBinaryName("org.test.Foo$Bar$Baz$1")); + assertFalse(Name.isSourceOrBinaryName("org/test/Foo")); + assertFalse(Name.isSourceOrBinaryName("org/test/Foo$Bar")); + assertFalse(Name.isSourceOrBinaryName("org/test/Foo$Bar$Baz")); + assertFalse(Name.isSourceOrBinaryName("org/test/Foo$Bar$Baz$")); + assertFalse(Name.isSourceOrBinaryName("org/test/Foo$Bar$Baz$1")); + assertTrue(Name.isSourceOrBinaryName("org.test.Foo.Bar")); + assertTrue(Name.isSourceOrBinaryName("org.test.Foo.Bar.Baz")); + assertTrue(Name.isSourceOrBinaryName("org.test.Foo.Bar.Baz$")); + } public void testSourceName() { assertEquals("org.test.Foo.Bar", --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
