werken      2002/06/12 10:09:41

  Modified:    jelly    build.xml
               jelly/src/java/org/apache/commons/jelly/tags/ant
                        TaskTag.java
               jelly/src/java/org/apache/commons/jelly/tags/werkz
                        GoalTag.java PreGoalTag.java
               jelly/src/test/org/apache/commons/jelly/werkz example.jelly
  Log:
  * Improved handling of the <ant:echo> tag.
  
  * Integrated a prereq attribute on <goal>, like ant's depend attr on <target>.
  
  * Made example spiffy.
  
  Revision  Changes    Path
  1.45      +1 -1      jakarta-commons-sandbox/jelly/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/jelly/build.xml,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- build.xml 12 Jun 2002 16:26:00 -0000      1.44
  +++ build.xml 12 Jun 2002 17:09:41 -0000      1.45
  @@ -345,8 +345,8 @@
       <java classname="org.apache.commons.jelly.Jelly" fork="yes">
         <classpath refid="callback.classpath"/>
         <arg value="src/test/org/apache/commons/jelly/werkz/example.jelly"/> 
  -      <arg value="compile"/> 
         <arg value="test"/> 
  +      <arg value="compile"/>
       </java>
      </target>
   
  
  
  
  1.7       +15 -5     
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/ant/TaskTag.java
  
  Index: TaskTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/ant/TaskTag.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TaskTag.java      5 Jun 2002 17:14:38 -0000       1.6
  +++ TaskTag.java      12 Jun 2002 17:09:41 -0000      1.7
  @@ -71,6 +71,7 @@
   import org.apache.tools.ant.Task;
   import org.apache.tools.ant.Project;
   import org.apache.tools.ant.ProjectHelper;
  +import org.apache.tools.ant.taskdefs.Echo;
   
   /** 
    * A tag which invokes an Ant Task
  @@ -97,11 +98,20 @@
           
           task.init();
   
  -        // run the body first to configure the task via nested
  -        getBody().run(context, output);
  -
  -        // task.execute();   
  -        task.perform();   
  +        if ( "echo".equals( task.getTaskName() ) )
  +        {
  +            Echo echoTask = (Echo) task;
  +
  +            echoTask.addText( getBodyText() );
  +            echoTask.perform();   
  +            echoTask.setMessage( "" );
  +        }
  +        else
  +        {
  +            // run the body first to configure the task via nested
  +            getBody().run(context, output);
  +            task.perform();   
  +        }
       }
       
       // TaskSource interface
  
  
  
  1.2       +55 -15    
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/werkz/GoalTag.java
  
  Index: GoalTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/werkz/GoalTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- GoalTag.java      12 Jun 2002 06:07:29 -0000      1.1
  +++ GoalTag.java      12 Jun 2002 17:09:41 -0000      1.2
  @@ -58,10 +58,14 @@
   
   package org.apache.commons.jelly.tags.werkz;
   
  -import com.werken.werkz.DefaultGoal;
  +import com.werken.werkz.Goal;
  +import com.werken.werkz.Action;
  +import com.werken.werkz.DefaultAction;
  +import com.werken.werkz.CyclicGoalChainException;
   
   import java.util.Iterator;
   import java.util.List;
  +import java.util.StringTokenizer;
   
   import org.apache.commons.jelly.JellyException;
   import org.apache.commons.jelly.XMLOutput;
  @@ -83,6 +87,8 @@
       
       /** the name of the target */
       private String name;
  +
  +    private String prereqs;
       
       public GoalTag() {
       }
  @@ -99,20 +105,20 @@
           
           log.debug("doTag(..):" + name);
   
  -        // lets register a new goal...        
  -             DefaultGoal goal = new DefaultGoal(name) {
  -                     public void performAction() throws Exception {
  -                             // lets run the body
  -                             log.debug("Running target: " + name);
  -                             getBody().run(context, output);
  -                     }
  -            public boolean requiresAction() {
  -                return true;
  -            }
  -             };
  -        getProject().addGoal(goal);
  -    }
  +        Goal goal = getProject().getGoal( getName(),
  +                                          true );
  +
  +        addPrereqs( goal );
   
  +        Action action = new DefaultAction() {
  +                public void performAction() throws Exception {
  +                    log.debug("Running action of target: " + getName() );
  +                    getBody().run(context, output);
  +                }
  +            };
  +
  +        goal.setAction( action );
  +    }
   
       
       // Properties
  @@ -130,5 +136,39 @@
       public void setName(String name) {
           log.debug("setName(" + name + ")" );
           this.name = name;
  +    }
  +
  +    public void setPrereqs(String prereqs) {
  +        this.prereqs = prereqs;
  +    }
  +
  +    public String getPrereqs() {
  +        return this.prereqs;
  +    }
  +        
  +
  +    protected void addPrereqs(Goal goal) throws CyclicGoalChainException
  +    {
  +        String prereqs = getPrereqs();
  +
  +        if ( prereqs == null )
  +        {
  +            return;
  +        }
  +
  +        StringTokenizer tokens = new StringTokenizer( getPrereqs(),
  +                                                      "," );
  +
  +        String eachToken = null;
  +        Goal   eachPrereq = null;
  +
  +        while ( tokens.hasMoreTokens() )
  +        {
  +            eachToken = tokens.nextToken().trim();
  +
  +            eachPrereq = getProject().getGoal( eachToken, true );
  +
  +            goal.addPrerequisite( eachPrereq );
  +        }
       }
   }
  
  
  
  1.2       +2 -2      
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/werkz/PreGoalTag.java
  
  Index: PreGoalTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/werkz/PreGoalTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PreGoalTag.java   12 Jun 2002 06:07:29 -0000      1.1
  +++ PreGoalTag.java   12 Jun 2002 17:09:41 -0000      1.2
  @@ -93,7 +93,7 @@
               new PreGoalCallback() {
                   public void firePreGoal(Goal goal) throws Exception {
                       // lets run the body
  -                    log.info( "Running pre target: " + getName() );
  +                    log.debug( "Running pre target: " + getName() );
                       getBody().run( context, output);               
                   }                
               }
  
  
  
  1.4       +13 -6     
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/werkz/example.jelly
  
  Index: example.jelly
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/werkz/example.jelly,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- example.jelly     12 Jun 2002 06:07:29 -0000      1.3
  +++ example.jelly     12 Jun 2002 17:09:41 -0000      1.4
  @@ -4,15 +4,15 @@
   
     <!-- the following could be in the mediator of Maven -->
     <werkz:goal name="init">
  -     <echo message="Initializing the project!"/>
  +     <echo message="Running init goal's action"/>
     </werkz:goal>
                
  -  <werkz:goal name="compile">
  -     <echo message="About to compile the project!"/>
  +  <werkz:goal name="compile" prereqs="init">
  +     <echo message="Running compile goal's action"/>
     </werkz:goal>
   
  -  <werkz:goal name="test">
  -     <echo message="About to run the tests!"/>
  +  <werkz:goal name="test" prereqs="init,compile">
  +     <echo message="Running test goal's action"/>
     </werkz:goal>
   
   
  @@ -24,8 +24,15 @@
   
     <!-- call all the targets made on the command line -->     
     <werkz:attain>
  +        <echo>-------------------------------------</echo>
  +           <echo>jelly+werkz+ant-taskdefs</echo>
  +        <echo>-------------------------------------</echo>
         <j:forEach var="arg" items="${args}" begin="1">
  -          <werkz:attainGoal name="${arg}"/>
  +        <echo>begin target [<j:expr value="${arg}"/>]</echo>
  +        <echo>-------------------------------------</echo>
  +           <werkz:attainGoal name="${arg}"/>
  +        <echo>end target [<j:expr value="${arg}"/>]</echo>
  +        <echo>-------------------------------------</echo>
         </j:forEach>
     </werkz:attain>
        
  
  
  

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

Reply via email to