Author: jkf Date: Sun Apr 29 06:00:17 2007 New Revision: 533498 URL: http://svn.apache.org/viewvc?view=rev&rev=533498 Log: Pr: 42259 inspired on optimization suggested by Tom Brus
Modified: ant/core/trunk/CONTRIBUTORS ant/core/trunk/WHATSNEW ant/core/trunk/src/main/org/apache/tools/ant/AntClassLoader.java Modified: ant/core/trunk/CONTRIBUTORS URL: http://svn.apache.org/viewvc/ant/core/trunk/CONTRIBUTORS?view=diff&rev=533498&r1=533497&r2=533498 ============================================================================== Binary files - no diff available. Modified: ant/core/trunk/WHATSNEW URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?view=diff&rev=533498&r1=533497&r2=533498 ============================================================================== --- ant/core/trunk/WHATSNEW (original) +++ ant/core/trunk/WHATSNEW Sun Apr 29 06:00:17 2007 @@ -11,6 +11,9 @@ Fixed bugs: ----------- +* Improvements in AntClassLoader Speed. + Bugzilla report 42259 + * Error in handling of some permissions, most notably the AllPermission on jdk 1.5 Bugzilla report 41776 Modified: ant/core/trunk/src/main/org/apache/tools/ant/AntClassLoader.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/AntClassLoader.java?view=diff&rev=533498&r1=533497&r2=533498 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/AntClassLoader.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/AntClassLoader.java Sun Apr 29 06:00:17 2007 @@ -812,22 +812,22 @@ */ private InputStream getResourceStream(File file, String resourceName) { try { - if (!file.exists()) { - return null; - } - - if (file.isDirectory()) { + ZipFile zipFile = (ZipFile) zipFiles.get(file); + if (zipFile == null && file.isDirectory()) { File resource = new File(file, resourceName); if (resource.exists()) { return new FileInputStream(resource); } } else { - // is the zip file in the cache - ZipFile zipFile = (ZipFile) zipFiles.get(file); if (zipFile == null) { - zipFile = new ZipFile(file); - zipFiles.put(file, zipFile); + if (file.exists()) { + + zipFile = new ZipFile(file); + zipFiles.put(file, zipFile); + } else { + return null; + } //to eliminate a race condition, retrieve the entry //that is in the hash table under that filename zipFile = (ZipFile) zipFiles.get(file); @@ -838,23 +838,24 @@ } } } catch (Exception e) { - log("Ignoring Exception " + e.getClass().getName() - + ": " + e.getMessage() + " reading resource " + resourceName - + " from " + file, Project.MSG_VERBOSE); + log("Ignoring Exception " + e.getClass().getName() + ": " + + e.getMessage() + " reading resource " + resourceName + + " from " + file, Project.MSG_VERBOSE); } return null; } /** - * Tests whether or not the parent classloader should be checked for - * a resource before this one. If the resource matches both the - * "use parent classloader first" and the "use this classloader first" - * lists, the latter takes priority. - * - * @param resourceName The name of the resource to check. - * Must not be <code>null</code>. - * + * Tests whether or not the parent classloader should be checked for a + * resource before this one. If the resource matches both the "use parent + * classloader first" and the "use this classloader first" lists, the latter + * takes priority. + * + * @param resourceName + * The name of the resource to check. Must not be + * <code>null</code>. + * * @return whether or not the parent classloader should be checked for a * resource before this one is. */ @@ -1010,11 +1011,8 @@ */ protected URL getResourceURL(File file, String resourceName) { try { - if (!file.exists()) { - return null; - } - - if (file.isDirectory()) { + ZipFile zipFile = (ZipFile) zipFiles.get(file); + if (zipFile == null && file.isDirectory()) { File resource = new File(file, resourceName); if (resource.exists()) { @@ -1025,12 +1023,14 @@ } } } else { - ZipFile zipFile = (ZipFile) zipFiles.get(file); if (zipFile == null) { - zipFile = new ZipFile(file); - zipFiles.put(file, zipFile); + if (file.exists()) { + zipFile = new ZipFile(file); + zipFiles.put(file, zipFile); + } else { + return null; + } } - ZipEntry entry = zipFile.getEntry(resourceName); if (entry != null) { try { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]