diff --git a/WHATSNEW b/WHATSNEW index ec2d6980c..0b10ef7b4 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -244,6 +244,8 @@ Other changes: * New "optional" task. +* now supports nested patternsets. + Changes from Ant 1.4 to Ant 1.4.1 =========================================== diff --git a/src/main/org/apache/tools/ant/types/PatternSet.java b/src/main/org/apache/tools/ant/types/PatternSet.java index 2dae3aae2..02cbd42a1 100644 --- a/src/main/org/apache/tools/ant/types/PatternSet.java +++ b/src/main/org/apache/tools/ant/types/PatternSet.java @@ -164,6 +164,27 @@ public class PatternSet extends DataType { super.setRefid(r); } + public void addConfiguredPatternset(PatternSet p) { + if (isReference()) { + throw noChildrenAllowed(); + } + + String[] nestedIncludes = p.getIncludePatterns(getProject()); + String[] nestedExcludes = p.getExcludePatterns(getProject()); + + if (nestedIncludes != null) { + for (int i=0; i < nestedIncludes.length; i++) { + createInclude().setName(nestedIncludes[i]); + } + } + + if (nestedExcludes != null) { + for (int i=0; i < nestedExcludes.length; i++) { + createExclude().setName(nestedExcludes[i]); + } + } + } + /** * add a name entry on the include list */ diff --git a/src/testcases/org/apache/tools/ant/types/PatternSetTest.java b/src/testcases/org/apache/tools/ant/types/PatternSetTest.java index e4977b13a..975fb15ee 100644 --- a/src/testcases/org/apache/tools/ant/types/PatternSetTest.java +++ b/src/testcases/org/apache/tools/ant/types/PatternSetTest.java @@ -222,4 +222,20 @@ public class PatternSetTest extends TestCase { 1, i.length); assertEquals("exclude", i[0]); } + + public void testNestedPatternset() { + PatternSet p = new PatternSet(); + p.setIncludes("**/*.java"); + + PatternSet nested = new PatternSet(); + nested.setExcludes("**/*.class"); + + p.addConfiguredPatternset(nested); + + String[] excludes = p.getExcludePatterns(project); + String[] includes = p.getIncludePatterns(project); + + assertEquals("Includes","**/*.java", includes[0]); + assertEquals("Excludes","**/*.class", excludes[0]); + } }