costin      2002/12/13 13:58:23

  Modified:    src/main/org/apache/tools/ant/types Description.java
  Log:
  Initial fix for description problems.
  
  If the original ProjectHelperImpl will be used, things will
  work as before.
  
  If not - Description will look into each target and do
  whatever it is supposed to do.
  
  Revision  Changes    Path
  1.9       +57 -1     
jakarta-ant/src/main/org/apache/tools/ant/types/Description.java
  
  Index: Description.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/types/Description.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Description.java  23 Jul 2002 07:54:56 -0000      1.8
  +++ Description.java  13 Dec 2002 21:58:23 -0000      1.9
  @@ -54,6 +54,12 @@
   
   package org.apache.tools.ant.types;
   
  +import org.apache.tools.ant.*;
  +import org.apache.tools.ant.helper.ProjectHelperImpl;
  +
  +import java.util.Hashtable;
  +import java.util.Enumeration;
  +import java.util.Vector;
   
   
   /**
  @@ -77,6 +83,13 @@
        * Adds descriptive text to the project.
        */
       public void addText(String text) {
  +
  +        ProjectHelper ph=ProjectHelper.getProjectHelper();
  +        if( ! ( ph instanceof ProjectHelperImpl )) {
  +            // New behavior for delayed task creation. Description
  +            // will be evaluated in Project.getDescription()
  +            return;
  +        }
           String currentDescription = getProject().getDescription();
           if (currentDescription == null) {
               getProject().setDescription(text);
  @@ -84,4 +97,47 @@
               getProject().setDescription(currentDescription + text);
           }
       }
  +
  +    public static String getDescription(Project project) {
  +        StringBuffer description=new StringBuffer();
  +        Vector targets=(Vector)project.getReference( "ant.targets");
  +        for( int i=0; i<targets.size(); i++ ) {
  +            Target t=(Target)targets.elementAt(i);
  +            concatDescriptions(project, t, description);
  +        }
  +        return description.toString();
  +    }
  +
  +    private static void concatDescriptions(Project project, Target t,
  +                                           StringBuffer description)
  +    {
  +        if( t==null ) return;
  +        Vector tasks= findElementInTarget(project, t, "description");
  +        if( tasks==null ) return;
  +        for( int i=0; i<tasks.size(); i++ ) {
  +            Task task=(Task)tasks.elementAt(i);
  +            if( ! ( task instanceof UnknownElement)) {
  +                continue;
  +            }
  +            UnknownElement ue=((UnknownElement)task);
  +            StringBuffer descComp=ue.getWrapper().getText();
  +            if( descComp != null ) {
  +                description.append( descComp );
  +            }
  +        }
  +    }
  +
  +    private static Vector findElementInTarget(Project project,
  +                                              Target t, String name )
  +    {
  +        Task tasks[]=t.getTasks();
  +        Vector elems=new Vector();
  +        for( int i=0; i<tasks.length; i++ ) {
  +            if( name.equals( tasks[i].getTaskName()) ) {
  +                elems.addElement(tasks[i]);
  +            }
  +        }
  +        return elems;
  +    }
  +
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to