peterreilly 2004/01/19 08:48:00
Modified: src/main/org/apache/tools/ant/loader AntClassLoader2.java
Log:
use a static map of jarfile->manifest classpath entry
Revision Changes Path
1.8 +41 -26
ant/src/main/org/apache/tools/ant/loader/AntClassLoader2.java
Index: AntClassLoader2.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/loader/AntClassLoader2.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- AntClassLoader2.java 17 Jul 2003 10:36:27 -0000 1.7
+++ AntClassLoader2.java 19 Jan 2004 16:48:00 -0000 1.8
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2003 The Apache Software Foundation. All rights
+ * Copyright (c) 2003-2004 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -68,6 +68,9 @@
import java.net.URL;
import java.net.MalformedURLException;
import java.util.zip.ZipEntry;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import java.util.StringTokenizer;
import org.apache.tools.ant.util.FileUtils;
@@ -81,6 +84,9 @@
/** Instance of a utility class to use for file operations. */
private FileUtils fileUtils;
+ /** Static map of jar file/time to manifiest class-path entries */
+ private static Map pathMap = Collections.synchronizedMap(new HashMap());
+
/**
* Constructor
*/
@@ -272,36 +278,45 @@
return;
}
- String classpath = null;
- ZipFile jarFile = null;
- InputStream manifestStream = null;
- try {
- jarFile = new ZipFile(pathComponent);
- manifestStream
- = jarFile.getInputStream(new
ZipEntry("META-INF/MANIFEST.MF"));
-
- if (manifestStream == null) {
- return;
- }
- Reader manifestReader
- = new InputStreamReader(manifestStream, "UTF-8");
- org.apache.tools.ant.taskdefs.Manifest manifest
- = new org.apache.tools.ant.taskdefs.Manifest(manifestReader);
- classpath
- = manifest.getMainSection().getAttributeValue("Class-Path");
+ String absPathPlusTimeAndLength =
+ pathComponent.getAbsolutePath() + pathComponent.lastModified() +
"-"
+ + pathComponent.length();
+ String classpath = (String) pathMap.get(absPathPlusTimeAndLength);
+ if (classpath == null) {
+ ZipFile jarFile = null;
+ InputStream manifestStream = null;
+ try {
+ jarFile = new ZipFile(pathComponent);
+ manifestStream
+ = jarFile.getInputStream(new
ZipEntry("META-INF/MANIFEST.MF"));
+
+ if (manifestStream == null) {
+ return;
+ }
+ Reader manifestReader
+ = new InputStreamReader(manifestStream, "UTF-8");
+ org.apache.tools.ant.taskdefs.Manifest manifest
+ = new
org.apache.tools.ant.taskdefs.Manifest(manifestReader);
+ classpath
+ =
manifest.getMainSection().getAttributeValue("Class-Path");
- } catch (org.apache.tools.ant.taskdefs.ManifestException e) {
- // ignore
- } finally {
- if (manifestStream != null) {
- manifestStream.close();
+ } catch (org.apache.tools.ant.taskdefs.ManifestException e) {
+ // ignore
+ } finally {
+ if (manifestStream != null) {
+ manifestStream.close();
+ }
+ if (jarFile != null) {
+ jarFile.close();
+ }
}
- if (jarFile != null) {
- jarFile.close();
+ if (classpath == null) {
+ classpath = "";
}
+ pathMap.put(absPathPlusTimeAndLength, classpath);
}
- if (classpath != null) {
+ if (!"".equals(classpath)) {
URL baseURL = fileUtils.getFileURL(pathComponent);
StringTokenizer st = new StringTokenizer(classpath);
while (st.hasMoreTokens()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]