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);
  +            }                
           }
       }
   
  
  
  

Reply via email to