Fixed 2 issues with the api-checker. (1) Api checker now propagates the errors that TypeOracle encounters. (2) Only the translatable version of LinkedHashMap_CustomFieldSerializer is now checked for api compatibility. Patch by: amitmanjhi Review by: spoon (desk review) git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4269 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/tools/api-checker/config/gwt15_16userApi.conf b/tools/api-checker/config/gwt15_16userApi.conf index 512204b..e8da6bf 100644 --- a/tools/api-checker/config/gwt15_16userApi.conf +++ b/tools/api-checker/config/gwt15_16userApi.conf
@@ -1,18 +1,19 @@ #existing API +dirRoot_old @OLDROOT@/ name_old gwt15userApi #sourceFiles and excludedFiles are specified as colon-separated list of files -sourceFiles_old @OLDROOT@/dev/core/super:@OLDROOT@/user/super:@OLDROOT@/user/src -excludedFiles_old @OLDROOT@/user/src/com/google/gwt/benchmarks:@OLDROOT@/user/src/com/google/gwt/junit:@OLDROOT@/user/src/com/google/gwt/i18n/rebind:@OLDROOT@/user/src/com/google/gwt/i18n/tools:@OLDROOT@/user/src/com/google/gwt/json:@OLDROOT@/user/src/com/google/gwt/user/rebind:@OLDROOT@/user/src/com/google/gwt/user/server:@OLDROOT@/user/src/com/google/gwt/user/tools:@OLDROOT@/user/super/com/google/gwt/benchmarks:@OLDROOT@/user/super/com/google/gwt/junit +sourceFiles_old dev/core/super:user/src:user/super +excludedFiles_old user/src/com/google/gwt/benchmarks:user/src/com/google/gwt/i18n/rebind:user/src/com/google/gwt/i18n/tools:user/src/com/google/gwt/json:user/src/com/google/gwt/junit:user/src/com/google/gwt/user/client/rpc/core/java/util/LinkedHashMap_CustomFieldSerializer.java:user/src/com/google/gwt/user/rebind:user/src/com/google/gwt/user/server:user/src/com/google/gwt/user/tools:user/super/com/google/gwt/benchmarks:user/super/com/google/gwt/junit ############################################## #new Api +dirRoot_new ./ name_new gwt16userApi #sourceFiles and excludedFiles are specified as colon-separated list of files -sourceFiles_new ./dev/core/super:./user/super:./user/src -#:dev/core/src -excludedFiles_new ./user/src/com/google/gwt/benchmarks:./user/src/com/google/gwt/junit:./user/src/com/google/gwt/i18n/rebind:./user/src/com/google/gwt/i18n/tools:./user/src/com/google/gwt/json:./user/src/com/google/gwt/user/rebind:./user/src/com/google/gwt/user/server:./user/src/com/google/gwt/user/tools:./user/super/com/google/gwt/benchmarks:./user/super/com/google/gwt/junit +sourceFiles_new dev/core/super:user/src:user/super +excludedFiles_new user/src/com/google/gwt/benchmarks:user/src/com/google/gwt/i18n/rebind:user/src/com/google/gwt/i18n/tools:user/src/com/google/gwt/json:user/src/com/google/gwt/junit:user/src/com/google/gwt/user/client/rpc/core/java/util/LinkedHashMap_CustomFieldSerializer.java:user/src/com/google/gwt/user/rebind:user/src/com/google/gwt/user/server:user/src/com/google/gwt/user/tools:user/super/com/google/gwt/benchmarks:user/super/com/google/gwt/junit ############################################## #excluded packages
diff --git a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiContainer.java b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiContainer.java index 84a5235..8aeb887 100644 --- a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiContainer.java +++ b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiContainer.java
@@ -24,6 +24,7 @@ import com.google.gwt.core.ext.typeinfo.NotFoundException; import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.dev.javac.CompilationUnit; +import com.google.gwt.dev.javac.CompilationUnitInvalidator; import com.google.gwt.dev.javac.JdtCompiler; import com.google.gwt.dev.javac.TypeOracleMediator; import com.google.gwt.dev.javac.impl.FileCompilationUnit; @@ -171,11 +172,11 @@ */ public String getApiAsString() { StringBuffer sb = new StringBuffer(); - sb.append("Api: " + name + "\n\n"); + sb.append("Api: " + name + ", size = " + apiPackages.size() + "\n\n"); List<ApiPackage> sortedApiPackages = new ArrayList<ApiPackage>( apiPackages.values()); Collections.sort(sortedApiPackages); - for (ApiPackage apiPackage : apiPackages.values()) { + for (ApiPackage apiPackage : sortedApiPackages) { sb.append(apiPackage.getApiAsString()); } return sb.toString(); @@ -204,7 +205,7 @@ String getName() { return name; } - + boolean isApiClass(JClassType classType) { Boolean ret = apiClassCache.get(classType); if (ret != null) { @@ -269,8 +270,8 @@ if (file.getName().endsWith("java")) { pkgName = extractPackageNameFromFile(file); if (pkgName == null) { - logger.log(TreeLogger.WARN, "Not adding file = " - + file.toString() + ", because packageName = null", null); + logger.log(TreeLogger.WARN, "Not adding file = " + file.toString() + + ", because packageName = null", null); } else { logger.log(TreeLogger.DEBUG, "adding pkgName = " + pkgName + ", file = " + file.toString(), null); @@ -332,12 +333,18 @@ private TypeOracle createTypeOracleFromSources() throws NotFoundException, IOException, UnableToCompleteException { numFilesCount = 0; - TypeOracleMediator mediator = new TypeOracleMediator(); Set<CompilationUnit> units = new HashSet<CompilationUnit>(); for (File tempFile : sourceTrees) { addCompilationUnitsInPath(units, tempFile); } JdtCompiler.compile(units); + if (CompilationUnitInvalidator.invalidateUnitsWithErrors(logger, units)) { + logger.log(TreeLogger.ERROR, "Unable to build typeOracle for " + + getName()); + throw new UnableToCompleteException(); + } + + TypeOracleMediator mediator = new TypeOracleMediator(); mediator.refresh(logger, units); logger.log(TreeLogger.INFO, "API " + name + ", Finished with building typeOracle, added " + numFilesCount
diff --git a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiPackage.java b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiPackage.java index b67dbc5..99309c5 100644 --- a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiPackage.java +++ b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiPackage.java
@@ -79,7 +79,7 @@ String getApiAsString() { StringBuffer sb = new StringBuffer(); - sb.append(name + "\n"); + sb.append(name + ", size = " + apiClasses.size() + "\n"); ArrayList<ApiClass> apiClassesList = new ArrayList<ApiClass>( apiClasses.values()); Collections.sort(apiClassesList);