From aa373b9f5e7548bf96a51588c9e67b8de6c05404 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sat, 29 Nov 2008 18:03:29 +0000 Subject: [PATCH] simplify git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@721698 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/types/ArchiveFileSet.java | 4 +--- .../org/apache/tools/ant/types/DataType.java | 20 +++++++++++++++++++ src/main/org/apache/tools/ant/types/Path.java | 4 +--- .../apache/tools/ant/types/XMLCatalog.java | 8 ++------ .../tools/ant/types/resources/Archives.java | 9 ++------- .../BaseResourceCollectionContainer.java | 4 +--- .../BaseResourceCollectionWrapper.java | 4 +--- .../resources/MappedResourceCollection.java | 8 ++------ .../types/resources/ResourceDecorator.java | 4 +--- .../tools/ant/types/resources/Resources.java | 2 +- .../tools/ant/types/resources/Restrict.java | 4 +--- .../tools/ant/types/resources/Sort.java | 4 +--- .../tools/ant/types/resources/Tokens.java | 5 ++--- .../DelegatedResourceComparator.java | 5 ++--- .../types/resources/selectors/Compare.java | 8 ++------ .../selectors/ResourceSelectorContainer.java | 4 +--- 16 files changed, 41 insertions(+), 56 deletions(-) diff --git a/src/main/org/apache/tools/ant/types/ArchiveFileSet.java b/src/main/org/apache/tools/ant/types/ArchiveFileSet.java index 15c65aa58..ba9cebf6c 100755 --- a/src/main/org/apache/tools/ant/types/ArchiveFileSet.java +++ b/src/main/org/apache/tools/ant/types/ArchiveFileSet.java @@ -525,9 +525,7 @@ public abstract class ArchiveFileSet extends FileSet { super.dieOnCircularReference(stk, p); } else { if (src != null) { - stk.push(src); - invokeCircularReferenceCheck(src, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck(src, stk, p); } setChecked(true); } diff --git a/src/main/org/apache/tools/ant/types/DataType.java b/src/main/org/apache/tools/ant/types/DataType.java index 6e79590a7..f7f919017 100644 --- a/src/main/org/apache/tools/ant/types/DataType.java +++ b/src/main/org/apache/tools/ant/types/DataType.java @@ -171,6 +171,26 @@ public abstract class DataType extends ProjectComponent implements Cloneable { dt.dieOnCircularReference(stk, p); } + /** + * Allow DataTypes outside org.apache.tools.ant.types to indirectly call + * dieOnCircularReference on nested DataTypes. + * + *

Pushes dt on the stack, runs dieOnCircularReference and pops + * it again.

+ * @param dt the DataType to check. + * @param stk the stack of references to check. + * @param p the project to use to dereference the references. + * @throws BuildException on error. + * @since Ant 1.8.0 + */ + public static void pushAndInvokeCircularReferenceCheck(DataType dt, + Stack stk, + Project p) { + stk.push(dt); + dt.dieOnCircularReference(stk, p); + stk.pop(); + } + /** * Performs the check for circular references and returns the * referenced object. diff --git a/src/main/org/apache/tools/ant/types/Path.java b/src/main/org/apache/tools/ant/types/Path.java index 60b9c5b6f..cc97e28bc 100644 --- a/src/main/org/apache/tools/ant/types/Path.java +++ b/src/main/org/apache/tools/ant/types/Path.java @@ -478,9 +478,7 @@ public class Path extends DataType implements Cloneable, ResourceCollection { super.dieOnCircularReference(stk, p); } else { if (union != null) { - stk.push(union); - invokeCircularReferenceCheck(union, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck(union, stk, p); } setChecked(true); } diff --git a/src/main/org/apache/tools/ant/types/XMLCatalog.java b/src/main/org/apache/tools/ant/types/XMLCatalog.java index 739dac134..1d055712e 100644 --- a/src/main/org/apache/tools/ant/types/XMLCatalog.java +++ b/src/main/org/apache/tools/ant/types/XMLCatalog.java @@ -461,14 +461,10 @@ public class XMLCatalog extends DataType super.dieOnCircularReference(stk, p); } else { if (classpath != null) { - stk.push(classpath); - invokeCircularReferenceCheck(classpath, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck(classpath, stk, p); } if (catalogPath != null) { - stk.push(catalogPath); - invokeCircularReferenceCheck(catalogPath, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck(catalogPath, stk, p); } setChecked(true); } diff --git a/src/main/org/apache/tools/ant/types/resources/Archives.java b/src/main/org/apache/tools/ant/types/resources/Archives.java index 106edd666..3cde26d42 100644 --- a/src/main/org/apache/tools/ant/types/resources/Archives.java +++ b/src/main/org/apache/tools/ant/types/resources/Archives.java @@ -183,15 +183,10 @@ public class Archives extends DataType if (isReference()) { super.dieOnCircularReference(stk, p); } else { - checkForCircularReference(zips, stk, p); - checkForCircularReference(tars, stk, p); + pushAndInvokeCircularReferenceCheck(zips, stk, p); + pushAndInvokeCircularReferenceCheck(tars, stk, p); setChecked(true); } } - protected void checkForCircularReference(DataType t, Stack stk, Project p) { - stk.push(t); - invokeCircularReferenceCheck(t, stk, p); - stk.pop(); - } } \ No newline at end of file diff --git a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java index 9d3e1ec3a..e2e6d42bd 100644 --- a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java +++ b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java @@ -185,9 +185,7 @@ public abstract class BaseResourceCollectionContainer for (Iterator i = rc.iterator(); i.hasNext();) { Object o = i.next(); if (o instanceof DataType) { - stk.push(o); - invokeCircularReferenceCheck((DataType) o, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck((DataType) o, stk, p); } } setChecked(true); diff --git a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java index 23027822d..1de3518cf 100644 --- a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java +++ b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java @@ -147,9 +147,7 @@ public abstract class BaseResourceCollectionWrapper super.dieOnCircularReference(stk, p); } else { if (rc instanceof DataType) { - stk.push(rc); - invokeCircularReferenceCheck((DataType) rc, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck((DataType) rc, stk, p); } setChecked(true); } diff --git a/src/main/org/apache/tools/ant/types/resources/MappedResourceCollection.java b/src/main/org/apache/tools/ant/types/resources/MappedResourceCollection.java index a0e563438..583b6be42 100644 --- a/src/main/org/apache/tools/ant/types/resources/MappedResourceCollection.java +++ b/src/main/org/apache/tools/ant/types/resources/MappedResourceCollection.java @@ -161,14 +161,10 @@ public class MappedResourceCollection } else { checkInitialized(); if (mapper != null) { - stk.push(mapper); - invokeCircularReferenceCheck(mapper, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck(mapper, stk, p); } if (nested instanceof DataType) { - stk.push(nested); - invokeCircularReferenceCheck((DataType) nested, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck((DataType) nested, stk, p); } setChecked(true); } diff --git a/src/main/org/apache/tools/ant/types/resources/ResourceDecorator.java b/src/main/org/apache/tools/ant/types/resources/ResourceDecorator.java index 2e8ddfd0a..98d72a11a 100644 --- a/src/main/org/apache/tools/ant/types/resources/ResourceDecorator.java +++ b/src/main/org/apache/tools/ant/types/resources/ResourceDecorator.java @@ -209,9 +209,7 @@ public abstract class ResourceDecorator extends Resource { if (isReference()) { super.dieOnCircularReference(stack, project); } else { - stack.push(resource); - invokeCircularReferenceCheck(resource, stack, project); - stack.pop(); + pushAndInvokeCircularReferenceCheck(resource, stack, project); setChecked(true); } } diff --git a/src/main/org/apache/tools/ant/types/resources/Resources.java b/src/main/org/apache/tools/ant/types/resources/Resources.java index 629dde4df..ffa0419c0 100644 --- a/src/main/org/apache/tools/ant/types/resources/Resources.java +++ b/src/main/org/apache/tools/ant/types/resources/Resources.java @@ -208,7 +208,7 @@ public class Resources extends DataType implements ResourceCollection { for (Iterator i = getNested().iterator(); i.hasNext();) { Object o = i.next(); if (o instanceof DataType) { - invokeCircularReferenceCheck((DataType) o, stk, p); + pushAndInvokeCircularReferenceCheck((DataType) o, stk, p); } } setChecked(true); diff --git a/src/main/org/apache/tools/ant/types/resources/Restrict.java b/src/main/org/apache/tools/ant/types/resources/Restrict.java index bc5514b08..011813ef5 100644 --- a/src/main/org/apache/tools/ant/types/resources/Restrict.java +++ b/src/main/org/apache/tools/ant/types/resources/Restrict.java @@ -157,9 +157,7 @@ outer: for (Iterator ri = w.getResourceCollection().iterator(); ri.hasNext( super.dieOnCircularReference(stk, p); if (!isReference()) { - stk.push(w); - invokeCircularReferenceCheck(w, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck(w, stk, p); setChecked(true); } } diff --git a/src/main/org/apache/tools/ant/types/resources/Sort.java b/src/main/org/apache/tools/ant/types/resources/Sort.java index fb6a88a83..a4a78ba5d 100644 --- a/src/main/org/apache/tools/ant/types/resources/Sort.java +++ b/src/main/org/apache/tools/ant/types/resources/Sort.java @@ -144,9 +144,7 @@ public class Sort extends BaseResourceCollectionWrapper { if (isReference()) { super.dieOnCircularReference(stk, p); } else { - stk.push(comp); - DataType.invokeCircularReferenceCheck(comp, stk, p); - stk.pop(); + DataType.pushAndInvokeCircularReferenceCheck(comp, stk, p); setChecked(true); } } diff --git a/src/main/org/apache/tools/ant/types/resources/Tokens.java b/src/main/org/apache/tools/ant/types/resources/Tokens.java index febc50a80..3d56d6e16 100644 --- a/src/main/org/apache/tools/ant/types/resources/Tokens.java +++ b/src/main/org/apache/tools/ant/types/resources/Tokens.java @@ -121,9 +121,8 @@ public class Tokens extends BaseResourceCollectionWrapper { super.dieOnCircularReference(stk, p); } else { if (tokenizer instanceof DataType) { - stk.push(tokenizer); - invokeCircularReferenceCheck((DataType) tokenizer, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck((DataType) tokenizer, stk, + p); } setChecked(true); } diff --git a/src/main/org/apache/tools/ant/types/resources/comparators/DelegatedResourceComparator.java b/src/main/org/apache/tools/ant/types/resources/comparators/DelegatedResourceComparator.java index a6ea34f09..8e75970d4 100644 --- a/src/main/org/apache/tools/ant/types/resources/comparators/DelegatedResourceComparator.java +++ b/src/main/org/apache/tools/ant/types/resources/comparators/DelegatedResourceComparator.java @@ -114,9 +114,8 @@ s. for (Iterator i = v.iterator(); i.hasNext();) { Object o = i.next(); if (o instanceof DataType) { - stk.push(o); - invokeCircularReferenceCheck((DataType) o, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck((DataType) o, stk, + p); } } } diff --git a/src/main/org/apache/tools/ant/types/resources/selectors/Compare.java b/src/main/org/apache/tools/ant/types/resources/selectors/Compare.java index cfbce231c..e42b4d8c1 100644 --- a/src/main/org/apache/tools/ant/types/resources/selectors/Compare.java +++ b/src/main/org/apache/tools/ant/types/resources/selectors/Compare.java @@ -137,13 +137,9 @@ public class Compare extends DataType implements ResourceSelector { super.dieOnCircularReference(stk, p); } else { if (control != null) { - stk.push(control); - DataType.invokeCircularReferenceCheck(control, stk, p); - stk.pop(); + DataType.pushAndInvokeCircularReferenceCheck(control, stk, p); } - stk.push(comp); - DataType.invokeCircularReferenceCheck(comp, stk, p); - stk.pop(); + DataType.pushAndInvokeCircularReferenceCheck(comp, stk, p); setChecked(true); } } diff --git a/src/main/org/apache/tools/ant/types/resources/selectors/ResourceSelectorContainer.java b/src/main/org/apache/tools/ant/types/resources/selectors/ResourceSelectorContainer.java index db4edac9e..d519750f7 100755 --- a/src/main/org/apache/tools/ant/types/resources/selectors/ResourceSelectorContainer.java +++ b/src/main/org/apache/tools/ant/types/resources/selectors/ResourceSelectorContainer.java @@ -118,9 +118,7 @@ public class ResourceSelectorContainer extends DataType { for (Iterator i = v.iterator(); i.hasNext();) { Object o = i.next(); if (o instanceof DataType) { - stk.push(o); - invokeCircularReferenceCheck((DataType) o, stk, p); - stk.pop(); + pushAndInvokeCircularReferenceCheck((DataType) o, stk, p); } } setChecked(true);