Author: bodewig
Date: Wed Jul 15 10:15:02 2009
New Revision: 794214
URL: http://svn.apache.org/viewvc?rev=794214&view=rev
Log:
alphasort directories read from non-FileSet resource collections -
DirectoryScanner already sorts them appropriately for FileSets
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java?rev=794214&r1=794213&r2=794214&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java Wed Jul 15
10:15:02 2009
@@ -26,6 +26,8 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
@@ -1523,18 +1525,29 @@
Resource[][] result = new Resource[rcs.length][];
for (int i = 0; i < rcs.length; i++) {
Iterator iter = rcs[i].iterator();
- ArrayList rs = new ArrayList();
- int lastDir = 0;
+ ArrayList dirs = new ArrayList();
+ ArrayList files = new ArrayList();
while (iter.hasNext()) {
Resource r = (Resource) iter.next();
if (r.isExists()) {
if (r.isDirectory()) {
- rs.add(lastDir++, r);
+ dirs.add(r);
} else {
- rs.add(r);
+ files.add(r);
}
}
}
+ // make sure directories are in alpha-order - this also
+ // ensures parents come before their children
+ Collections.sort(dirs, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Resource r1 = (Resource) o1;
+ Resource r2 = (Resource) o2;
+ return r1.getName().compareTo(r2.getName());
+ }
+ });
+ ArrayList rs = new ArrayList(dirs);
+ rs.addAll(files);
result[i] = (Resource[]) rs.toArray(new Resource[rs.size()]);
}
return result;