Author: peterreilly
Date: Wed Aug 22 01:16:49 2007
New Revision: 568495

URL: http://svn.apache.org/viewvc?rev=568495&view=rev
Log:
Bugzilla 11270: add errorOnMissingDir attribute to fileset

Modified:
    ant/core/trunk/CONTRIBUTORS
    ant/core/trunk/WHATSNEW
    ant/core/trunk/contributors.xml
    ant/core/trunk/docs/manual/CoreTypes/fileset.html
    ant/core/trunk/src/main/org/apache/tools/ant/DirectoryScanner.java
    ant/core/trunk/src/main/org/apache/tools/ant/types/AbstractFileSet.java
    ant/core/trunk/src/tests/antunit/types/fileset-test.xml

Modified: ant/core/trunk/CONTRIBUTORS
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/CONTRIBUTORS?rev=568495&r1=568494&r2=568495&view=diff
==============================================================================
Binary files - no diff available.

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=568495&r1=568494&r2=568495&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Wed Aug 22 01:16:49 2007
@@ -223,6 +223,9 @@
 * <javac> has a new attribute - includeDestClasses.
   Bugzilla 40776.
 
+* <fileset> has a new attribute - errorOnMissingDir.
+  Bugzilla 11270.
+
 Changes from Ant 1.6.5 to Ant 1.7.0
 ===================================
 

Modified: ant/core/trunk/contributors.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/contributors.xml?rev=568495&r1=568494&r2=568495&view=diff
==============================================================================
--- ant/core/trunk/contributors.xml (original)
+++ ant/core/trunk/contributors.xml Wed Aug 22 01:16:49 2007
@@ -925,6 +925,10 @@
   </name>
   <name>
     <first>Scott</first>
+    <last>Ellsworth</last>
+  </name>
+  <name>
+    <first>Scott</first>
     <middle>M.</middle>
     <last>Stirling</last>
   </name>

Modified: ant/core/trunk/docs/manual/CoreTypes/fileset.html
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTypes/fileset.html?rev=568495&r1=568494&r2=568495&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTypes/fileset.html (original)
+++ ant/core/trunk/docs/manual/CoreTypes/fileset.html Wed Aug 22 01:16:49 2007
@@ -98,6 +98,15 @@
       true. See the note <a href="#symlink">below</a>.</td>
     <td valign="top" align="center">No</td>
   </tr>
+  <tr>
+    <td valign="top">erroronmissingdir</td>
+    <td valign="top">
+      Specify what happens if the base directory does not exist.
+      If true a build error will happen, if false, the fileset
+      will be ignored.
+      true.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
 </table>
 
 <p><a name="symlink"><b>Note</b></a>: All files/directories for which

Modified: ant/core/trunk/src/main/org/apache/tools/ant/DirectoryScanner.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/DirectoryScanner.java?rev=568495&r1=568494&r2=568495&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/DirectoryScanner.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/DirectoryScanner.java Wed Aug 
22 01:16:49 2007
@@ -252,6 +252,12 @@
     protected boolean isCaseSensitive = true;
 
     /**
+     * Whether a missing base directory is an error.
+     * @since Ant 1.7.1
+     */
+    protected boolean errorOnMissingDir = true;
+ 
+    /**
      * Whether or not symbolic links should be followed.
      *
      * @since Ant 1.5
@@ -610,6 +616,17 @@
     }
 
     /**
+     * Sets whether or not a missing base directory is an error
+     *
+     * @param errorOnMissingDir whether or not a missing base directory
+     *                        is an error
+     * @since Ant 1.7.1
+     */
+    public void setErrorOnMissingDir(boolean errorOnMissingDir) {
+        this.errorOnMissingDir = errorOnMissingDir;
+    }
+
+    /**
      * Get whether or not a DirectoryScanner follows symbolic links.
      *
      * @return flag indicating whether symbolic links should be followed.
@@ -790,8 +807,13 @@
                     }
                 } else {
                     if (!basedir.exists()) {
-                        illegal = new IllegalStateException("basedir " + 
basedir
-                                                            + " does not 
exist");
+                        if (errorOnMissingDir) {
+                            illegal = new IllegalStateException(
+                                "basedir " + basedir + " does not exist");
+                        } else {
+                            // Nothing to do - basedir does not exist
+                            return;
+                        }
                     }
                     if (!basedir.isDirectory()) {
                         illegal = new IllegalStateException("basedir " + 
basedir

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/types/AbstractFileSet.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/AbstractFileSet.java?rev=568495&r1=568494&r2=568495&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/AbstractFileSet.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/AbstractFileSet.java Wed 
Aug 22 01:16:49 2007
@@ -65,6 +65,7 @@
     private boolean useDefaultExcludes = true;
     private boolean caseSensitive = true;
     private boolean followSymlinks = true;
+    private boolean errorOnMissingDir = true;
 
     /* cached DirectoryScanner instance for our own Project only */
     private DirectoryScanner directoryScanner = null;
@@ -89,6 +90,7 @@
         this.useDefaultExcludes = fileset.useDefaultExcludes;
         this.caseSensitive = fileset.caseSensitive;
         this.followSymlinks = fileset.followSymlinks;
+        this.errorOnMissingDir = fileset.errorOnMissingDir;
         setProject(fileset.getProject());
     }
 
@@ -393,6 +395,16 @@
     }
 
     /**
+     * Sets whether an error is thrown if a directory does not exist.
+     *
+     * @param errorOnMissingDir true if missing directories cause errors,
+     *                        false if not.
+     */
+     public void setErrorOnMissingDir(boolean errorOnMissingDir) {
+         this.errorOnMissingDir = errorOnMissingDir;
+     }
+ 
+    /**
      * Returns the directory scanner needed to access the files to process.
      * @return a <code>DirectoryScanner</code> instance.
      */
@@ -418,17 +430,18 @@
                     throw new BuildException("No directory specified for "
                                              + getDataTypeName() + ".");
                 }
-                if (!dir.exists()) {
+                if (!dir.exists() && errorOnMissingDir) {
                     throw new BuildException(dir.getAbsolutePath()
                                              + " not found.");
                 }
-                if (!dir.isDirectory()) {
+                if (!dir.isDirectory() && dir.exists()) {
                     throw new BuildException(dir.getAbsolutePath()
                                              + " is not a directory.");
                 }
                 ds = new DirectoryScanner();
                 setupDirectoryScanner(ds, p);
                 ds.setFollowSymlinks(followSymlinks);
+                ds.setErrorOnMissingDir(errorOnMissingDir);
                 directoryScanner = (p == getProject()) ? ds : directoryScanner;
             }
         }

Modified: ant/core/trunk/src/tests/antunit/types/fileset-test.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/types/fileset-test.xml?rev=568495&r1=568494&r2=568495&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/types/fileset-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/types/fileset-test.xml Wed Aug 22 01:16:49 
2007
@@ -1,5 +1,15 @@
 <project xmlns:au="antlib:org.apache.ant.antunit" default="all">
 
+  <target name="test-fileset-missing-dir">
+    <path id="missing.path.id">
+      <fileset dir="not present"
+               erroronmissingdir="false"/>
+    </path>
+    <au:assertTrue>
+      <equals arg1="" arg2="${toString:missing.path.id}"/>
+    </au:assertTrue>
+  </target>
+
   <target name="test-fileset-with-if">
     <fileset id="this.xml" dir=".">
       <include if="trigger.include" name="fileset-test.xml"/>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to