bodewig 2003/01/27 04:55:14
Modified: src/main/org/apache/tools/ant/types ZipScanner.java
Log:
speed ZipScanner up by using a hashtable.
Submitted by: Antoine Levy-Lambert <levylambert at tiscali dash dsl dot de>
Revision Changes Path
1.11 +44 -44
jakarta-ant/src/main/org/apache/tools/ant/types/ZipScanner.java
Index: ZipScanner.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/types/ZipScanner.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ZipScanner.java 24 Jan 2003 13:45:49 -0000 1.10
+++ ZipScanner.java 27 Jan 2003 12:55:13 -0000 1.11
@@ -58,6 +58,8 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Vector;
+import java.util.Hashtable;
+import java.util.Enumeration;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
@@ -93,7 +95,7 @@
/**
* record list of all zip entries
*/
- private Vector myentries;
+ private Hashtable myentries;
/**
* Sets the srcFile for scanning. This is the jar or zip file that
@@ -128,8 +130,8 @@
Vector myvector = new Vector();
// first check if the archive needs to be scanned again
scanme();
- for (int counter = 0; counter < myentries.size(); counter++) {
- Resource myresource= (Resource) myentries.elementAt(counter);
+ for (Enumeration e = myentries.elements() ; e.hasMoreElements() ;) {
+ Resource myresource= (Resource) e.nextElement();
if (!myresource.isDirectory() && match(myresource.getName())) {
myvector.addElement(myresource.getName());
}
@@ -151,8 +153,8 @@
Vector myvector=new Vector();
// first check if the archive needs to be scanned again
scanme();
- for (int counter = 0; counter < myentries.size(); counter++) {
- Resource myresource = (Resource) myentries.elementAt(counter);
+ for (Enumeration e = myentries.elements() ; e.hasMoreElements() ;) {
+ Resource myresource= (Resource) e.nextElement();
if (myresource.isDirectory() && match(myresource.getName())) {
myvector.addElement(myresource.getName());
}
@@ -206,15 +208,15 @@
Vector myvector = new Vector();
// first check if the archive needs to be scanned again
scanme();
- for (int counter = 0; counter < myentries.size(); counter++) {
- Resource myresource = (Resource) myentries.elementAt(counter);
- if (!myresource.isDirectory() && match(myresource.getName())) {
- myvector.addElement(myresource.clone());
- }
- }
- Resource[] resources = new Resource[myvector.size()];
- myvector.copyInto(resources);
- return resources;
+ for (Enumeration e = myentries.elements() ; e.hasMoreElements() ;) {
+ Resource myresource= (Resource) e.nextElement();
+ if (!myresource.isDirectory() && match(myresource.getName())) {
+ myvector.addElement(myresource.clone());
+ }
+ }
+ Resource[] resources = new Resource[myvector.size()];
+ myvector.copyInto(resources);
+ return resources;
}
/**
@@ -230,17 +232,17 @@
*/
public Resource[] getIncludedDirectoryResources() {
Vector myvector = new Vector();
- // first check if the archive needs to be scanned again
- scanme();
- for (int counter = 0; counter < myentries.size(); counter++) {
- Resource myresource = (Resource) myentries.elementAt(counter);
- if (myresource.isDirectory() && match(myresource.getName())) {
- myvector.addElement(myresource.clone());
- }
- }
- Resource[] resources = new Resource[myvector.size()];
- myvector.copyInto(resources);
- return resources;
+ // first check if the archive needs to be scanned again
+ scanme();
+ for (Enumeration e = myentries.elements() ; e.hasMoreElements() ;) {
+ Resource myresource= (Resource) e.nextElement();
+ if (myresource.isDirectory() && match(myresource.getName())) {
+ myvector.addElement(myresource.clone());
+ }
+ }
+ Resource[] resources = new Resource[myvector.size()];
+ myvector.copyInto(resources);
+ return resources;
}
/**
@@ -255,17 +257,16 @@
// special case in ZIPs, we do not want this thing included
return new Resource("", true, Long.MAX_VALUE, true);
}
-
+
// first check if the archive needs to be scanned again
scanme();
- for (int counter = 0; counter < myentries.size(); counter++) {
- Resource myresource=(Resource)myentries.elementAt(counter);
- if (myresource.getName().equals(name)
- || myresource.getName().equals(name + "/")) {
- return myresource;
- }
+ if (myentries.containsKey(name)) {
+ return (Resource) myentries.get(name);
+ } else if (myentries.containsKey(name + "/")) {
+ return (Resource) myentries.get(name + "/");
+ } else {
+ return new Resource(name);
}
- return new Resource(name);
}
/**
@@ -281,26 +282,25 @@
srcFile.lastModified());
// spare scanning again and again
- if (lastScannedResource != null
+ if (lastScannedResource != null
&& lastScannedResource.getName().equals(thisresource.getName())
- && lastScannedResource.getLastModified()
- == thisresource.getLastModified()) {
+ && lastScannedResource.getLastModified()
+ == thisresource.getLastModified()) {
return;
}
- Vector vResult = new Vector();
if (task != null) {
task.log("checking zip entries: " + srcFile,
Project.MSG_VERBOSE);
}
ZipEntry entry = null;
ZipInputStream in = null;
- myentries = new Vector();
+ myentries = new Hashtable();
try {
try {
in = new ZipInputStream(new FileInputStream(srcFile));
if (task != null) {
- task.log("opening input stream from " + srcFile,
+ task.log("opening input stream from " + srcFile,
Project.MSG_DEBUG);
}
} catch (IOException ex) {
@@ -309,22 +309,22 @@
task.log("problem opening "+srcFile,Project.MSG_ERR);
}
}
-
+
while (true) {
try {
entry = in.getNextEntry();
if (entry == null) {
break;
}
- myentries.addElement(new Resource(entry.getName(),
- true,
- entry.getTime(),
+ myentries.put(new String(entry.getName()),
+ new Resource(entry.getName(), true,
+ entry.getTime(),
entry.isDirectory()));
if (task != null) {
task.log("adding entry " + entry.getName() + " from "
+ srcFile, Project.MSG_DEBUG);
}
-
+
} catch (ZipException ex) {
// XXX - throw a BuildException instead ??
if (task != null ) {
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>