Revision: 6320 Author: [email protected] Date: Wed Oct 7 18:58:00 2009 Log: The old uses of getCanonicalName() blithely assumed that the symlink-resolved name was, in fact, still the same as the unresolved name. Oops.
Also tweaked use of List.toArray by giving it an correctly-sized argument (avoiding the need to allocate a zero-size array, and then the real one), and to remove the superfluous <copy> in ant. http://code.google.com/p/google-web-toolkit/source/detail?r=6320 Modified: /trunk/build.xml /trunk/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java ======================================= --- /trunk/build.xml Wed Aug 5 12:55:36 2009 +++ /trunk/build.xml Wed Oct 7 18:58:00 2009 @@ -171,10 +171,6 @@ <target name="apicheck-nobuild" description="[action] Checks API compatibility to prior GWT revision"> - <copy tofile="${gwt.build.out}/userApi.conf" filtering="false" - file="${gwt.apicheck.config}" - overwrite="true"> - </copy> <java failonerror="true" fork="true" classname="com.google.gwt.tools.apichecker.ApiCompatibilityChecker"> <jvmarg line="-Xmx512m" /> @@ -188,7 +184,7 @@ <arg value="-refJar"/> <arg path="${gwt.root}/tools/api-checker/reference/gwt-dev-modified.jar:${gwt.root}/tools/api-checker/reference/gwt-user-modified.jar"/> <arg value="-configFile"/> - <arg file="${gwt.build.out}/userApi.conf"/> + <arg file="${gwt.apicheck.config}"/> <arg value="-logLevel"/> <arg value="ERROR"/> </java> ======================================= --- /trunk/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java Mon Jul 13 05:30:55 2009 +++ /trunk/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java Wed Oct 7 18:58:00 2009 @@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -53,8 +53,8 @@ /** * {...@link ApiCompatibilityChecker} Main class to check if the new API is * compatible with the existing API. - * - * + * + * * <p> * To compute API diffs, follow these 2 steps: * <ol> @@ -62,14 +62,14 @@ * <li>call getApiDiff on the {...@code ApiDiffGenerator} * </ol> * </p> - * + * * <p> * An {...@code ApiContainer} object is a list of {...@link ApiPackage} objects. * {...@code ApiPackage} objects themselves are list of {...@link ApiClass} objects. * {...@code ApiClass} objects contain list of {...@code ApiConstructor}, {...@code * ApiMethod}, and {...@code JField} objects. * </p> - * + * * <p> * Each {...@code ApiDiffGenerator} object computes the list of intersecting and * missing {...@link ApiPackageDiffGenerator} objects. Each {...@code @@ -80,12 +80,12 @@ * for constructors, {...@link ApiMethod} for methods, and {...@link ApiField} for * fields. * </p> - * + * * <p> * For each intersecting API member, a list of {...@link ApiChange} objects is * stored. Each ApiChange object encodes a specific {...@code ApiChange} like * adding the 'final' keyword to the API member. - * + * */ public class ApiCompatibilityChecker extends ToolBase { @@ -212,7 +212,7 @@ // initialize the ant scanner excludeScanner = new ZipScanner(); List<String> list = new ArrayList<String>(excludedPaths); - excludeScanner.setIncludes(list.toArray(new String[0])); + excludeScanner.setIncludes(list.toArray(new String[list.size()])); excludeScanner.addDefaultExcludes(); excludeScanner.setCaseSensitive(true); excludeScanner.init(); @@ -284,10 +284,12 @@ private boolean isIncluded(String fileName) { if (excludeScanner.match(fileName)) { + logger.log(TreeLogger.SPAM, fileName + " is excluded"); return false; } for (String includedPath : includedPaths) { if (fileName.startsWith(includedPath)) { + logger.log(TreeLogger.SPAM, fileName + " is not excluded, and is included by " + includedPath); return true; } } @@ -319,9 +321,9 @@ String fullExcludedPaths[] = new String[excludedPathsAsString.size()]; int count = 0; - String dirRootCanonicalPath = getFileFromName("dirRoot: ", dirRoot).getCanonicalPath(); + String dirRootAbsolutePath = getFileFromName("dirRoot: ", dirRoot).getAbsolutePath(); for (String excludedPath : excludedPathsAsString) { - fullExcludedPaths[count++] = dirRootCanonicalPath + "/" + excludedPath; + fullExcludedPaths[count++] = dirRootAbsolutePath + "/" + excludedPath; } // initialize the ant scanner @@ -372,7 +374,7 @@ if (file.getName().startsWith(".") || file.getName().equals("CVS")) { continue; } - if (isExcludedFile(file.getCanonicalPath())) { + if (isExcludedFile(file.getAbsolutePath())) { // do not process the subtree logger.log(TreeLogger.DEBUG, "not traversing " + file.toURI().toURL(), null); @@ -904,7 +906,7 @@ * "java.util.ArrayList::size() MISSING". The {...@code ApiElement} is * represented as the string obtained by invoking the getRelativeSignature() * method on {...@link ApiElement}. - * + * */ private Set<String> readWhiteListFromFile(FileReader fr) throws IOException { Set<String> hashSet = new HashSet<String>(); --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
