diff --git a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
index 013e051dc..a387389a1 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
@@ -178,6 +178,16 @@ public class AntStructure extends Task {
StringBuffer sb = new StringBuffer("").append(lSep);
+ sb.append("").append(lSep);
+ out.println(sb);
+ return;
+ }
+
Vector v = new Vector();
if (ih.supportsCharacters()) {
v.addElement("#PCDATA");
@@ -218,6 +228,8 @@ public class AntStructure extends Task {
if (type.equals(java.lang.Boolean.class) ||
type.equals(java.lang.Boolean.TYPE)) {
sb.append("%boolean; ");
+ } else if (org.apache.tools.ant.types.Reference.class.isAssignableFrom(type)) {
+ sb.append("IDREF ");
} else if (org.apache.tools.ant.EnumeratedAttribute.class.isAssignableFrom(type)) {
try {
EnumeratedAttribute ea =
diff --git a/src/main/org/apache/tools/ant/types/FileSet.java b/src/main/org/apache/tools/ant/types/FileSet.java
index 16758d149..ba3bfe564 100644
--- a/src/main/org/apache/tools/ant/types/FileSet.java
+++ b/src/main/org/apache/tools/ant/types/FileSet.java
@@ -57,7 +57,9 @@ package org.apache.tools.ant.types;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
+
import java.io.File;
+import java.util.Vector;
/**
* Moved out of MatchingTask to make it a standalone object that could
@@ -71,7 +73,8 @@ import java.io.File;
*/
public class FileSet {
- private PatternSet patterns = new PatternSet();
+ private PatternSet defaultPatterns = new PatternSet();
+ private Vector additionalPatterns = new Vector();
private File dir;
private boolean useDefaultExcludes = true;
@@ -95,21 +98,29 @@ public class FileSet {
}
public PatternSet createPatternSet() {
+ PatternSet patterns = new PatternSet();
+ additionalPatterns.addElement(patterns);
return patterns;
}
+ public Reference createPatternSetRef() {
+ Reference r = new Reference();
+ additionalPatterns.addElement(r);
+ return r;
+ }
+
/**
* add a name entry on the include list
*/
public PatternSet.NameEntry createInclude() {
- return patterns.createInclude();
+ return defaultPatterns.createInclude();
}
/**
* add a name entry on the exclude list
*/
public PatternSet.NameEntry createExclude() {
- return patterns.createExclude();
+ return defaultPatterns.createExclude();
}
/**
@@ -119,7 +130,7 @@ public class FileSet {
* @param includes the string containing the include patterns
*/
public void setIncludes(String includes) {
- patterns.setIncludes(includes);
+ defaultPatterns.setIncludes(includes);
}
/**
@@ -129,7 +140,7 @@ public class FileSet {
* @param excludes the string containing the exclude patterns
*/
public void setExcludes(String excludes) {
- patterns.setExcludes(excludes);
+ defaultPatterns.setExcludes(excludes);
}
/**
@@ -139,7 +150,7 @@ public class FileSet {
* the include patterns from.
*/
public void setIncludesfile(File incl) throws BuildException {
- patterns.setIncludesfile(incl);
+ defaultPatterns.setIncludesfile(incl);
}
/**
@@ -149,7 +160,7 @@ public class FileSet {
* the include patterns from.
*/
public void setExcludesfile(File excl) throws BuildException {
- patterns.setExcludesfile(excl);
+ defaultPatterns.setExcludesfile(excl);
}
/**
@@ -169,8 +180,25 @@ public class FileSet {
public DirectoryScanner getDirectoryScanner(Project p) {
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir(dir);
- ds.setIncludes(patterns.getIncludePatterns(p));
- ds.setExcludes(patterns.getExcludePatterns(p));
+
+ for (int i=0; i
Class to hold a reference to another object in the project. + * + * @author Stefan Bodewig + */ +public class Reference { + + private String refid; + + public Reference() { + super(); + } + + public Reference(String id) { + this(); + setRefId(id); + } + + public void setRefId(String id) { + refid = id; + } + + public String getRefId() { + return refid; + } + + public Object getReferencedObject(Project project) throws BuildException { + if (refid == null) { + throw new BuildException("No reference specified"); + } + + Object o = project.getReferences().get(refid); + if (o == null) { + throw new BuildException("Refernce "+refid+" not found."); + } + return o; + } +}