Browse Source

moved PrefixFileSets from War Task to Zip task

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268327 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
9e2e9dbcf9
2 changed files with 73 additions and 73 deletions
  1. +1
    -70
      src/main/org/apache/tools/ant/taskdefs/War.java
  2. +72
    -3
      src/main/org/apache/tools/ant/taskdefs/Zip.java

+ 1
- 70
src/main/org/apache/tools/ant/taskdefs/War.java View File

@@ -73,7 +73,6 @@ public class War extends Jar {
private Vector libFileSets = new Vector(); private Vector libFileSets = new Vector();
private Vector classesFileSets = new Vector(); private Vector classesFileSets = new Vector();
private Vector webInfFileSets = new Vector(); private Vector webInfFileSets = new Vector();
private Vector locFileSets = new Vector();


public War() { public War() {
super(); super();
@@ -101,24 +100,6 @@ public class War extends Jar {
webInfFileSets.addElement(fs); webInfFileSets.addElement(fs);
} }


/**
* FileSet with an additional prefix attribute to specify the
* location we want to move the files to (inside the archive).
*/
public static class PrefixedFileSet extends FileSet {
private String prefix = "";

public void setPrefix(String loc) {
prefix = loc;
}

public String getPrefix() {return prefix;}
}

public void addPrefixedFileSet(PrefixedFileSet fs) {
locFileSets.addElement(fs);
}

/** /**
* Add the deployment descriptor as well as all files added the * Add the deployment descriptor as well as all files added the
* special way of nested lib, classes or webinf filesets. * special way of nested lib, classes or webinf filesets.
@@ -138,7 +119,6 @@ public class War extends Jar {
addFiles(libFileSets, zOut, "WEB-INF/lib/"); addFiles(libFileSets, zOut, "WEB-INF/lib/");
addFiles(classesFileSets, zOut, "WEB-INF/classes/"); addFiles(classesFileSets, zOut, "WEB-INF/classes/");
addFiles(webInfFileSets, zOut, "WEB-INF/"); addFiles(webInfFileSets, zOut, "WEB-INF/");
addPrefixedFiles(locFileSets, zOut);


super.initZipOutputStream(zOut); super.initZipOutputStream(zOut);
} }
@@ -156,8 +136,7 @@ public class War extends Jar {
+ 1 // web.xml + 1 // web.xml
+ libFileSets.size() + libFileSets.size()
+ classesFileSets.size() + classesFileSets.size()
+ webInfFileSets.size()
+ locFileSets.size()];
+ webInfFileSets.size()];


System.arraycopy(scanners, 0, myScanners, 0, scanners.length); System.arraycopy(scanners, 0, myScanners, 0, scanners.length);


@@ -172,9 +151,6 @@ public class War extends Jar {
classesFileSets); classesFileSets);
addScanners(myScanners, scanners.length+1+libFileSets.size()+classesFileSets.size(), addScanners(myScanners, scanners.length+1+libFileSets.size()+classesFileSets.size(),
webInfFileSets); webInfFileSets);
addScanners(myScanners, scanners.length + 1 + libFileSets.size()
+classesFileSets.size()+webInfFileSets.size(),
locFileSets);


return super.isUpToDate(myScanners, zipFile); return super.isUpToDate(myScanners, zipFile);
} }
@@ -190,49 +166,4 @@ public class War extends Jar {
"(please use webxml attribute to "+archiveType+" task)", Project.MSG_WARN); "(please use webxml attribute to "+archiveType+" task)", Project.MSG_WARN);
} }
} }

/**
* Add a DirectoryScanner for each FileSet included in fileSets to scanners
* starting with index startIndex.
*/
protected void addScanners(FileScanner[] scanners, int startIndex,
Vector fileSets) {
for (int i=0; i<fileSets.size(); i++) {
FileSet fs = (FileSet) fileSets.elementAt(i);
scanners[startIndex+i] = fs.getDirectoryScanner(project);
}
}

/**
* Iterate over the given Vector of filesets and add all files to the
* ZipOutputStream using the given prefix.
*/
protected void addFiles(Vector v, ZipOutputStream zOut, String prefix)
throws IOException {
for (int i=0; i<v.size(); i++) {
FileSet fs = (FileSet) v.elementAt(i);
DirectoryScanner ds = fs.getDirectoryScanner(project);
addFiles(ds, zOut, prefix);
}
}

/**
* Iterate over the given Vector of relocatablefilesets and add
* all files to the ZipOutputStream using the given prefix.
*/
protected void addPrefixedFiles(Vector v, ZipOutputStream zOut)
throws IOException {
for (int i=0; i<v.size(); i++) {
PrefixedFileSet fs = (PrefixedFileSet) v.elementAt(i);
DirectoryScanner ds = fs.getDirectoryScanner(project);
String prefix = fs.getPrefix();
if (prefix.length() > 0
&& !prefix.endsWith("/")
&& !prefix.endsWith("\\")) {
prefix += "/";
}
zipDir(null, zOut, prefix);
addFiles(ds, zOut, prefix);
}
}
} }

+ 72
- 3
src/main/org/apache/tools/ant/taskdefs/Zip.java View File

@@ -82,6 +82,7 @@ public class Zip extends MatchingTask {
protected String emptyBehavior = "skip"; protected String emptyBehavior = "skip";
private Vector filesets = new Vector (); private Vector filesets = new Vector ();
private Hashtable addedDirs = new Hashtable(); private Hashtable addedDirs = new Hashtable();
private Vector locFileSets = new Vector();
/** /**
* This is the name/location of where to * This is the name/location of where to
@@ -113,6 +114,24 @@ public class Zip extends MatchingTask {
filesets.addElement(set); filesets.addElement(set);
} }


/**
* FileSet with an additional prefix attribute to specify the
* location we want to move the files to (inside the archive).
*/
public static class PrefixedFileSet extends FileSet {
private String prefix = "";

public void setPrefix(String loc) {
prefix = loc;
}

public String getPrefix() {return prefix;}
}

public void addPrefixedFileSet(PrefixedFileSet fs) {
locFileSets.addElement(fs);
}

/** /**
* Sets behavior of the task when no files match. * Sets behavior of the task when no files match.
* Possible values are: <code>fail</code> (throw an exception * Possible values are: <code>fail</code> (throw an exception
@@ -146,9 +165,12 @@ public class Zip extends MatchingTask {
FileSet fs = (FileSet) filesets.elementAt(i); FileSet fs = (FileSet) filesets.elementAt(i);
dss.addElement (fs.getDirectoryScanner(project)); dss.addElement (fs.getDirectoryScanner(project));
} }
FileScanner[] scanners = new FileScanner[dss.size()];
int dssSize = dss.size();
FileScanner[] scanners = new FileScanner[dssSize + locFileSets.size()];
dss.copyInto(scanners); dss.copyInto(scanners);


addScanners(scanners, dssSize, locFileSets);

// quick exit if the target is up to date // quick exit if the target is up to date
// can also handle empty archives // can also handle empty archives
if (isUpToDate(scanners, zipFile)) return; if (isUpToDate(scanners, zipFile)) return;
@@ -164,8 +186,10 @@ public class Zip extends MatchingTask {
zOut.setMethod(ZipOutputStream.STORED); zOut.setMethod(ZipOutputStream.STORED);
} }
initZipOutputStream(zOut); initZipOutputStream(zOut);
for (int j = 0; j < scanners.length; j++) {

addPrefixedFiles(locFileSets, zOut);
for (int j = 0; j < dssSize; j++) {
addFiles(scanners[j], zOut, ""); addFiles(scanners[j], zOut, "");
} }
} finally { } finally {
@@ -183,6 +207,18 @@ public class Zip extends MatchingTask {
} }
} }


/**
* Add a DirectoryScanner for each FileSet included in fileSets to scanners
* starting with index startIndex.
*/
protected void addScanners(FileScanner[] scanners, int startIndex,
Vector fileSets) {
for (int i=0; i<fileSets.size(); i++) {
FileSet fs = (FileSet) fileSets.elementAt(i);
scanners[startIndex+i] = fs.getDirectoryScanner(project);
}
}

/** /**
* Add all files of the given FileScanner to the ZipOutputStream * Add all files of the given FileScanner to the ZipOutputStream
* prependig the given prefix to each filename. * prependig the given prefix to each filename.
@@ -418,4 +454,37 @@ public class Zip extends MatchingTask {
zipDir(f, zOut, prefix+dir); zipDir(f, zOut, prefix+dir);
} }
} }

/**
* Iterate over the given Vector of filesets and add all files to the
* ZipOutputStream using the given prefix.
*/
protected void addFiles(Vector v, ZipOutputStream zOut, String prefix)
throws IOException {
for (int i=0; i<v.size(); i++) {
FileSet fs = (FileSet) v.elementAt(i);
DirectoryScanner ds = fs.getDirectoryScanner(project);
addFiles(ds, zOut, prefix);
}
}

/**
* Iterate over the given Vector of relocatablefilesets and add
* all files to the ZipOutputStream using the given prefix.
*/
protected void addPrefixedFiles(Vector v, ZipOutputStream zOut)
throws IOException {
for (int i=0; i<v.size(); i++) {
PrefixedFileSet fs = (PrefixedFileSet) v.elementAt(i);
DirectoryScanner ds = fs.getDirectoryScanner(project);
String prefix = fs.getPrefix();
if (prefix.length() > 0
&& !prefix.endsWith("/")
&& !prefix.endsWith("\\")) {
prefix += "/";
}
zipDir(null, zOut, prefix);
addFiles(ds, zOut, prefix);
}
}
} }

Loading…
Cancel
Save