ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dona...@apache.org
Subject cvs commit: jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic AntCall.java Echo.java Pattern.java Property.java StringToByteConverter.java StringToClassConverter.java StringToDoubleConverter.java StringToFileConverter.java StringToFloatConverter.java StringToIntegerConverter.java StringToLongConverter.java StringToShortConverter.java StringToURLConverter.java
Date Wed, 07 Feb 2001 05:37:16 GMT
donaldp     01/02/06 21:37:16

  Added:       proposal/myrmidon/src/java/org/apache/ant/modules/basic
                        AntCall.java Echo.java Pattern.java Property.java
                        StringToByteConverter.java
                        StringToClassConverter.java
                        StringToDoubleConverter.java
                        StringToFileConverter.java
                        StringToFloatConverter.java
                        StringToIntegerConverter.java
                        StringToLongConverter.java
                        StringToShortConverter.java
                        StringToURLConverter.java
  Log:
  Module for basic functionality useful in almost all domains
  
  Revision  Changes    Path
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java
  
  Index: AntCall.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import java.util.ArrayList;
  import org.apache.ant.AntException;
  import org.apache.ant.project.Project;
  import org.apache.ant.project.ProjectEngine;
  import org.apache.ant.tasklet.AbstractTasklet;
  import org.apache.ant.tasklet.DefaultTaskletContext;
  import org.apache.ant.tasklet.TaskletContext;
  import org.apache.avalon.ComponentManager;
  import org.apache.avalon.ComponentManagerException;
  import org.apache.avalon.Composer;
  import org.apache.avalon.Context;
  
  /**
   * This is abstract base class for tasklets.
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class AntCall 
      extends AbstractTasklet
      implements Composer
  {
      protected ProjectEngine         m_projectEngine;
      protected Project               m_project;
      protected String                m_target;
      protected ArrayList             m_properties     = new ArrayList();
      protected TaskletContext        m_childContext;
      protected ComponentManager      m_componentManager;
  
      public void contextualize( final Context context )
      {
          super.contextualize( context );
          m_childContext = new DefaultTaskletContext( getContext() );
      } 
  
      public void compose( final ComponentManager componentManager )
          throws ComponentManagerException
      {
          m_componentManager = componentManager;
          m_projectEngine = (ProjectEngine)componentManager.
              lookup( "org.apache.ant.project.ProjectEngine" );
          m_project = (Project)componentManager.lookup( "org.apache.ant.project.Project" );
      }
  
      public void setTarget( final String target )
      {
          m_target = target;
      }
  
      public Property createParam()
          throws Exception
      {
          final Property property = new Property();
          property.setLogger( getLogger() );
          property.contextualize( m_childContext );
          property.compose( m_componentManager );
          m_properties.add( property );
          return property;
      }
  
      public void run()
          throws AntException
      {
          if( null == m_target )
          {
              throw new AntException( "Target attribute must be specified" );
          }
  
          final int size = m_properties.size();
          for( int i = 0; i < size; i++ )
          {
              final Property property = (Property)m_properties.get( i );
              property.run();
          }
  
          getLogger().info( "Calling target " + m_target );
          m_projectEngine.execute( m_project, m_target, m_childContext );
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java
  
  Index: Echo.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.AntException;
  import org.apache.ant.tasklet.AbstractTasklet;
  
  /**
   * This is the echo task to display a message.
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class Echo 
      extends AbstractTasklet
  {
      protected String              m_message;
  
      public void setMessage( final String message )
      {
          m_message = message;
      }
  
      public void run()
          throws AntException
      {
          getLogger().warn( m_message );
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Pattern.java
  
  Index: Pattern.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.AntException;
  import org.apache.ant.tasklet.DataType;
  import org.apache.ant.util.Condition;
  
  /**
   * Basic data type for holding patterns.
   * 
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class Pattern
      implements DataType
  {
      protected String         m_name;
      protected Condition      m_condition;
  
      /**
       * Retrieve name (aka value) of pattern.
       *
       * @return the name/value of pattern
       */
      public String getName()
      {
          return m_name;
      }
      
      /**
       * Get condition associated with pattern if any.
       *
       * @return the Condition
       */
      public Condition getCondition()
      {
          return m_condition;
      }
      
      /**
       * Setter method for name/value of pattern.
       * Conforms to ant setter patterns
       *
       * @param name the value
       */
      public void setName( final String name )
      {
          m_name = name;
      }
  
      /**
       * Set if clause on pattern.
       *
       * @param condition the condition
       * @exception AntException if an error occurs
       */
      public void setIf( final String condition )
          throws AntException
      {
          verifyConditionNull();
          m_condition = new Condition( true, condition );
      }
  
      /**
       * Set unless clause of pattern.
       *
       * @param condition the unless clause
       * @exception AntException if an error occurs
       */
      public void setUnless( final String condition )
          throws AntException
      {
          verifyConditionNull();
          m_condition = new Condition( false, condition );
      }
  
      /**
       * Utility method to make sure condition unset.
       * Made so that it is not possible for both if and unless to be set.
       *
       * @exception AntException if an error occurs
       */
      protected void verifyConditionNull()
          throws AntException
      {
          if( null != m_condition )
          {
              throw new AntException( "Can only set one of if/else for pattern data type"
);
          }
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java
  
  Index: Property.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import java.util.Iterator;
  import org.apache.ant.AntException;
  import org.apache.ant.configuration.Configurable;
  import org.apache.ant.configuration.Configuration;
  import org.apache.ant.configuration.Configurer;
  import org.apache.ant.convert.Converter;
  import org.apache.ant.tasklet.DataType;
  import org.apache.ant.tasklet.engine.DataTypeEngine;
  import org.apache.ant.tasklet.AbstractTasklet;
  import org.apache.ant.tasklet.TaskletContext;
  import org.apache.ant.tasklet.engine.TaskletEngine;
  import org.apache.avalon.ComponentManager;
  import org.apache.avalon.ComponentManagerException;
  import org.apache.avalon.Composer;
  import org.apache.avalon.ConfigurationException;
  import org.apache.avalon.Resolvable;
  
  /**
   * This is the property "task" to declare a binding of a datatype to a name.
   * 
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class Property 
      extends AbstractTasklet
      implements Configurable, Composer
  {
      protected String              m_name;
      protected Object              m_value;
      protected boolean             m_localScope     = true;
      protected DataTypeEngine      m_engine;
      protected Converter           m_converter;
      protected Configurer          m_configurer;
      
      public void compose( final ComponentManager componentManager )
          throws ComponentManagerException
      {
          m_configurer = (Configurer)componentManager.
              lookup( "org.apache.ant.configuration.Configurer" );
  
          m_engine = (DataTypeEngine)componentManager.
              lookup( "org.apache.ant.tasklet.engine.DataTypeEngine" );
  
          m_converter = (Converter)componentManager.lookup( "org.apache.ant.convert.Converter"
);
      }
  
      public void configure( final Configuration configuration )
          throws ConfigurationException
      {
          final Iterator attributes = configuration.getAttributeNames();
  
          while( attributes.hasNext() )
          {
              final String name = (String)attributes.next();
              final String value = configuration.getAttribute( name );
  
              final Object object = getContext().resolveValue( value );
  
              if( null == object )
              {
                  throw new AntException( "Value for attribute " + name + "resolved to null"
);
              }
  
              if( name.equals( "name" ) )
              {
                  try 
                  {
                      final String convertedValue = 
                          (String)m_converter.convert( String.class, object, getContext()
);
                      setName( convertedValue );
                  }
                  catch( final Exception e )
                  {
                      throw new ConfigurationException( "Error converting value", e );
                  }
              }
              else if( name.equals( "value" ) )
              {
                  setValue( object );
              }
              else if( name.equals( "local-scope" ) ) 
              {
                  try 
                  {
                      final Boolean localScope = 
                          (Boolean)m_converter.convert( Boolean.class, object, getContext()
);
                      setLocalScope( Boolean.TRUE == localScope ); 
                  }
                  catch( final Exception e )
                  {
                      throw new ConfigurationException( "Error converting value", e );
                  }
              }
              else
              {
                  throw new ConfigurationException( "Unknown attribute " + name );
              }
          }
  
          final Iterator children = configuration.getChildren();
          while( children.hasNext() )
          {
              final Configuration child = (Configuration)children.next();
  
              try
              {
                  final DataType value = m_engine.createDataType( child.getName() );
                  setValue( value );
                  m_configurer.configure( value, child, getContext() );
              }
              catch( final Exception e )
              {
                  throw new ConfigurationException( "Unable to set datatype", e );
              }
          }
      }
  
      public void setName( final String name )
      {
          m_name = name;
      }
      
      public void setValue( final Object value )
          throws AntException
      {
          if( null != m_value )
          {
              throw new AntException( "Value can not be set multiple times" );
          }
  
          m_value = value;
      }
      
      public void setLocalScope( final boolean localScope )
      {
          m_localScope = localScope;
      }
  
      public void run()
          throws AntException
      {
          if( null == m_name )
          {
              throw new AntException( "Name must be specified" );
          }
  
          if( null == m_value )
          {
              throw new AntException( "Value must be specified" );
          }
  
          final TaskletContext context = getContext();
  
          Object value = m_value;
  
          if( value instanceof String )
          {
              value = context.resolveValue( (String)value );
          }
  
          while( null != value && value instanceof Resolvable )
          {
              value = ((Resolvable)value).resolve( context );
          }
  
          if( m_localScope )
          {
              context.setProperty( m_name, value );
          }
          else
          {
              context.setProperty( m_name, value, TaskletContext.PARENT );
          }
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToByteConverter.java
  
  Index: StringToByteConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to byte converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToByteConverter
      extends AbstractConverter
  {
      public StringToByteConverter()
      {
          super( String.class, Byte.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return new Byte( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToClassConverter.java
  
  Index: StringToClassConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to class converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToClassConverter
      extends AbstractConverter
  {
      public StringToClassConverter()
      {
          super( String.class, Class.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return Class.forName( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToDoubleConverter.java
  
  Index: StringToDoubleConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to double converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToDoubleConverter
      extends AbstractConverter
  {
      public StringToDoubleConverter()
      {
          super( String.class, Double.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return new Double( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java
  
  Index: StringToFileConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import java.io.File;
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.ant.tasklet.TaskletContext;
  import org.apache.avalon.Context;
  
  /**
   * String to file converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToFileConverter
      extends AbstractConverter
  {
      public StringToFileConverter()
      {
          super( String.class, File.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          final TaskletContext taskletContext = (TaskletContext)context;
          return taskletContext.resolveFile( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFloatConverter.java
  
  Index: StringToFloatConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to float converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToFloatConverter
      extends AbstractConverter
  {
      public StringToFloatConverter()
      {
          super( String.class, Float.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return new Float( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToIntegerConverter.java
  
  Index: StringToIntegerConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to integer converter.
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToIntegerConverter
      extends AbstractConverter
  {
      public StringToIntegerConverter()
      {
          super( String.class, Integer.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return new Integer( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToLongConverter.java
  
  Index: StringToLongConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to long converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToLongConverter
      extends AbstractConverter
  {
      public StringToLongConverter()
      {
          super( String.class, Long.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return new Long( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToShortConverter.java
  
  Index: StringToShortConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to short converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToShortConverter
      extends AbstractConverter
  {
      public StringToShortConverter()
      {
          super( String.class, Short.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return new Short( (String)original );
      }
  }
  
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToURLConverter.java
  
  Index: StringToURLConverter.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 file.
   */
  package org.apache.ant.modules.basic;
  
  import java.net.URL;
  import org.apache.ant.convert.AbstractConverter;
  import org.apache.avalon.Context;
  
  /**
   * String to url converter
   *
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class StringToURLConverter
      extends AbstractConverter
  {
      public StringToURLConverter()
      {
          super( String.class, URL.class );
      }
  
      public Object convert( final Object original, final Context context )
          throws Exception
      {
          return new URL( (String)original );
      }
  }
  
  
  
  

Mime
View raw message