Browse Source

reactivate mergePatterns in AbstractFileSet, implement clone in DataType and ProjectComponent

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@469781 13f79535-47bb-0310-9956-ffa450edef68
master
Antoine Levy-Lambert 18 years ago
parent
commit
351fe71fec
4 changed files with 40 additions and 25 deletions
  1. +12
    -1
      src/main/org/apache/tools/ant/ProjectComponent.java
  2. +5
    -10
      src/main/org/apache/tools/ant/types/AbstractFileSet.java
  3. +14
    -1
      src/main/org/apache/tools/ant/types/DataType.java
  4. +9
    -13
      src/main/org/apache/tools/ant/types/PatternSet.java

+ 12
- 1
src/main/org/apache/tools/ant/ProjectComponent.java View File

@@ -18,12 +18,13 @@


package org.apache.tools.ant; package org.apache.tools.ant;



/** /**
* Base class for components of a project, including tasks and data types. * Base class for components of a project, including tasks and data types.
* Provides common facilities. * Provides common facilities.
* *
*/ */
public abstract class ProjectComponent {
public abstract class ProjectComponent implements Cloneable {


/** /**
* Project object of this component. * Project object of this component.
@@ -122,4 +123,14 @@ public abstract class ProjectComponent {
} }
} }
} }
/**
* @since Ant 1.7
* @return a shallow copy of this projectcomponent.
*/
public Object clone() throws CloneNotSupportedException {
ProjectComponent pc = (ProjectComponent) super.clone();
pc.setLocation(getLocation());
pc.setProject(getProject());
return pc;
}
} }

+ 5
- 10
src/main/org/apache/tools/ant/types/AbstractFileSet.java View File

@@ -459,16 +459,12 @@ public abstract class AbstractFileSet extends DataType
} }
ds.setBasedir(dir); ds.setBasedir(dir);


final int count = additionalPatterns.size();
for (int i = 0; i < count; i++) {
Object o = additionalPatterns.elementAt(i);
defaultPatterns.append((PatternSet) o, p);
}
PatternSet ps = mergePatterns(p);
p.log(getDataTypeName() + ": Setup scanner in dir " + dir p.log(getDataTypeName() + ": Setup scanner in dir " + dir
+ " with " + defaultPatterns, Project.MSG_DEBUG);
+ " with " + ps, Project.MSG_DEBUG);


ds.setIncludes(defaultPatterns.getIncludePatterns(p));
ds.setExcludes(defaultPatterns.getExcludePatterns(p));
ds.setIncludes(ps.getIncludePatterns(p));
ds.setExcludes(ps.getExcludePatterns(p));
if (ds instanceof SelectorScanner) { if (ds instanceof SelectorScanner) {
SelectorScanner ss = (SelectorScanner) ds; SelectorScanner ss = (SelectorScanner) ds;
ss.setSelectors(getSelectors(p)); ss.setSelectors(getSelectors(p));
@@ -803,8 +799,7 @@ public abstract class AbstractFileSet extends DataType
if (isReference()) { if (isReference()) {
return getRef(p).mergePatterns(p); return getRef(p).mergePatterns(p);
} }
PatternSet ps = new PatternSet();
ps.append(defaultPatterns, p);
PatternSet ps = (PatternSet) defaultPatterns.clone();
final int count = additionalPatterns.size(); final int count = additionalPatterns.size();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
Object o = additionalPatterns.elementAt(i); Object o = additionalPatterns.elementAt(i);


+ 14
- 1
src/main/org/apache/tools/ant/types/DataType.java View File

@@ -37,7 +37,7 @@ import org.apache.tools.ant.util.IdentityStack;
* but not &lt;path&gt;).</p> * but not &lt;path&gt;).</p>
* *
*/ */
public abstract class DataType extends ProjectComponent {
public abstract class DataType extends ProjectComponent implements Cloneable {


/** /**
* The description the user has set. * The description the user has set.
@@ -352,5 +352,18 @@ public abstract class DataType extends ProjectComponent {
return d == null ? getDataTypeName() : getDataTypeName() + " " + d; return d == null ? getDataTypeName() : getDataTypeName() + " " + d;
} }


/**
* @since Ant 1.7
* @return a shallow copy of this DataType.
*/
public Object clone() throws CloneNotSupportedException {
DataType dt = (DataType) super.clone();
dt.setDescription(getDescription());
if (getRefid() != null) {
dt.setRefid(getRefid());
}
dt.setChecked(isChecked());
return dt;
}
} }



+ 9
- 13
src/main/org/apache/tools/ant/types/PatternSet.java View File

@@ -497,19 +497,15 @@ public class PatternSet extends DataType implements Cloneable {
* @return a clone of this patternset. * @return a clone of this patternset.
*/ */
public Object clone() { public Object clone() {
if (isReference()) {
return getRef(getProject()).clone();
} else {
try {
PatternSet ps = (PatternSet) super.clone();
ps.includeList = (Vector) includeList.clone();
ps.excludeList = (Vector) excludeList.clone();
ps.includesFileList = (Vector) includesFileList.clone();
ps.excludesFileList = (Vector) excludesFileList.clone();
return ps;
} catch (CloneNotSupportedException e) {
throw new BuildException(e);
}
try {
PatternSet ps = (PatternSet) super.clone();
ps.includeList = (Vector) includeList.clone();
ps.excludeList = (Vector) excludeList.clone();
ps.includesFileList = (Vector) includesFileList.clone();
ps.excludesFileList = (Vector) excludesFileList.clone();
return ps;
} catch (CloneNotSupportedException e) {
throw new BuildException(e);
} }
} }




Loading…
Cancel
Save