You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by pe...@apache.org on 2003/11/11 13:01:26 UTC
cvs commit: ant/src/main/org/apache/tools/ant/taskdefs MacroDef.java
peterreilly 2003/11/11 04:01:26
Modified: src/main/org/apache/tools/ant/taskdefs MacroDef.java
Log:
Implement the sequential element of macrodef by a createSequential and
not a addTask()
Revision Changes Path
1.12 +72 -18 ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
Index: MacroDef.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- MacroDef.java 31 Oct 2003 09:51:24 -0000 1.11
+++ MacroDef.java 11 Nov 2003 12:01:26 -0000 1.12
@@ -64,20 +64,19 @@
import org.apache.tools.ant.ComponentHelper;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
+import org.apache.tools.ant.RuntimeConfigurable;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.TaskContainer;
import org.apache.tools.ant.UnknownElement;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-
/**
* Describe class <code>MacroDef</code> here.
*
* @author Peter Reilly
* @since Ant 1.6
*/
-public class MacroDef extends AntlibDefinition implements TaskContainer {
- private UnknownElement nestedTask;
+public class MacroDef extends AntlibDefinition {
+ private NestedSequential nestedSequential;
private String name;
private List attributes = new ArrayList();
private Map elements = new HashMap();
@@ -91,26 +90,81 @@
}
/**
- * Add a nested task to ExtendType
- * @param nestedTask Nested task/type to extend
+ * This is the sequential nested element of the macrodef.
+ *
+ * @return a sequential element to be configured.
*/
- public void addTask(Task nestedTask) {
- if (this.nestedTask != null) {
+ public NestedSequential createSequential() {
+ if (this.nestedSequential != null) {
throw new BuildException("Only one sequential allowed");
}
- UnknownElement ue = (UnknownElement) nestedTask;
- if (!ue.getNamespace().equals("")
- || !ue.getTag().equals("sequential")) {
- throw new BuildException("Unsupported tag " + ue.getQName());
+ this.nestedSequential = new NestedSequential();
+ return this.nestedSequential;
+ }
+
+ /**
+ * The class corresponding to the sequential nested element.
+ * This is a simple task container.
+ */
+ public static class NestedSequential implements TaskContainer {
+ private List nested = new ArrayList();
+
+ /**
+ * Add a task or type to the container.
+ *
+ * @param task an unknown element.
+ */
+ public void addTask(Task task) {
+ nested.add(task);
+ }
+
+ /**
+ * @return the list of unknown elements
+ */
+ public List getNested() {
+ return nested;
+ }
+
+ /**
+ * A compare function to compare this with another
+ * NestedSequential.
+ * It calls similar on the nested unknown elements.
+ *
+ * @param other the nested sequential to compare with.
+ * @return true if they are similar, false otherwise
+ */
+ public boolean similar(NestedSequential other) {
+ if (nested.size() != other.nested.size()) {
+ return false;
+ }
+ for (int i = 0; i < nested.size(); ++i) {
+ UnknownElement me = (UnknownElement) nested.get(i);
+ UnknownElement o = (UnknownElement) other.nested.get(i);
+ if (!me.similar(o)) {
+ return false;
+ }
+ }
+ return true;
}
- this.nestedTask = ue;
}
/**
- * @return the nested task
+ * Convert the nested sequential to an unknown element
+ * @return the nested sequential as an unknown element.
*/
public UnknownElement getNestedTask() {
- return nestedTask;
+ UnknownElement ret = new UnknownElement("sequential");
+ ret.setTaskName("sequential");
+ ret.setNamespace("");
+ ret.setQName("sequential");
+ new RuntimeConfigurable(ret, "sequential");
+ for (int i = 0; i < nestedSequential.getNested().size(); ++i) {
+ UnknownElement e =
+ (UnknownElement) nestedSequential.getNested().get(i);
+ ret.addChild(e);
+ ret.getWrapper().addChild(e.getWrapper());
+ }
+ return ret;
}
/**
@@ -188,8 +242,8 @@
*
*/
public void execute() {
- if (nestedTask == null) {
- throw new BuildException("Missing nested element");
+ if (nestedSequential == null) {
+ throw new BuildException("Missing sequential element");
}
if (name == null) {
throw new BuildException("Name not specified");
@@ -387,7 +441,7 @@
}
}
- if (!nestedTask.similar(other.nestedTask)) {
+ if (!nestedSequential.similar(other.nestedSequential)) {
return false;
}
if (!attributes.equals(other.attributes)) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org