Semantics of JClassType.isDefaultInstantiable() now actually match the Javadoc. GWTRunnerGenerator now deals better with nested classes. Review by: spoon git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3470 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/typeinfo/JRealClassType.java b/dev/core/src/com/google/gwt/core/ext/typeinfo/JRealClassType.java index 13329a8..955146f 100644 --- a/dev/core/src/com/google/gwt/core/ext/typeinfo/JRealClassType.java +++ b/dev/core/src/com/google/gwt/core/ext/typeinfo/JRealClassType.java
@@ -294,7 +294,13 @@ * <code>false</code> otherwise */ public boolean isDefaultInstantiable() { - if (isInterface() != null) { + if (isInterface() != null || isAbstract()) { + return false; + } + if (isMemberType() && !isStatic()) { + return false; + } + if (isLocalType()) { return false; } if (getConstructors().length == 0) {
diff --git a/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java b/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java index 19a2d59..b4ed8af 100644 --- a/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java +++ b/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java
@@ -43,6 +43,11 @@ private static final String GWT_RUNNER_NAME = GWTRunner.class.getName(); + private static String getPackagePrefix(JClassType classType) { + String name = classType.getPackage().getName(); + return (name.length() == 0) ? name : (name + '.'); + } + /** * Create a new type that satisfies the rebind request. */ @@ -81,7 +86,7 @@ // Get the stub class name, and see if its source file exists. // - String generatedClass = requestedClass.getSimpleSourceName() + "Impl"; + String generatedClass = requestedClass.getName().replace('.', '_') + "Impl"; String packageName = requestedClass.getPackage().getName(); String qualifiedStubClassName = packageName + "." + generatedClass; @@ -89,7 +94,7 @@ generatedClass, GWT_RUNNER_NAME); if (sourceWriter != null) { - JClassType[] allTestTypes = getAllTestTypes(context.getTypeOracle()); + JClassType[] allTestTypes = getAllPossibleTestTypes(context.getTypeOracle()); Set<String> testClasses = getTestTypesForModule(logger, moduleName, allTestTypes); writeCreateNewTestCaseMethod(testClasses, sourceWriter); @@ -99,7 +104,7 @@ return qualifiedStubClassName; } - private JClassType[] getAllTestTypes(TypeOracle typeOracle) { + private JClassType[] getAllPossibleTestTypes(TypeOracle typeOracle) { JClassType gwtTestType = typeOracle.findType(GWTTestCase.class.getName()); if (gwtTestType != null) { return gwtTestType.getSubtypes(); @@ -133,7 +138,8 @@ continue; } - String className = classType.getQualifiedSourceName(); + String className = getPackagePrefix(classType) + + classType.getName().replace('.', '$'); try { Class<?> testClass = Class.forName(className); @@ -150,7 +156,7 @@ e); continue; } - testClasses.add(className); + testClasses.add(classType.getQualifiedSourceName()); } return testClasses; }