Author: bodewig
Date: Thu Aug 27 07:52:50 2009
New Revision: 808310

URL: http://svn.apache.org/viewvc?rev=808310&view=rev
Log:
allow rootfilesets with a dir other than the dir attribute of the classfileset. 
 PR 37763.  Submitted by Alexei Yudichev

Modified:
    ant/core/trunk/CONTRIBUTORS
    ant/core/trunk/WHATSNEW
    ant/core/trunk/contributors.xml
    
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
    
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java

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

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=808310&r1=808309&r2=808310&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Thu Aug 27 07:52:50 2009
@@ -930,6 +930,10 @@
  * A new token filter <uniqfilter> that suppresses tokens that match
    their ancestor token has been added.
 
+ * <rootfileset>s nested into <classfileset>s can now use a dir
+   attribute different from the <classfileset>.
+   Bugzilla Report 37763.
+
 Changes from Ant 1.7.0 TO Ant 1.7.1
 =============================================
 

Modified: ant/core/trunk/contributors.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/contributors.xml?rev=808310&r1=808309&r2=808310&view=diff
==============================================================================
--- ant/core/trunk/contributors.xml (original)
+++ ant/core/trunk/contributors.xml Thu Aug 27 07:52:50 2009
@@ -47,6 +47,10 @@
     <last>Ishutin</last>
   </name>
   <name>
+    <first>Alexei</first>
+    <last>Yudichev</last>
+  </name>
+  <name>
     <first>Alexey</first>
     <last>Panchenko</last>
   </name>

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java?rev=808310&r1=808309&r2=808310&view=diff
==============================================================================
--- 
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
 (original)
+++ 
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
 Thu Aug 27 07:52:50 2009
@@ -121,6 +121,8 @@
             return getRef(p).getDirectoryScanner(p);
         }
         dieOnCircularReference(p);
+        DirectoryScanner parentScanner = super.getDirectoryScanner(p);
+        DependScanner scanner = new DependScanner(parentScanner);
         Vector allRootClasses = (Vector) rootClasses.clone();
         for (Enumeration e = rootFileSets.elements(); e.hasMoreElements();) {
             FileSet additionalRootSet = (FileSet) e.nextElement();
@@ -135,9 +137,8 @@
                     allRootClasses.addElement(className);
                 }
             }
+            scanner.addBasedir(additionalRootSet.getDir(p));
         }
-        DirectoryScanner parentScanner = super.getDirectoryScanner(p);
-        DependScanner scanner = new DependScanner(parentScanner);
         scanner.setBasedir(getDir(p));
         scanner.setRootClasses(allRootClasses);
         scanner.scan();

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java?rev=808310&r1=808309&r2=808310&view=diff
==============================================================================
--- 
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java
 (original)
+++ 
ant/core/trunk/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java
 Thu Aug 27 07:52:50 2009
@@ -47,6 +47,8 @@
      */
     private Vector included;
 
+    private Vector additionalBaseDirs = new Vector();
+
     /**
      * The parent scanner which gives the basic set of files. Only files which
      * are in this set and which can be reached from a root class will end
@@ -109,9 +111,13 @@
             analyzer = (DependencyAnalyzer) analyzerClass.newInstance();
         } catch (Exception e) {
             throw new BuildException("Unable to load dependency analyzer: "
-                + analyzerClassName, e);
+                                     + analyzerClassName, e);
         }
         analyzer.addClassPath(new Path(null, basedir.getPath()));
+        for (Enumeration e = additionalBaseDirs.elements(); 
e.hasMoreElements();) {
+            File additionalBaseDir = (File) e.nextElement();
+            analyzer.addClassPath(new Path(null, additionalBaseDir.getPath()));
+        }
 
         for (Enumeration e = rootClasses.elements(); e.hasMoreElements();) {
             String rootClass = (String) e.nextElement();
@@ -210,4 +216,8 @@
     /** {...@inheritdoc}. */
     public void setCaseSensitive(boolean isCaseSensitive) {
     }
+
+    public void addBasedir(File baseDir) {
+        additionalBaseDirs.addElement(baseDir);
+    }
 }


Reply via email to