Browse Source

allow rootfilesets with a dir other than the dir attribute of the classfileset. PR 37763. Submitted by Alexei Yudichev

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@808310 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 16 years ago
parent
commit
1c24c78ca5
5 changed files with 23 additions and 3 deletions
  1. +1
    -0
      CONTRIBUTORS
  2. +4
    -0
      WHATSNEW
  3. +4
    -0
      contributors.xml
  4. +3
    -2
      src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
  5. +11
    -1
      src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java

+ 1
- 0
CONTRIBUTORS View File

@@ -4,6 +4,7 @@ Adam Blinkinsop
Adam Bryzak Adam Bryzak
Adam Sotona Adam Sotona
Aleksandr Ishutin Aleksandr Ishutin
Alexei Yudichev
Alexey Panchenko Alexey Panchenko
Alexey Solofnenko Alexey Solofnenko
Alison Winters Alison Winters


+ 4
- 0
WHATSNEW View File

@@ -930,6 +930,10 @@ Other changes:
* A new token filter <uniqfilter> that suppresses tokens that match * A new token filter <uniqfilter> that suppresses tokens that match
their ancestor token has been added. 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 Changes from Ant 1.7.0 TO Ant 1.7.1
============================================= =============================================




+ 4
- 0
contributors.xml View File

@@ -46,6 +46,10 @@
<first>Aleksandr</first> <first>Aleksandr</first>
<last>Ishutin</last> <last>Ishutin</last>
</name> </name>
<name>
<first>Alexei</first>
<last>Yudichev</last>
</name>
<name> <name>
<first>Alexey</first> <first>Alexey</first>
<last>Panchenko</last> <last>Panchenko</last>


+ 3
- 2
src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java View File

@@ -121,6 +121,8 @@ public class ClassfileSet extends FileSet {
return getRef(p).getDirectoryScanner(p); return getRef(p).getDirectoryScanner(p);
} }
dieOnCircularReference(p); dieOnCircularReference(p);
DirectoryScanner parentScanner = super.getDirectoryScanner(p);
DependScanner scanner = new DependScanner(parentScanner);
Vector allRootClasses = (Vector) rootClasses.clone(); Vector allRootClasses = (Vector) rootClasses.clone();
for (Enumeration e = rootFileSets.elements(); e.hasMoreElements();) { for (Enumeration e = rootFileSets.elements(); e.hasMoreElements();) {
FileSet additionalRootSet = (FileSet) e.nextElement(); FileSet additionalRootSet = (FileSet) e.nextElement();
@@ -135,9 +137,8 @@ public class ClassfileSet extends FileSet {
allRootClasses.addElement(className); allRootClasses.addElement(className);
} }
} }
scanner.addBasedir(additionalRootSet.getDir(p));
} }
DirectoryScanner parentScanner = super.getDirectoryScanner(p);
DependScanner scanner = new DependScanner(parentScanner);
scanner.setBasedir(getDir(p)); scanner.setBasedir(getDir(p));
scanner.setRootClasses(allRootClasses); scanner.setRootClasses(allRootClasses);
scanner.scan(); scanner.scan();


+ 11
- 1
src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java View File

@@ -47,6 +47,8 @@ public class DependScanner extends DirectoryScanner {
*/ */
private Vector included; private Vector included;


private Vector additionalBaseDirs = new Vector();

/** /**
* The parent scanner which gives the basic set of files. Only files which * 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 * are in this set and which can be reached from a root class will end
@@ -109,9 +111,13 @@ public class DependScanner extends DirectoryScanner {
analyzer = (DependencyAnalyzer) analyzerClass.newInstance(); analyzer = (DependencyAnalyzer) analyzerClass.newInstance();
} catch (Exception e) { } catch (Exception e) {
throw new BuildException("Unable to load dependency analyzer: " throw new BuildException("Unable to load dependency analyzer: "
+ analyzerClassName, e);
+ analyzerClassName, e);
} }
analyzer.addClassPath(new Path(null, basedir.getPath())); 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();) { for (Enumeration e = rootClasses.elements(); e.hasMoreElements();) {
String rootClass = (String) e.nextElement(); String rootClass = (String) e.nextElement();
@@ -210,4 +216,8 @@ public class DependScanner extends DirectoryScanner {
/** {@inheritDoc}. */ /** {@inheritDoc}. */
public void setCaseSensitive(boolean isCaseSensitive) { public void setCaseSensitive(boolean isCaseSensitive) {
} }

public void addBasedir(File baseDir) {
additionalBaseDirs.addElement(baseDir);
}
} }

Loading…
Cancel
Save