From 2f69b089b47d87b9d6395d4a5a4c0b40f64ecdad Mon Sep 17 00:00:00 2001 From: Matthew Jason Benson Date: Wed, 28 Sep 2005 18:25:44 +0000 Subject: [PATCH] Don't try to delete nonexistent resources; switched to a single static reverse filesystem ResourceComparator. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@292236 13f79535-47bb-0310-9956-ffa450edef68 --- src/etc/testcases/taskdefs/delete.xml | 6 ++++++ src/main/org/apache/tools/ant/taskdefs/Delete.java | 14 ++++++++++++-- .../org/apache/tools/ant/taskdefs/DeleteTest.java | 3 +++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/etc/testcases/taskdefs/delete.xml b/src/etc/testcases/taskdefs/delete.xml index 7b729bc78..e56f1998c 100644 --- a/src/etc/testcases/taskdefs/delete.xml +++ b/src/etc/testcases/taskdefs/delete.xml @@ -103,6 +103,12 @@ + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Delete.java b/src/main/org/apache/tools/ant/taskdefs/Delete.java index 9d2ba01db..3a7a6fa34 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Delete.java +++ b/src/main/org/apache/tools/ant/taskdefs/Delete.java @@ -29,10 +29,14 @@ import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.PatternSet; import org.apache.tools.ant.types.ResourceCollection; import org.apache.tools.ant.types.resources.Sort; +import org.apache.tools.ant.types.resources.Restrict; import org.apache.tools.ant.types.resources.BCFileSet; import org.apache.tools.ant.types.resources.FileResource; import org.apache.tools.ant.types.resources.comparators.Reverse; import org.apache.tools.ant.types.resources.comparators.FileSystem; +import org.apache.tools.ant.types.resources.comparators.ResourceComparator; +import org.apache.tools.ant.types.resources.selectors.Exists; +import org.apache.tools.ant.types.resources.selectors.ResourceSelector; import org.apache.tools.ant.types.selectors.OrSelector; import org.apache.tools.ant.types.selectors.AndSelector; import org.apache.tools.ant.types.selectors.NotSelector; @@ -67,6 +71,9 @@ import org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector; */ public class Delete extends MatchingTask { private static final int DELETE_RETRY_SLEEP_MILLIS = 10; + private static final ResourceComparator REVERSE_FILESYSTEM = new Reverse(new FileSystem()); + private static final ResourceSelector EXISTS = new Exists(); + protected File file = null; protected File dir = null; protected Vector filesets = new Vector(); @@ -525,10 +532,13 @@ public class Delete extends MatchingTask { FileSet implicit = getImplicitFileSet(); p.add(includeEmpty ? new BCFileSet(implicit) : implicit); } + Restrict e = new Restrict(); + e.add(EXISTS); + e.add(p); // delete the files in the resource collections; sort to files, then dirs Sort s = new Sort(); - s.add(new Reverse(new FileSystem())); - s.add(p); + s.add(REVERSE_FILESYSTEM); + s.add(e); for (Iterator iter = s.iterator(); iter.hasNext();) { FileResource r = (FileResource) iter.next(); if (!(r.isDirectory()) || r.getFile().list().length == 0) { diff --git a/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java b/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java index ca5eb39c9..2d5c16f25 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java @@ -61,4 +61,7 @@ public class DeleteTest extends BuildFileTest { public void test9() { executeTarget("test9"); } + public void test10() { + executeTarget("test10"); + } }