donaldp     02/02/06 05:19:31

  Added:       proposal/myrmidon/src/java/org/apache/antlib/core
                        IfTask.java
  Log:
  Add a simple if task that will eventually help with ant1.x compat
  
  Revision  Changes    Path
  1.1                  
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/core/IfTask.java
  
  Index: IfTask.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included  with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.antlib.core;
  
  import java.util.ArrayList;
  import org.apache.avalon.excalibur.i18n.ResourceManager;
  import org.apache.avalon.excalibur.i18n.Resources;
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.myrmidon.api.TaskException;
  import org.apache.myrmidon.framework.AbstractContainerTask;
  import org.apache.myrmidon.framework.Condition;
  import org.apache.myrmidon.interfaces.executor.ExecutionFrame;
  import org.apache.myrmidon.interfaces.executor.Executor;
  
  /**
   * A simple task to test a supplied condition. If the condition is true
   * then it will execute the inner tasks, else it won't.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/06 13:19:31 $
   * @ant:task name="if"
   */
  public class IfTask
      extends AbstractContainerTask
  {
      private static final Resources REZ =
          ResourceManager.getPackageResources( IfTask.class );
  
      private Condition m_condition;
      private ArrayList m_tasks = new ArrayList();
  
      /**
       * Set if clause on pattern.
       *
       * @param condition the condition
       * @exception TaskException if an error occurs
       */
      public void setTest( final String condition )
          throws TaskException
      {
          verifyConditionNull();
          m_condition = new Condition( true, condition );
      }
  
      /**
       * Set unless clause of pattern.
       *
       * @param condition the unless clause
       * @exception TaskException if an error occurs
       */
      public void setNotTest( final String condition )
          throws TaskException
      {
          verifyConditionNull();
          m_condition = new Condition( false, condition );
      }
  
      public void add( final Configuration task )
      {
          m_tasks.add( task );
      }
  
      public void execute()
          throws TaskException
      {
          if( null == m_condition )
          {
              final String message = REZ.getString( "if.no-condition.error" );
              throw new TaskException( message );
          }
  
          final Configuration[] tasks =
              (Configuration[])m_tasks.toArray( new Configuration[ 
m_tasks.size() ] );
  
          final ExecutionFrame frame = (ExecutionFrame)getService( 
ExecutionFrame.class );
          final Executor executor = (Executor)getService( Executor.class );
  
          for( int i = 0; i < tasks.length; i++ )
          {
              final Configuration task = tasks[ i ];
              executor.execute( task, frame );
          }
      }
  
      public String toString()
      {
          return "If['" + m_condition + "]";
      }
  
      /**
       * Utility method to make sure condition unset.
       * Made so that it is not possible for both if and unless to be set.
       *
       * @exception TaskException if an error occurs
       */
      private void verifyConditionNull()
          throws TaskException
      {
          if( null != m_condition )
          {
              final String message = REZ.getString( "if.ifelse-duplicate.error" 
);
              throw new TaskException( message );
          }
      }
  }
  
  
  

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

Reply via email to