conor 2003/04/06 01:30:57
Modified: src/main/org/apache/tools/ant IntrospectionHelper.java
RuntimeConfigurable.java Task.java
UnknownElement.java
Log:
Fix up handling of TaskContainer configuration.
Revision Changes Path
1.51 +2 -1
ant/src/main/org/apache/tools/ant/IntrospectionHelper.java
Index: IntrospectionHelper.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/IntrospectionHelper.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -w -u -r1.50 -r1.51
--- IntrospectionHelper.java 1 Apr 2003 14:59:58 -0000 1.50
+++ IntrospectionHelper.java 6 Apr 2003 09:30:56 -0000 1.51
@@ -577,7 +577,8 @@
* @return true if the given nested element is supported
*/
public boolean supportsNestedElement(String elementName) {
- return nestedCreators.containsKey(elementName);
+ return nestedCreators.containsKey(elementName) ||
+ DynamicConfigurator.class.isAssignableFrom(bean);
}
/**
1.30 +11 -12
ant/src/main/org/apache/tools/ant/RuntimeConfigurable.java
Index: RuntimeConfigurable.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/RuntimeConfigurable.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -w -u -r1.29 -r1.30
--- RuntimeConfigurable.java 4 Apr 2003 13:51:11 -0000 1.29
+++ RuntimeConfigurable.java 6 Apr 2003 09:30:56 -0000 1.30
@@ -336,18 +336,9 @@
childTask.setRuntimeConfigurableWrapper(child);
}
- if (configureChildren) {
- if (child.wrappedObject instanceof Task) {
- Task childTask = (Task) child.wrappedObject;
-
- // we don't configure tasks of task containers These
- // we be configured at the time they are used.
- if (!(target instanceof TaskContainer)) {
- childTask.maybeConfigure();
- }
- } else {
+ if (configureChildren
+ && ih.supportsNestedElement(child.getElementTag())) {
child.maybeConfigure(p);
- }
Object container = wrappedObject;
if (container instanceof TaskAdapter) {
container = ((TaskAdapter) container).getProxy();
@@ -362,5 +353,13 @@
p.addReference(id, wrappedObject);
}
proxyConfigured = true;
+ }
+
+ /**
+ * Reconfigure the element, even if it has already been configured.
+ */
+ public void reconfigure(Project p) {
+ proxyConfigured = false;
+ maybeConfigure(p);
}
}
1.42 +10 -0 ant/src/main/org/apache/tools/ant/Task.java
Index: Task.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/Task.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -w -u -r1.41 -r1.42
--- Task.java 10 Feb 2003 14:13:30 -0000 1.41
+++ Task.java 6 Apr 2003 09:30:56 -0000 1.42
@@ -294,6 +294,16 @@
}
/**
+ * Force the task to be reconfigured from it's RuntimeConfigurable
+ *
+ */
+ public void reconfigure() {
+ if (wrapper != null) {
+ wrapper.reconfigure(getProject());
+ }
+ }
+
+ /**
* Handles a line of output by logging it with the INFO priority.
*
* @param line The line of output to log. Should not be
<code>null</code>.
1.45 +17 -34 ant/src/main/org/apache/tools/ant/UnknownElement.java
Index: UnknownElement.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/UnknownElement.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -w -u -r1.44 -r1.45
--- UnknownElement.java 2 Apr 2003 11:43:41 -0000 1.44
+++ UnknownElement.java 6 Apr 2003 09:30:56 -0000 1.45
@@ -127,12 +127,7 @@
if (realThing instanceof Task) {
Task task = (Task) realThing;
- task.setProject(project);
task.setRuntimeConfigurableWrapper(getWrapper());
- task.setLocation(this.getLocation());
- // UnknownElement always has an associated target
- task.setOwningTarget(this.getOwningTarget());
- task.init();
// For Script to work. Ugly
// The reference is replaced by RuntimeConfigurable
@@ -272,38 +267,26 @@
UnknownElement child = (UnknownElement) children.elementAt(i);
Object realChild = null;
- if (!ih.supportsNestedElement(child.getTag())
- && parent instanceof TaskContainer) {
- realChild = makeTask(child, childWrapper);
-
- if (realChild == null) {
- ih.throwNotSupported(getProject(), parent,
child.getTag());
- }
-
- // XXX DataTypes will be wrapped or treated like normal
components
- if (realChild instanceof Task) {
- Task task = (Task) realChild;
- ((TaskContainer) parent).addTask(task);
- task.setLocation(child.getLocation());
- // UnknownElement always has an associated target
- task.setOwningTarget(this.getOwningTarget());
- task.init();
- } else {
- // should not happen
- ih.throwNotSupported(getProject(), parent,
child.getTag());
- }
- } else {
+ if (ih.supportsNestedElement(child.getTag())) {
realChild
= ih.createElement(getProject(), parent, child.getTag());
- }
-
childWrapper.setProxy(realChild);
- if (parent instanceof TaskContainer
- && realChild instanceof Task) {
- ((Task)
realChild).setRuntimeConfigurableWrapper(childWrapper);
+ if (realChild instanceof Task) {
+ Task childTask = (Task) realChild;
+ childTask.setRuntimeConfigurableWrapper(childWrapper);
+ childTask.setTaskName(child.getTag());
+ childTask.setTaskType(child.getTag());
}
-
child.handleChildren(realChild, childWrapper);
+
+ } else if (!(parent instanceof TaskContainer)) {
+ ih.throwNotSupported(getProject(), parent, child.getTag());
+ } else {
+ // a task container - anything could happen - just add the
+ // child to the container
+ TaskContainer container = (TaskContainer) parent;
+ container.addTask(child);
+ }
}
}