Browse Source

Make <delete> aware of nested <includesfile> and <excludesfile>

elements for the implicit fileset.

Cosmetics.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272371 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 23 years ago
parent
commit
224d0e2d87
4 changed files with 99 additions and 48 deletions
  1. +52
    -20
      src/main/org/apache/tools/ant/taskdefs/Delete.java
  2. +12
    -8
      src/main/org/apache/tools/ant/taskdefs/DependSet.java
  3. +19
    -12
      src/main/org/apache/tools/ant/taskdefs/Ear.java
  4. +16
    -8
      src/main/org/apache/tools/ant/taskdefs/War.java

+ 52
- 20
src/main/org/apache/tools/ant/taskdefs/Delete.java View File

@@ -77,6 +77,8 @@ import java.util.Vector;
* @author Glenn McAllister <a href="mailto:glennm@ca.ibm.com">glennm@ca.ibm.com</a>
* @author Jon S. Stevens <a href="mailto:jon@latchkey.com">jon@latchkey.com</a>
*
* @since 1.2
*
* @ant.task category="filesystem"
*/
public class Delete extends MatchingTask {
@@ -84,7 +86,8 @@ public class Delete extends MatchingTask {
protected File dir = null;
protected Vector filesets = new Vector();
protected boolean usedMatchingTask = false;
protected boolean includeEmpty = false; // by default, remove matching empty dirs
// by default, remove matching empty dirs
protected boolean includeEmpty = false;

private int verbosity = Project.MSG_VERBOSE;
private boolean quiet = false;
@@ -168,6 +171,14 @@ public class Delete extends MatchingTask {
return super.createInclude();
}

/**
* add a name entry on the include files list
*/
public PatternSet.NameEntry createIncludesFile() {
usedMatchingTask = true;
return super.createIncludesFile();
}
/**
* add a name entry on the exclude list
*/
@@ -176,6 +187,14 @@ public class Delete extends MatchingTask {
return super.createExclude();
}

/**
* add a name entry on the include files list
*/
public PatternSet.NameEntry createExcludesFile() {
usedMatchingTask = true;
return super.createExcludesFile();
}
/**
* add a set of patterns
*/
@@ -245,16 +264,19 @@ public class Delete extends MatchingTask {
*/
public void execute() throws BuildException {
if (usedMatchingTask) {
log("DEPRECATED - Use of the implicit FileSet is deprecated. Use a nested fileset element instead.");
log("DEPRECATED - Use of the implicit FileSet is deprecated. "
+ "Use a nested fileset element instead.");
}

if (file == null && dir == null && filesets.size() == 0) {
throw new BuildException("At least one of the file or dir attributes, or a fileset element, must be set.");
throw new BuildException("At least one of the file or dir "
+ "attributes, or a fileset element, "
+ "must be set.");
}

if (quiet && failonerror) {
throw new BuildException("quiet and failonerror cannot both be set to true",
location);
throw new BuildException("quiet and failonerror cannot both be "
+ "set to true", location);
}

@@ -262,33 +284,39 @@ public class Delete extends MatchingTask {
if (file != null) {
if (file.exists()) {
if (file.isDirectory()) {
log("Directory " + file.getAbsolutePath() + " cannot be removed using the file attribute. Use dir instead.");
log("Directory " + file.getAbsolutePath()
+ " cannot be removed using the file attribute. "
+ "Use dir instead.");
} else {
log("Deleting: " + file.getAbsolutePath());

if (!file.delete()) {
String message="Unable to delete file " + file.getAbsolutePath();
String message="Unable to delete file "
+ file.getAbsolutePath();
if(failonerror) {
throw new BuildException(message);
} else {
log(message,
quiet ? Project.MSG_VERBOSE : Project.MSG_WARN);
log(message, quiet ? Project.MSG_VERBOSE
: Project.MSG_WARN);
}
}
}
} else {
log("Could not find file " + file.getAbsolutePath() + " to delete.",
log("Could not find file " + file.getAbsolutePath()
+ " to delete.",
Project.MSG_VERBOSE);
}
}

// delete the directory
if (dir != null && dir.exists() && dir.isDirectory() && !usedMatchingTask) {
if (dir != null && dir.exists() && dir.isDirectory() &&
!usedMatchingTask) {
/*
If verbosity is MSG_VERBOSE, that mean we are doing regular logging
(backwards as that sounds). In that case, we want to print one
message about deleting the top of the directory tree. Otherwise,
the removeDir method will handle messages for _all_ directories.
If verbosity is MSG_VERBOSE, that mean we are doing
regular logging (backwards as that sounds). In that
case, we want to print one message about deleting the
top of the directory tree. Otherwise, the removeDir
method will handle messages for _all_ directories.
*/
if (verbosity == Project.MSG_VERBOSE) {
log("Deleting directory " + dir.getAbsolutePath());
@@ -341,7 +369,7 @@ public class Delete extends MatchingTask {
protected void removeDir(File d) {
String[] list = d.list();
if (list == null) {
list = new String[0];
list = new String[0];
}
for (int i = 0; i < list.length; i++) {
String s = list[i];
@@ -351,7 +379,8 @@ public class Delete extends MatchingTask {
} else {
log("Deleting " + f.getAbsolutePath(), verbosity);
if (!f.delete()) {
String message="Unable to delete file " + f.getAbsolutePath();
String message="Unable to delete file "
+ f.getAbsolutePath();
if(failonerror) {
throw new BuildException(message);
} else {
@@ -363,7 +392,8 @@ public class Delete extends MatchingTask {
}
log("Deleting directory " + d.getAbsolutePath(), verbosity);
if (!d.delete()) {
String message="Unable to delete directory " + dir.getAbsolutePath();
String message="Unable to delete directory "
+ dir.getAbsolutePath();
if(failonerror) {
throw new BuildException(message);
} else {
@@ -382,12 +412,14 @@ public class Delete extends MatchingTask {
*/
protected void removeFiles(File d, String[] files, String[] dirs) {
if (files.length > 0) {
log("Deleting " + files.length + " files from " + d.getAbsolutePath());
log("Deleting " + files.length + " files from "
+ d.getAbsolutePath());
for (int j=0; j<files.length; j++) {
File f = new File(d, files[j]);
log("Deleting " + f.getAbsolutePath(), verbosity);
if (!f.delete()) {
String message="Unable to delete file " + f.getAbsolutePath();
String message="Unable to delete file "
+ f.getAbsolutePath();
if(failonerror) {
throw new BuildException(message);
} else {


+ 12
- 8
src/main/org/apache/tools/ant/taskdefs/DependSet.java View File

@@ -110,6 +110,7 @@ import org.apache.tools.ant.types.FileList;
* @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a>
* @ant.task category="filesystem"
* @version $Revision$ $Date$
* @since Ant 1.4
*/
public class DependSet extends MatchingTask {

@@ -159,11 +160,13 @@ public class DependSet extends MatchingTask {
public void execute() throws BuildException {

if ( (sourceFileSets.size() == 0) && (sourceFileLists.size() == 0) ) {
throw new BuildException("At least one <srcfileset> or <srcfilelist> element must be set");
throw new BuildException("At least one <srcfileset> or <srcfilelist>"
+ " element must be set");
}

if ( (targetFileSets.size() == 0) && (targetFileLists.size() == 0) ) {
throw new BuildException("At least one <targetfileset> or <targetfilelist> element must be set");
throw new BuildException("At least one <targetfileset> or"
+ " <targetfilelist> element must be set");
}

long now = (new Date()).getTime();
@@ -255,8 +258,8 @@ public class DependSet extends MatchingTask {
Enumeration enumSourceLists = sourceFileLists.elements();
while (upToDate && enumSourceLists.hasMoreElements()) {
FileList sourceFL = (FileList) enumSourceLists.nextElement();
String[] sourceFiles = sourceFL.getFiles(project);
FileList sourceFL = (FileList) enumSourceLists.nextElement();
String[] sourceFiles = sourceFL.getFiles(project);

for (int i=0; upToDate && i < sourceFiles.length; i++) {
File src = new File(sourceFL.getDir(project), sourceFiles[i]);
@@ -267,7 +270,8 @@ public class DependSet extends MatchingTask {
}

if (!src.exists()) {
log(sourceFiles[i]+ " does not exist.", Project.MSG_VERBOSE);
log(sourceFiles[i]+ " does not exist.",
Project.MSG_VERBOSE);
upToDate = false;
break;
}
@@ -288,7 +292,7 @@ public class DependSet extends MatchingTask {
Enumeration enumSourceSets = sourceFileSets.elements();
while (upToDate && enumSourceSets.hasMoreElements()) {
FileSet sourceFS = (FileSet) enumSourceSets.nextElement();
FileSet sourceFS = (FileSet) enumSourceSets.nextElement();
DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(project);
String[] sourceFiles = sourceDS.getIncludedFiles();

@@ -313,11 +317,11 @@ public class DependSet extends MatchingTask {
log("Deleting all target files. ", Project.MSG_VERBOSE);
for (Enumeration e = allTargets.elements(); e.hasMoreElements(); ) {
File fileToRemove = (File)e.nextElement();
log("Deleting file " + fileToRemove.getAbsolutePath(), Project.MSG_VERBOSE);
log("Deleting file " + fileToRemove.getAbsolutePath(),
Project.MSG_VERBOSE);
fileToRemove.delete();
}
}

} //-- execute


+ 19
- 12
src/main/org/apache/tools/ant/taskdefs/Ear.java View File

@@ -61,13 +61,14 @@ import org.apache.tools.zip.ZipOutputStream;
import java.io.File;
import java.io.IOException;


/**
* Creates a EAR archive. Based on WAR task
*
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
* @author <a href="mailto:leslie.hughes@rubus.com">Les Hughes</a>
*
* @since Ant 1.4
*
* @ant.task category="packaging"
*/
public class Ear extends Jar {
@@ -94,7 +95,9 @@ public class Ear extends Jar {
public void setAppxml(File descr) {
deploymentDescriptor = descr;
if (!deploymentDescriptor.exists()) {
throw new BuildException("Deployment descriptor: " + deploymentDescriptor + " does not exist.");
throw new BuildException("Deployment descriptor: "
+ deploymentDescriptor
+ " does not exist.");
}

// Create a ZipFileSet for this file, and pass it up.
@@ -109,7 +112,6 @@ public class Ear extends Jar {
public void addArchives(ZipFileSet fs) {
// We just set the prefix for this fileset, and pass it up.
// Do we need to do this? LH
log("addArchives called",Project.MSG_DEBUG);
fs.setPrefix("/");
super.addFileset(fs);
}
@@ -129,14 +131,19 @@ public class Ear extends Jar {
protected void zipFile(File file, ZipOutputStream zOut, String vPath)
throws IOException
{
// If the file being added is META-INF/application.xml, we warn if it's not the
// one specified in the "appxml" attribute - or if it's being added twice,
// meaning the same file is specified by the "appxml" attribute and in
// a <fileset> element.
// If the file being added is META-INF/application.xml, we
// warn if it's not the one specified in the "appxml"
// attribute - or if it's being added twice, meaning the same
// file is specified by the "appxml" attribute and in a
// <fileset> element.
if (vPath.equalsIgnoreCase("META-INF/application.xml")) {
if (deploymentDescriptor == null || !deploymentDescriptor.equals(file) || descriptorAdded) {
log("Warning: selected "+archiveType+" files include a META-INF/application.xml which will be ignored " +
"(please use appxml attribute to "+archiveType+" task)", Project.MSG_WARN);
if (deploymentDescriptor == null
|| !deploymentDescriptor.equals(file)
|| descriptorAdded) {
log("Warning: selected "+archiveType
+ " files include a META-INF/application.xml which will"
+ " be ignored (please use appxml attribute to "
+ archiveType + " task)", Project.MSG_WARN);
} else {
super.zipFile(file, zOut, vPath);
descriptorAdded = true;
@@ -147,8 +154,8 @@ public class Ear extends Jar {
}

/**
* Make sure we don't think we already have a application.xml next time this task
* gets executed.
* Make sure we don't think we already have a application.xml next
* time this task gets executed.
*/
protected void cleanUp() {
descriptorAdded = false;


+ 16
- 8
src/main/org/apache/tools/ant/taskdefs/War.java View File

@@ -68,6 +68,8 @@ import java.io.IOException;
*
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
*
* @since Ant 1.2
*
* @ant.task category="packaging"
*/
public class War extends Jar {
@@ -94,7 +96,9 @@ public class War extends Jar {
public void setWebxml(File descr) {
deploymentDescriptor = descr;
if (!deploymentDescriptor.exists()) {
throw new BuildException("Deployment descriptor: " + deploymentDescriptor + " does not exist.");
throw new BuildException("Deployment descriptor: "
+ deploymentDescriptor
+ " does not exist.");
}

// Create a ZipFileSet for this file, and pass it up.
@@ -137,14 +141,18 @@ public class War extends Jar {
protected void zipFile(File file, ZipOutputStream zOut, String vPath)
throws IOException
{
// If the file being added is WEB-INF/web.xml, we warn if it's not the
// one specified in the "webxml" attribute - or if it's being added twice,
// meaning the same file is specified by the "webxml" attribute and in
// a <fileset> element.
// If the file being added is WEB-INF/web.xml, we warn if it's
// not the one specified in the "webxml" attribute - or if
// it's being added twice, meaning the same file is specified
// by the "webxml" attribute and in a <fileset> element.
if (vPath.equalsIgnoreCase("WEB-INF/web.xml")) {
if (deploymentDescriptor == null || !deploymentDescriptor.equals(file) || descriptorAdded) {
log("Warning: selected "+archiveType+" files include a WEB-INF/web.xml which will be ignored " +
"(please use webxml attribute to "+archiveType+" task)", Project.MSG_WARN);
if (deploymentDescriptor == null
|| !deploymentDescriptor.equals(file)
|| descriptorAdded) {
log("Warning: selected " + archiveType
+ " files include a WEB-INF/web.xml which will be ignored "
+ "(please use webxml attribute to "
+ archiveType + " task)", Project.MSG_WARN);
} else {
super.zipFile(file, zOut, vPath);
descriptorAdded = true;


Loading…
Cancel
Save