You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@locus.apache.org on 2000/12/11 01:33:46 UTC

cvs commit: jakarta-ant/proposal/myrmidon/src/manifest taskdefs.xml

donaldp     00/12/10 16:33:46

  Modified:    proposal/myrmidon/src/java/org/apache/ant/convert
                        ConverterEngine.java ConverterInfo.java
                        ConverterRegistry.java DefaultConverterEngine.java
                        DefaultConverterInfo.java
                        DefaultConverterRegistry.java
               proposal/myrmidon/src/java/org/apache/ant/tasklet/engine
                        DefaultTaskletEngine.java DefaultTskDeployer.java
                        TaskletConverterEngine.java TaskletEngine.java
                        TskDeployer.java
               proposal/myrmidon/src/java/org/apache/ant/tasks/core
                        AbstractResourceRegisterer.java
                        RegisterConverter.java RegisterTasklet.java
  Added:       proposal/myrmidon/src/java/org/apache/ant/configuration
                        Configurer.java DefaultConfigurer.java
               proposal/myrmidon/src/manifest taskdefs.xml
  Removed:     proposal/myrmidon/src/java/org/apache/ant/convert
                        ConverterFactory.java ConverterLoader.java
                        DefaultConverterFactory.java
                        DefaultConverterLoader.java
               proposal/myrmidon/src/java/org/apache/ant/convert/core
                        converters.properties
               proposal/myrmidon/src/java/org/apache/ant/tasklet/engine
                        DefaultTaskletConfigurer.java
                        DefaultTaskletFactory.java DefaultTaskletInfo.java
                        DefaultTaskletLoader.java
                        DefaultTaskletRegistry.java TaskletConfigurer.java
                        TaskletFactory.java TaskletInfo.java
                        TaskletLoader.java TaskletRegistry.java
               proposal/myrmidon/src/java/org/apache/ant/tasks/core
                        taskdefs.properties
  Log:
  Updated to latest Avalon which involved removing a lot of cruft from Ant.
  
  Revision  Changes    Path
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/configuration/Configurer.java
  
  Index: Configurer.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.configuration;
  
  import org.apache.avalon.Component;
  import org.apache.avalon.ConfigurationException;
  import org.apache.avalon.Context;
  
  /**
   * Class used to configure tasks.
   * 
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public interface Configurer
      extends Component
  {
      /**
       * Configure an object based on a configuration in a particular context.
       * This configuring can be done in different ways for different 
       * configurers.
       *
       * @param object the object
       * @param configuration the configuration
       * @param context the Context
       * @exception ConfigurationException if an error occurs
       */
      void configure( Object object, Configuration configuration, Context context )
          throws ConfigurationException;
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfigurer.java
  
  Index: DefaultConfigurer.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.configuration;
  
  import java.lang.reflect.InvocationTargetException;
  import java.lang.reflect.Method;
  import java.util.ArrayList;
  import java.util.Iterator;
  import org.apache.ant.convert.Converter;
  import org.apache.ant.convert.ConverterException;
  import org.apache.avalon.ComponentManager;
  import org.apache.avalon.ComponentNotAccessibleException;
  import org.apache.avalon.ComponentNotFoundException;
  import org.apache.avalon.Composer;
  import org.apache.avalon.ConfigurationException;
  import org.apache.avalon.Context;
  import org.apache.avalon.util.PropertyException;
  import org.apache.avalon.util.PropertyUtil;
  
  /**
   * Class used to configure tasks.
   * 
   * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
   */
  public class DefaultConfigurer
      implements Configurer, Composer
  {
      protected final static String  RESERVED_ATTRIBUTES[] = 
      {
          "id"
      };
  
      protected final static String  RESERVED_ELEMENTS[] = 
      {
          "content"
      };
  
      protected Converter            m_converter;
  
      public void compose( final ComponentManager componentManager )
          throws ComponentNotFoundException, ComponentNotAccessibleException
      {
          m_converter = (Converter)componentManager.lookup( "org.apache.ant.convert.Converter" );
      }
      
      /**
       * Configure a task based on a configuration in a particular context.
       * This configuring can be done in different ways for different 
       * configurers. 
       * This one does it by first checking if object implements Configurable 
       * and if it does will pass the task the configuration - else it will use
       * ants rules to map configuration to types
       *
       * @param tasklet the tasklet
       * @param configuration the configuration
       * @param context the Context
       * @exception ConfigurationException if an error occurs
       */
      public void configure( final Object object, 
                             final Configuration configuration,
                             final Context context )
          throws ConfigurationException
      {
          if( object instanceof Configurable )
          {
              ((Configurable)object).configure( configuration );
          }
          else
          {
              final Iterator attributes = configuration.getAttributeNames();
  
              while( attributes.hasNext() )
              {
                  final String name = (String)attributes.next();
                  final String value = configuration.getAttribute( name );
                  configureAttribute( object, name, value, context );
              }
  
              final Iterator elements = configuration.getChildren();
              
              while( elements.hasNext() )
              {
                  final Configuration element = (Configuration)elements.next();
                  configureElement( object, element, context );
              }
  
              final String content = configuration.getValue( null );
  
              if( null != content )
              {
                  if( !content.trim().equals( "" ) )
                  {
                      configureContent( object, content, context );
                  }
              }
          }
      }
  
      /**
       * Try to configure content of an object.
       *
       * @param object the object
       * @param content the content value to be set
       * @param context the Context
       * @exception ConfigurationException if an error occurs
       */
      protected void configureContent( final Object object, 
                                       final String content,
                                       final Context context )
          throws ConfigurationException
      {
          setValue( object, "addContent", content, context );
      }
  
      protected void configureAttribute( final Object object, 
                                         final String name, 
                                         final String value,
                                         final Context context )
          throws ConfigurationException
      {
          for( int i = 0; i < RESERVED_ATTRIBUTES.length; i++ )
          {
              if( RESERVED_ATTRIBUTES[ i ].equals( name ) ) return;
          }
  
          final String methodName = getMethodNameFor( name );
          setValue( object, methodName, value, context );
      }
  
      protected void setValue( final Object object, 
                               final String methodName,
                               final String value,
                               final Context context )
          throws ConfigurationException
      {
          // OMFG the rest of this is soooooooooooooooooooooooooooooooo
          // slow. Need to cache results per class etc.
  
          final Class clazz = object.getClass();
          final Method methods[] = getMethodsFor( clazz, methodName );
  
          if( 0 == methods.length )
          {
              throw new ConfigurationException( "Unable to set attribute via " + methodName + 
                                                " due to not finding any appropriate " + 
                                                "accessor method" );
          }
  
          setValue( object, value, context, methods );
      }
  
      protected void setValue( final Object object,
                               final String value,
                               final Context context,
                               final Method methods[] )
          throws ConfigurationException
      {
          try
          {
              final Object objectValue = 
                  PropertyUtil.resolveProperty( value, context, false );
  
              setValue( object, objectValue, methods );
          }
          catch( final PropertyException pe )
          {
              throw new ConfigurationException( "Error resolving property " + value,
                                                pe );
          }
      }
  
      protected void setValue( final Object object, Object value, final Method methods[] )
          throws ConfigurationException
      {
          final Class sourceClass = value.getClass();
          final String source = sourceClass.getName();
  
          for( int i = 0; i < methods.length; i++ )
          {
              if( setValue( object, value, methods[ i ], sourceClass, source ) )
              {
                  return;
              }
          }
          
          throw new ConfigurationException( "Unable to set attribute via " + 
                                            methods[ 0 ].getName() + " as could not convert " + 
                                            source + " to a matching type" );
      }
  
      protected boolean setValue( final Object object, 
                                  Object value, 
                                  final Method method,
                                  final Class sourceClass,
                                  final String source )
          throws ConfigurationException
      {
          Class parameterType = method.getParameterTypes()[ 0 ];
          if( parameterType.isPrimitive() )
          {
              parameterType = getComplexTypeFor( parameterType );
          }
          
          if( !parameterType.isAssignableFrom( sourceClass ) )
          {
              try
              {
                  value = m_converter.convert( parameterType, object );
              }
              catch( final ConverterException ce )
              {
                  return false;
              }
              catch( final Exception e )
              {
                  throw new ConfigurationException( "Error converting attribute for " + 
                                                    method.getName(),
                                                    e );
              }
          }
          
          try
          {
              method.invoke( object, new Object[] { value } );
          }
          catch( final IllegalAccessException iae )
          {
              //should never happen ....
              throw new ConfigurationException( "Error retrieving methods with " + 
                                                "correct access specifiers",
                                                iae );
          }
          catch( final InvocationTargetException ite )
          {
              throw new ConfigurationException( "Error calling method attribute " + 
                                                method.getName(),
                                                ite );
          }
  
          return true;
      }
  
      protected Class getComplexTypeFor( final Class clazz )
      {
          if( String.class == clazz ) return String.class;
          else if( Integer.TYPE.equals( clazz ) ) return Integer.class;
          else if( Long.TYPE.equals( clazz ) ) return Long.class;
          else if( Short.TYPE.equals( clazz ) ) return Short.class;
          else if( Byte.TYPE.equals( clazz ) ) return Byte.class;
          else if( Boolean.TYPE.equals( clazz ) ) return Boolean.class;
          else if( Float.TYPE.equals( clazz ) ) return Float.class;
          else if( Double.TYPE.equals( clazz ) ) return Double.class;
          else
          {
              throw new IllegalArgumentException( "Can not get complex type for non-primitive " +
                                                  "type " + clazz.getName() );
          }
      }
  
      protected Method[] getMethodsFor( final Class clazz, final String methodName )
      {
          final Method methods[] = clazz.getMethods();
          final ArrayList matches = new ArrayList();
          
          for( int i = 0; i < methods.length; i++ )
          {
              final Method method = methods[ i ];
              if( methodName.equals( method.getName() ) && 
                  Method.PUBLIC == (method.getModifiers() & Method.PUBLIC) )
              {
                  if( method.getReturnType().equals( Void.TYPE ) )
                  {
                      final Class parameters[] = method.getParameterTypes();
                      if( 1 == parameters.length )
                      {
                          matches.add( method );
                      }
                  }
              }
          }
  
          return (Method[])matches.toArray( new Method[0] );
      }
  
      protected Method[] getCreateMethodsFor( final Class clazz, final String methodName )
      {
          final Method methods[] = clazz.getMethods();
          final ArrayList matches = new ArrayList();
          
          for( int i = 0; i < methods.length; i++ )
          {
              final Method method = methods[ i ];
              if( methodName.equals( method.getName() ) && 
                  Method.PUBLIC == (method.getModifiers() & Method.PUBLIC) )
              {
                  final Class returnType = method.getReturnType();
                  if( !returnType.equals( Void.TYPE ) &&
                      !returnType.isPrimitive() )
                  {
                      final Class parameters[] = method.getParameterTypes();
                      if( 0 == parameters.length )
                      {
                          matches.add( method );
                      }
                  }
              }
          }
          
          return (Method[])matches.toArray( new Method[0] );
      }
  
      protected String getMethodNameFor( final String attribute )
      {
          return "set" + getJavaNameFor( attribute );
      }
  
      protected String getJavaNameFor( final String name )
      {
          final StringBuffer sb = new StringBuffer();
          
          int index = name.indexOf( '-' );
          int last = 0;
          
          while( -1 != index )
          {
              final String word = name.substring( last, index ).toLowerCase();
              sb.append( Character.toUpperCase( word.charAt( 0 ) ) );
              sb.append( word.substring( 1, word.length() ) );
              last = index + 1;
              index = name.indexOf( '-', last );
          }
          
          index = name.length();
          final String word = name.substring( last, index ).toLowerCase();
          sb.append( Character.toUpperCase( word.charAt( 0 ) ) );
          sb.append( word.substring( 1, word.length() ) );
          
          return sb.toString();
      }    
  
      protected void configureElement( final Object object, 
                                       final Configuration configuration,
                                       final Context context )
          throws ConfigurationException
      {
          final String name = configuration.getName();
  
          for( int i = 0; i < RESERVED_ELEMENTS.length; i++ )
          {
              if( RESERVED_ATTRIBUTES[ i ].equals( name ) ) return;
          }
  
          final String javaName = getJavaNameFor( name );
  
          // OMFG the rest of this is soooooooooooooooooooooooooooooooo
          // slow. Need to cache results per class etc.
          final Class clazz = object.getClass();
          Method methods[] = getMethodsFor( clazz, "add" + javaName );
          
          if( 0 != methods.length )
          {
              //guess it is first method ????
              addElement( object, methods[ 0 ], configuration, context );
          }
          else
          {
              methods = getCreateMethodsFor( clazz, "create" + javaName );
  
              if( 0 == methods.length )
              {
                  throw new ConfigurationException( "Unable to set attribute " + javaName + 
                                                    " due to not finding any appropriate " + 
                                                    "accessor method" );
              }
  
              //guess it is first method ????
              createElement( object, methods[ 0 ], configuration, context );
          }
      }
  
      protected void createElement( final Object object, 
                                    final Method method,
                                    final Configuration configuration,
                                    final Context context )
          throws ConfigurationException
      {
          try
          {
              final Object created = method.invoke( object, new Object[ 0 ] );
              configure( created, configuration, context );
          }
          catch( final ConfigurationException ce )
          {
              throw ce;
          }
          catch( final Exception e )
          {
              throw new ConfigurationException( "Error creating sub-element", e );
          }
      }
  
      protected void addElement( final Object object, 
                                 final Method method,
                                 final Configuration configuration,
                                 final Context context )
          throws ConfigurationException
      {
          try
          {
              final Class clazz = method.getParameterTypes()[ 0 ];
              final Object created = clazz.newInstance();
  
              configure( created, configuration, context );
              method.invoke( object, new Object[] { created } );
          }
          catch( final ConfigurationException ce )
          {
              throw ce;
          }
          catch( final Exception e )
          {
              throw new ConfigurationException( "Error creating sub-element", e );
          }
      }
  }
  
  
  
  1.2       +4 -4      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterEngine.java
  
  Index: ConverterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterEngine.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ConverterEngine.java	2000/12/06 06:11:24	1.1
  +++ ConverterEngine.java	2000/12/11 00:33:39	1.2
  @@ -8,13 +8,13 @@
   package org.apache.ant.convert;
   
   import org.apache.avalon.Component;
  +import org.apache.avalon.Loggable;
  +import org.apache.avalon.camelot.LocatorRegistry;
   import org.apache.log.Logger;
   
   public interface ConverterEngine
  -    extends Component, Converter
  +    extends Component, Converter, Loggable
   {
  -    void setLogger( Logger logger );
  -
  +    LocatorRegistry getLocatorRegistry();
       ConverterRegistry getConverterRegistry();
  -    ConverterFactory getConverterFactory();
   }
  
  
  
  1.2       +0 -16     jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterInfo.java
  
  Index: ConverterInfo.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterInfo.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ConverterInfo.java	2000/12/04 13:37:28	1.1
  +++ ConverterInfo.java	2000/12/11 00:33:39	1.2
  @@ -7,7 +7,6 @@
    */
   package org.apache.ant.convert;
   
  -import java.net.URL;
   import org.apache.avalon.camelot.Info;
   
   /**
  @@ -33,19 +32,4 @@
        * @return the classname of the produced object
        */
       String getDestination();
  -
  -    /**
  -     * Retrieve classname for concerter.
  -     *
  -     * @return the taskname
  -     */
  -    String getClassname();
  -
  -    /**
  -     * Retrieve location of task library where task is contained.
  -     *
  -     * @return the location of task library
  -     */
  -    URL getLocation();
   }
  -
  
  
  
  1.3       +3 -2      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterRegistry.java
  
  Index: ConverterRegistry.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterRegistry.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ConverterRegistry.java	2000/12/06 00:23:21	1.2
  +++ ConverterRegistry.java	2000/12/11 00:33:39	1.3
  @@ -17,11 +17,12 @@
       extends Registry
   {
       /**
  -     * Retrieve ConverterInfo that describes converter that converts from source to destination.
  +     * Retrieve name of ConverterInfo that describes converter that converts 
  +     * from source to destination.
        *
        * @param source the source classname
        * @param destination the destination classname
        * @return the converter-info or null if none available
        */
  -    ConverterInfo getConverterInfo( String source, String destination );
  +    String getConverterInfoName( String source, String destination );
   }
  
  
  
  1.3       +25 -13    jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/DefaultConverterEngine.java
  
  Index: DefaultConverterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/DefaultConverterEngine.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultConverterEngine.java	2000/12/06 10:35:58	1.2
  +++ DefaultConverterEngine.java	2000/12/11 00:33:39	1.3
  @@ -10,12 +10,17 @@
   import org.apache.ant.AntException;
   import org.apache.avalon.Component;
   import org.apache.avalon.Initializable;
  +import org.apache.avalon.camelot.DefaultFactory;
  +import org.apache.avalon.camelot.DefaultLocatorRegistry;
  +import org.apache.avalon.camelot.Locator;
  +import org.apache.avalon.camelot.LocatorRegistry;
   import org.apache.log.Logger;
   
   public class DefaultConverterEngine
       implements ConverterEngine, Initializable
   {
  -    protected ConverterFactory     m_converterFactory;
  +    protected DefaultFactory       m_factory;
  +    protected LocatorRegistry      m_locatorRegistry;
       protected ConverterRegistry    m_converterRegistry;
       protected Logger               m_logger;
   
  @@ -24,48 +29,55 @@
           m_logger = logger;
       }
   
  -    public ConverterRegistry getConverterRegistry()
  +    public LocatorRegistry getLocatorRegistry()
       {
  -        return m_converterRegistry;
  +        return m_locatorRegistry;
       }
   
  -    public ConverterFactory getConverterFactory()
  +    public ConverterRegistry getConverterRegistry()
       {
  -        return m_converterFactory;
  +        return m_converterRegistry;
       }
   
       public void init()
           throws Exception
       {
           m_converterRegistry = createConverterRegistry();
  -        m_converterFactory =  createConverterFactory();
  +        m_locatorRegistry = createLocatorRegistry();
  +        m_factory =  createFactory();
       }
       
       protected ConverterRegistry createConverterRegistry()
       {
           return new DefaultConverterRegistry();
       }
  +
  +    protected LocatorRegistry createLocatorRegistry()
  +    {
  +        return new DefaultLocatorRegistry();
  +    }
   
  -    protected ConverterFactory createConverterFactory()
  +    protected DefaultFactory createFactory()
       {
  -        return new DefaultConverterFactory();
  +        return new DefaultFactory();
       }
   
       public Object convert( Class destination, final Object original )
           throws Exception
       {
  -        final ConverterInfo info = 
  -            m_converterRegistry.getConverterInfo( original.getClass().getName(), 
  -                                                  destination.getName() );
  +        final String name = 
  +            m_converterRegistry.getConverterInfoName( original.getClass().getName(), 
  +                                                      destination.getName() );
               
  -        if( null == info ) 
  +        if( null == name ) 
           {
               throw new ConverterException( "Unable to find converter for " + 
                                             original.getClass() + " to " + destination + 
                                             " conversion" );
           }
   
  -        final Converter converter = m_converterFactory.createConverter( info );
  +        final Locator locator = m_locatorRegistry.getLocator( name );
  +        final Converter converter = (Converter)m_factory.create( locator, Converter.class );
           return converter.convert( destination, original );
       }
   }
  
  
  
  1.2       +1 -30     jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/DefaultConverterInfo.java
  
  Index: DefaultConverterInfo.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/DefaultConverterInfo.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultConverterInfo.java	2000/12/04 13:37:28	1.1
  +++ DefaultConverterInfo.java	2000/12/11 00:33:39	1.2
  @@ -7,8 +7,6 @@
    */
   package org.apache.ant.convert;
   
  -import java.net.URL;
  -
   /**
    * This info represents meta-information about a converter.
    *
  @@ -19,18 +17,11 @@
   {
       protected final String            m_source;
       protected final String            m_destination;
  -    protected final String            m_classname;
  -    protected final URL               m_location;
   
  -    public DefaultConverterInfo( final String source, 
  -                                 final String destination,
  -                                 final String classname,
  -                                 final URL location )
  +    public DefaultConverterInfo( final String source, final String destination )
       {
           m_source = source;
           m_destination = destination;
  -        m_classname = classname;
  -        m_location = location;
       } 
   
       /**
  @@ -53,26 +44,6 @@
       public String getDestination()
       {
           return m_destination;
  -    }
  -    
  -    /**
  -     * Retrieve classname for concerter.
  -     *
  -     * @return the taskname
  -     */
  -    public String getClassname()
  -    {
  -        return m_classname;
  -    }
  -
  -    /**
  -     * Retrieve location of task library where task is contained.
  -     *
  -     * @return the location of task library
  -     */
  -    public URL getLocation()
  -    {
  -        return m_location;
       }
   }
   
  
  
  
  1.3       +3 -3      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/DefaultConverterRegistry.java
  
  Index: DefaultConverterRegistry.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/convert/DefaultConverterRegistry.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultConverterRegistry.java	2000/12/06 00:23:22	1.2
  +++ DefaultConverterRegistry.java	2000/12/11 00:33:39	1.3
  @@ -30,11 +30,11 @@
        * @param destination the destination classname
        * @return the converter-info or null if none available
        */
  -    public ConverterInfo getConverterInfo( final String source, final String destination )
  +    public String getConverterInfoName( final String source, final String destination )
       {
           final HashMap map = (HashMap)m_mapping.get( source );
           if( null == map ) return null;
  -        return (ConverterInfo)map.get( destination );
  +        return (String)map.get( destination );
       }
   
       protected void checkInfo( final String name, final Info info )
  @@ -53,7 +53,7 @@
               m_mapping.put( source, map );
           }
           
  -        map.put( destination, info );        
  +        map.put( destination, name );        
       }
   
       protected Class getInfoClass()
  
  
  
  1.6       +36 -27    jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java
  
  Index: DefaultTaskletEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DefaultTaskletEngine.java	2000/12/06 10:36:04	1.5
  +++ DefaultTaskletEngine.java	2000/12/11 00:33:40	1.6
  @@ -11,19 +11,25 @@
   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.configuration.DefaultConfigurer;
   import org.apache.ant.convert.ConverterEngine;
  -import org.apache.ant.convert.ConverterFactory;
   import org.apache.ant.tasklet.Tasklet;
   import org.apache.ant.tasklet.TaskletContext;
   import org.apache.avalon.Component;
  -import org.apache.avalon.Composer;
   import org.apache.avalon.ComponentManager;
  +import org.apache.avalon.Composer;
   import org.apache.avalon.Context;
   import org.apache.avalon.Contextualizable;
   import org.apache.avalon.DefaultComponentManager;
   import org.apache.avalon.Disposable;
  +import org.apache.avalon.Loggable;
   import org.apache.avalon.Initializable;
  +import org.apache.avalon.camelot.DefaultFactory;
   import org.apache.avalon.camelot.FactoryException;
  +import org.apache.avalon.camelot.LocatorRegistry;
  +import org.apache.avalon.camelot.Locator;
  +import org.apache.avalon.camelot.DefaultLocatorRegistry;
   import org.apache.avalon.camelot.RegistryException;
   import org.apache.log.Logger;
   
  @@ -31,9 +37,9 @@
       implements TaskletEngine, Initializable
   {
       protected TskDeployer          m_tskDeployer;
  -    protected TaskletFactory       m_taskletFactory;
  -    protected TaskletRegistry      m_taskletRegistry;
  -    protected TaskletConfigurer    m_configurer;
  +    protected DefaultFactory       m_factory;
  +    protected LocatorRegistry      m_locatorRegistry;
  +    protected Configurer           m_configurer;
       protected Logger               m_logger;
       protected ConverterEngine      m_converterEngine;
   
  @@ -52,22 +58,23 @@
           return m_converterEngine;
       }
   
  -    public TaskletRegistry getTaskletRegistry()
  +    public LocatorRegistry getLocatorRegistry()
       {
  -        return m_taskletRegistry;
  +        return m_locatorRegistry;
       }
   
       public void init()
           throws Exception
       {
  -        m_taskletRegistry = createTaskletRegistry();
  -        m_taskletFactory = createTaskletFactory();
  +        m_locatorRegistry = createLocatorRegistry();
  +        m_factory = createFactory();
  +        setupSubComponent( m_factory );
   
           m_converterEngine = createConverterEngine();
           m_converterEngine.setLogger( m_logger );
           setupSubComponent( m_converterEngine );
   
  -        m_configurer = createTaskletConfigurer();
  +        m_configurer = createConfigurer();
           setupSubComponent( m_configurer );
   
           m_tskDeployer = createTskDeployer();
  @@ -78,6 +85,11 @@
       protected void setupSubComponent( final Component component )
           throws Exception
       {
  +        if( component instanceof Loggable )
  +        {
  +            ((Loggable)component).setLogger( m_logger );
  +        }
  +
           if( component instanceof Composer )
           {
               final DefaultComponentManager componentManager = new DefaultComponentManager();
  @@ -90,7 +102,7 @@
   
               ((Composer)component).compose( componentManager );
           }
  -        
  +
           if( component instanceof Initializable )
           {
               ((Initializable)component).init();
  @@ -102,19 +114,19 @@
           return new DefaultTskDeployer();
       }
   
  -    protected TaskletConfigurer createTaskletConfigurer()
  +    protected Configurer createConfigurer()
       {
  -        return new DefaultTaskletConfigurer();
  +        return new DefaultConfigurer();
       }
       
  -    protected TaskletRegistry createTaskletRegistry()
  +    protected LocatorRegistry createLocatorRegistry()
       {
  -        return new DefaultTaskletRegistry();
  +        return new DefaultLocatorRegistry();
       }
       
  -    protected TaskletFactory createTaskletFactory()
  +    protected DefaultFactory createFactory()
       {
  -        return new DefaultTaskletFactory();
  +        return new DefaultFactory();
       }
       
       protected ConverterEngine createConverterEngine()
  @@ -122,7 +134,7 @@
           //this is done so that the loaders are shared
           //which results in much less overhead
           final TaskletConverterEngine engine = new TaskletConverterEngine();
  -        engine.setConverterFactory( (ConverterFactory)m_taskletFactory );
  +        engine.setFactory( m_factory );
           return engine;
       }
   
  @@ -236,21 +248,18 @@
           throws AntException
       {
           final String name = configuration.getName();
  -        TaskletInfo info = null;
  -
  -        try { info = (TaskletInfo)m_taskletRegistry.getInfo( name ); }
  +        try
  +        {
  +            final Locator locator = m_locatorRegistry.getLocator( name );
  +            return (Tasklet)m_factory.create( locator, Tasklet.class );
  +        }
           catch( final RegistryException re )
           {
               throw new AntException( "Unable to locate task " + name, re );
           }
  -
  -        try { return m_taskletFactory.createTasklet( info ); }
           catch( final FactoryException fe )
           {
  -            throw new AntException( "Unable to create task " + name + 
  -                                    " (of type " + info.getClassname() + " from " +
  -                                    info.getLocation() + ")",
  -                                    fe );
  +            throw new AntException( "Unable to create task " + name, fe );
           }
       }
   }
  
  
  
  1.2       +88 -181   jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java
  
  Index: DefaultTskDeployer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultTskDeployer.java	2000/12/06 06:11:26	1.1
  +++ DefaultTskDeployer.java	2000/12/11 00:33:41	1.2
  @@ -11,22 +11,26 @@
   import java.io.IOException;
   import java.net.MalformedURLException;
   import java.net.URL;
  -import java.util.Enumeration;
  -import java.util.Properties;
  +import java.util.Iterator;
   import java.util.zip.ZipEntry;
   import java.util.zip.ZipException;
   import java.util.zip.ZipFile;
   import org.apache.ant.convert.ConverterEngine;
   import org.apache.ant.convert.ConverterRegistry;
   import org.apache.ant.convert.DefaultConverterInfo;
  -import org.apache.ant.tasklet.engine.DefaultTaskletInfo;
   import org.apache.avalon.Component;
   import org.apache.avalon.ComponentManager;
   import org.apache.avalon.ComponentNotAccessibleException;
   import org.apache.avalon.ComponentNotFoundException;
   import org.apache.avalon.Composer;
  -import org.apache.avalon.camelot.AbstractDeployer;
  +import org.apache.avalon.Configuration;
  +import org.apache.avalon.ConfigurationException;
  +import org.apache.avalon.camelot.AbstractZipDeployer;
  +import org.apache.avalon.camelot.DefaultLocator;
  +import org.apache.avalon.camelot.DefaultLocatorRegistry;
   import org.apache.avalon.camelot.DeploymentException;
  +import org.apache.avalon.camelot.Loader;
  +import org.apache.avalon.camelot.LocatorRegistry;
   import org.apache.avalon.camelot.RegistryException;
   import org.apache.log.Logger;
   
  @@ -36,20 +40,21 @@
    * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
    */
   public class DefaultTskDeployer
  -    extends AbstractDeployer
  +    extends AbstractZipDeployer
       implements Composer, TskDeployer
   {
  -    protected final static String   TASKDEF_FILE     = "TASK-LIB/taskdefs.properties";
  -    protected final static String   CONVERTER_FILE   = "TASK-LIB/converters.properties";
  +    protected final static String   TSKDEF_FILE     = "TASK-LIB/taskdefs.xml";
   
  -    protected TaskletRegistry       m_taskletRegistry;
  -    protected ConverterRegistry     m_converterRegistry;
  +    protected LocatorRegistry       m_taskletRegistry;
  +    protected LocatorRegistry       m_converterRegistry;
  +    protected ConverterRegistry     m_converterInfoRegistry;
   
       /**
        * Default constructor.
        */
       public DefaultTskDeployer()
       {
  +        super( false );
           m_autoUndeploy = true;
           m_type = "Tasklet";
       }
  @@ -67,12 +72,13 @@
           final ConverterEngine converterEngine = (ConverterEngine)componentManager.
               lookup( "org.apache.ant.convert.ConverterEngine" );
   
  -        m_converterRegistry = converterEngine.getConverterRegistry();
  +        m_converterInfoRegistry = converterEngine.getConverterRegistry();
  +        m_converterRegistry = converterEngine.getLocatorRegistry();
   
           final TaskletEngine taskletEngine = (TaskletEngine)componentManager.
               lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
   
  -        m_taskletRegistry = taskletEngine.getTaskletRegistry();
  +        m_taskletRegistry = taskletEngine.getLocatorRegistry();
       }
   
       public void setLogger( final Logger logger )
  @@ -80,50 +86,30 @@
           m_logger = logger;
       }
   
  -    protected boolean isValidLocation( final String location )
  -    {
  -        //TODO: Make sure it is valid JavaIdentifier 
  -        //that optionally has '-' embedded in it
  -        return true;
  -    }
  -    
  -    /**
  -     * Deploy Tasklets from a .tsk file.
  -     * Eventually this should be cached for performance reasons.
  -     *
  -     * @param location the location 
  -     * @param file the file
  -     * @exception DeploymentException if an error occurs
  -     */
  -    protected void deployFromFile( final String location, final File file )
  +    protected void loadResources( final ZipFile zipFile, final String location, final URL url )
           throws DeploymentException
       {
  -        m_logger.info( "Deploying .tsk file (" + file + ") as " + location );
  +        final Configuration taskdefs = loadConfiguration( zipFile, TSKDEF_FILE );
   
  -        final ZipFile zipFile = getZipFileFor( file );
  -
           try
           {
  -            final Properties taskdefs = loadProperties( zipFile, TASKDEF_FILE );
  -            final Properties converters = loadProperties( zipFile, CONVERTER_FILE );
  -
  -            try { zipFile.close(); }
  -            catch( final IOException ioe ) {}
  -
  -            URL url = null;
  -
  -            try { url = file.toURL(); }
  -            catch( final MalformedURLException mue ) {}
  -
  -            handleTasklets( taskdefs, url );
  -            handleConverters( converters, url );
  +            final Iterator tasks = taskdefs.getChildren( "task" );
  +            while( tasks.hasNext() )
  +            {
  +                final Configuration task = (Configuration)tasks.next();
  +                handleTasklet( task, url );
  +            }
  +            
  +            final Iterator converters = taskdefs.getChildren( "converter" );
  +            while( converters.hasNext() )
  +            {
  +                final Configuration converter = (Configuration)converters.next();
  +                handleConverter( converter, url );
  +            }
           }
  -        catch( final DeploymentException de )
  +        catch( final ConfigurationException ce )
           {
  -            try { zipFile.close(); }
  -            catch( final IOException ioe ) {}
  -
  -            throw de;
  +            throw new DeploymentException( "Malformed taskdefs.xml", ce );
           }
       }
       
  @@ -132,15 +118,25 @@
       {
           checkDeployment( location, url );
           final ZipFile zipFile = getZipFileFor( url );
  -        final Properties converters = loadProperties( zipFile, CONVERTER_FILE );
  -        final String value = converters.getProperty( name );
  -
  -        if( null == value )
  +        final Configuration taskdefs = loadConfiguration( zipFile, TSKDEF_FILE );
  +        
  +        try
           {
  -            throw new DeploymentException( "Unable to locate converter named " + name );
  +            final Iterator converters = taskdefs.getChildren( "converter" );
  +            while( converters.hasNext() )
  +            {
  +                final Configuration converter = (Configuration)converters.next();
  +                if( converter.getAttribute( "classname" ).equals( name ) )
  +                {
  +                    handleConverter( converter, url );
  +                    break;
  +                }
  +            }
           }
  -            
  -        handleConverter( name, value, url );
  +        catch( final ConfigurationException ce )
  +        {
  +            throw new DeploymentException( "Malformed taskdefs.xml", ce );
  +        }
       }
       
       public void deployTasklet( final String name, final String location, final URL url )
  @@ -148,109 +144,65 @@
       {
           checkDeployment( location, url );
           final ZipFile zipFile = getZipFileFor( url );
  -        final Properties tasklets = loadProperties( zipFile, TASKDEF_FILE );
  -        final String value = tasklets.getProperty( name );
  +        final Configuration taskdefs = loadConfiguration( zipFile, TSKDEF_FILE );
           
  -        if( null == value )
  +        try
           {
  -            throw new DeploymentException( "Unable to locate tasklet named " + name );
  +            final Iterator tasks = taskdefs.getChildren( "task" );
  +            while( tasks.hasNext() )
  +            {
  +                final Configuration task = (Configuration)tasks.next();
  +                if( task.getAttribute( "name" ).equals( name ) )
  +                {
  +                    handleTasklet( task, url );
  +                    break;
  +                }
  +            }
           }
  -        
  -        handleTasklet( name, value, url );
  -    }
  -
  -    protected ZipFile getZipFileFor( final URL url )
  -        throws DeploymentException
  -    {
  -        final File file = getFileFor( url );
  -        return getZipFileFor( file );
  -    }
  -
  -    protected ZipFile getZipFileFor( final File file )
  -        throws DeploymentException
  -    {
  -        try { return new ZipFile( file ); }
  -        catch( final IOException ioe )
  +        catch( final ConfigurationException ce )
           {
  -            throw new DeploymentException( "Error opening " + file + 
  -                                           " due to " + ioe.getMessage(),
  -                                           ioe );
  -        }        
  +            throw new DeploymentException( "Malformed taskdefs.xml", ce );
  +        }
       }
       
  -    /**
  -     * Create and register Infos for all converters stored in deployment.
  -     *
  -     * @param properties the properties
  -     * @param url the url of deployment
  -     * @exception DeploymentException if an error occurs
  -     */
  -    protected void handleConverters( final Properties properties, final URL url )
  -        throws DeploymentException
  +    protected void handleConverter( final Configuration converter, final URL url )
  +        throws DeploymentException, ConfigurationException
       {
  -        final Enumeration enum = properties.propertyNames();
  +        final String name = converter.getAttribute( "classname" );
  +        final String source = converter.getAttribute( "source" );
  +        final String destination = converter.getAttribute( "destination" );
           
  -        while( enum.hasMoreElements() )
  +        final DefaultConverterInfo info = new DefaultConverterInfo( source, destination );
  +       
  +        try { m_converterInfoRegistry.register( name, info ); }
  +        catch( final RegistryException re )
           {
  -            final String key = (String)enum.nextElement();
  -            final String value = (String)properties.get( key );
  -
  -            handleConverter( key, value, url );
  +            throw new DeploymentException( "Error registering converter info " + 
  +                                           name + " due to " + re,
  +                                           re );
           }
  -    }   
   
  -    protected void handleConverter( final String name, final String param, final URL url )
  -        throws DeploymentException
  -    {
  -        final int index = param.indexOf( ',' );
  -        
  -        if( -1 == index )
  -        {
  -            throw new DeploymentException( "Malformed converter definition (" + name + ")" );
  -        }
  -        
  -        final String source = param.substring( 0, index ).trim();
  -        final String destination = param.substring( index + 1 ).trim();
  -        
  -        final DefaultConverterInfo info = 
  -            new DefaultConverterInfo( source, destination, name, url );
  -        
  -        try { m_converterRegistry.register( name, info ); }
  +        final DefaultLocator locator = new DefaultLocator( name, url );
  +
  +        try { m_converterRegistry.register( name, locator ); }
           catch( final RegistryException re )
           {
  -            throw new DeploymentException( "Error registering converter " + 
  +            throw new DeploymentException( "Error registering converter locator " + 
                                              name + " due to " + re,
                                              re );
           }
  -        
  +
           m_logger.debug( "Registered converter " + name + " that converts from " + 
                           source + " to " + destination );
       }
       
  -    /**
  -     * Create and register Infos for all tasklets stored in deployment.
  -     *
  -     * @param properties the properties
  -     * @param url the url of deployment
  -     * @exception DeploymentException if an error occurs
  -     */     
  -    protected void handleTasklets( final Properties properties, final URL url )
  -        throws DeploymentException
  +    protected void handleTasklet( final Configuration task, final URL url )
  +        throws DeploymentException, ConfigurationException
       {
  -        final Enumeration enum = properties.propertyNames();
  -        
  -        while( enum.hasMoreElements() )
  -        {
  -            final String key = (String)enum.nextElement();
  -            final String value = (String)properties.get( key );
  -            handleTasklet( key, value, url );
  -        }
  -    }
  +        final String name = task.getAttribute( "name" );
  +        final String classname = task.getAttribute( "classname" );
   
  -    protected void handleTasklet( final String name, final String classname, final URL url )
  -        throws DeploymentException
  -    {
  -        final DefaultTaskletInfo info = new DefaultTaskletInfo( classname, url );
  +        final DefaultLocator info = new DefaultLocator( classname, url );
           
           try { m_taskletRegistry.register( name, info ); }
           catch( final RegistryException re )
  @@ -260,50 +212,5 @@
           }
           
           m_logger.debug( "Registered tasklet " + name + " as " + classname );
  -    }
  -
  -    /**
  -     * Utility method to load properties from zip.
  -     *
  -     * @param zipFile the zip file
  -     * @param filename the property filename
  -     * @return the Properties
  -     * @exception DeploymentException if an error occurs
  -     */
  -    protected Properties loadProperties( final ZipFile zipFile, final String filename )
  -        throws DeploymentException
  -    {
  -        final ZipEntry entry = zipFile.getEntry( filename );
  -        if( null == entry )
  -        {
  -            throw new DeploymentException( "Unable to locate " + filename + 
  -                                           " in " + zipFile.getName() );
  -        }
  -        
  -        Properties properties = new Properties();
  -        
  -        try
  -        {
  -            properties.load( zipFile.getInputStream( entry ) );
  -        }
  -        catch( final IOException ioe )
  -        {
  -            throw new DeploymentException( "Error reading " + filename + 
  -                                           " from " + zipFile.getName(),
  -                                           ioe );
  -        }
  -
  -        return properties;
  -    }
  -    
  -    protected boolean canUndeploy( final Component component )
  -        throws DeploymentException
  -    {
  -        return true;
  -    }
  -    
  -    protected void shutdownDeployment( final Component component )
  -        throws DeploymentException
  -    {
       }
   }
  
  
  
  1.2       +5 -5      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletConverterEngine.java
  
  Index: TaskletConverterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletConverterEngine.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TaskletConverterEngine.java	2000/12/06 06:11:26	1.1
  +++ TaskletConverterEngine.java	2000/12/11 00:33:41	1.2
  @@ -7,8 +7,8 @@
    */
   package org.apache.ant.tasklet.engine;
   
  -import org.apache.ant.convert.ConverterFactory;
   import org.apache.ant.convert.DefaultConverterEngine;
  +import org.apache.avalon.camelot.DefaultFactory;
   
   public class TaskletConverterEngine
       extends DefaultConverterEngine
  @@ -17,13 +17,13 @@
        * Set the ConverterFactory.
        * Package access intended.
        */
  -    void setConverterFactory( final ConverterFactory converterFactory )
  +    void setFactory( final DefaultFactory factory )
       {
  -        m_converterFactory = converterFactory;
  +        m_factory = factory;
       }
   
  -    protected ConverterFactory createConverterFactory()
  +    protected DefaultFactory createFactory()
       {
  -        return m_converterFactory;
  +        return m_factory;
       }
   }
  
  
  
  1.5       +6 -6      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java
  
  Index: TaskletEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TaskletEngine.java	2000/12/06 06:11:26	1.4
  +++ TaskletEngine.java	2000/12/11 00:33:41	1.5
  @@ -12,7 +12,9 @@
   import org.apache.ant.convert.ConverterEngine;
   import org.apache.ant.tasklet.TaskletContext;
   import org.apache.avalon.Component;
  +import org.apache.avalon.Loggable;
   import org.apache.avalon.ComponentManager;
  +import org.apache.avalon.camelot.LocatorRegistry;
   import org.apache.log.Logger;
    
   /**
  @@ -21,10 +23,8 @@
    * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
    */
   public interface TaskletEngine
  -    extends Component
  +    extends Component, Loggable
   {
  -    void setLogger( Logger logger );
  -
       /**
        * Retrieve deployer for engine.
        *
  @@ -33,11 +33,11 @@
       TskDeployer getTskDeployer();
       
       /**
  -     * Retrieve tasklet registry associated with engine.
  +     * Retrieve locator registry associated with engine.
        *
  -     * @return the TaskletRegistry
  +     * @return the LocatorRegistry
        */
  -    TaskletRegistry getTaskletRegistry();
  +    LocatorRegistry getLocatorRegistry();
   
       /**
        * Retrieve converter engine.
  
  
  
  1.4       +3 -3      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TskDeployer.java
  
  Index: TskDeployer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TskDeployer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TskDeployer.java	2000/12/06 06:11:26	1.3
  +++ TskDeployer.java	2000/12/11 00:33:41	1.4
  @@ -8,6 +8,7 @@
   package org.apache.ant.tasklet.engine;
   
   import java.net.URL;
  +import org.apache.avalon.Loggable;
   import org.apache.avalon.camelot.Deployer;
   import org.apache.avalon.camelot.DeploymentException;
   import org.apache.log.Logger;
  @@ -18,13 +19,12 @@
    * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
    */
   public interface TskDeployer
  -    extends Deployer
  +    extends Deployer, Loggable
   {
  -    void setLogger( Logger logger );
  -
       void deployConverter( String name, String location, URL url )
           throws DeploymentException;
       
       void deployTasklet( String name, String location, URL url )
           throws DeploymentException;
   }
  +
  
  
  
  1.2       +0 -1      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasks/core/AbstractResourceRegisterer.java
  
  Index: AbstractResourceRegisterer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasks/core/AbstractResourceRegisterer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractResourceRegisterer.java	2000/12/06 06:11:27	1.1
  +++ AbstractResourceRegisterer.java	2000/12/11 00:33:42	1.2
  @@ -12,7 +12,6 @@
   import java.net.URL;
   import org.apache.ant.AntException;
   import org.apache.ant.tasklet.AbstractTasklet;
  -import org.apache.ant.tasklet.engine.DefaultTaskletInfo;
   import org.apache.ant.tasklet.engine.TaskletEngine;
   import org.apache.avalon.ComponentManager;
   import org.apache.avalon.ComponentNotAccessibleException;
  
  
  
  1.2       +6 -2      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterConverter.java
  
  Index: RegisterConverter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterConverter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RegisterConverter.java	2000/12/06 06:11:27	1.1
  +++ RegisterConverter.java	2000/12/11 00:33:43	1.2
  @@ -11,8 +11,9 @@
   import java.net.URL;
   import java.net.MalformedURLException;
   import org.apache.ant.AntException;
  -import org.apache.ant.convert.DefaultConverterInfo;
  +import org.apache.avalon.camelot.DefaultLocator;
   import org.apache.ant.convert.ConverterEngine;
  +import org.apache.ant.convert.DefaultConverterInfo;
   import org.apache.ant.tasklet.AbstractTasklet;
   import org.apache.ant.tasklet.engine.TaskletEngine;
   import org.apache.avalon.ComponentManager;
  @@ -106,12 +107,15 @@
           else
           {
               final DefaultConverterInfo info = 
  -                new DefaultConverterInfo( m_sourceType, m_destinationType, m_classname, url );
  +                new DefaultConverterInfo( m_sourceType, m_destinationType );
  +            final DefaultLocator locator = new DefaultLocator( m_classname, url );
   
               try
               {
                   m_engine.getConverterEngine().
                       getConverterRegistry().register( m_classname, info ); 
  +                m_engine.getConverterEngine().
  +                    getLocatorRegistry().register( m_classname, locator ); 
               }
               catch( final RegistryException re )
               {
  
  
  
  1.4       +3 -3      jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterTasklet.java
  
  Index: RegisterTasklet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterTasklet.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- RegisterTasklet.java	2000/12/06 06:11:27	1.3
  +++ RegisterTasklet.java	2000/12/11 00:33:43	1.4
  @@ -9,7 +9,7 @@
   
   import java.net.URL;
   import org.apache.ant.AntException;
  -import org.apache.ant.tasklet.engine.DefaultTaskletInfo;
  +import org.apache.avalon.camelot.DefaultLocator;
   import org.apache.avalon.camelot.DeploymentException;
   import org.apache.avalon.camelot.RegistryException;
   
  @@ -36,8 +36,8 @@
           }
           else
           {
  -            final DefaultTaskletInfo info = new DefaultTaskletInfo( classname, url );
  -            m_engine.getTaskletRegistry().register( name, info ); 
  +            final DefaultLocator locator = new DefaultLocator( classname, url );
  +            m_engine.getLocatorRegistry().register( name, locator ); 
           }
       }
   }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/manifest/taskdefs.xml
  
  Index: taskdefs.xml
  ===================================================================
  <tasklib>
    <task name="echo" classname="org.apache.ant.tasks.core.Echo" />
    <task name="prim-test" classname="org.apache.ant.tasks.core.PrimitiveTypesTest" />
    <task name="sub-elements-test" classname="org.apache.ant.tasks.core.SubElementTest" />
    <task name="conf-test" classname="org.apache.ant.tasks.core.ConfigurationTest" />
    <task name="content-test" classname="org.apache.ant.tasks.core.ContentTest" />
    <task name="property" classname="org.apache.ant.tasks.core.Property" />
    <task name="register-tasklet" classname="org.apache.ant.tasks.core.RegisterTasklet" />
    <task name="register-converter" classname="org.apache.ant.tasks.core.RegisterConverter" />
    <task name="ant-call" classname="org.apache.ant.tasks.core.AntCall" />
  
    <converter classname="org.apache.ant.convert.core.StringToLongConverter" 
               source="java.lang.String" 
               destination="java.lang.Long" />
    <converter classname="org.apache.ant.convert.core.StringToIntegerConverter" 
               source="java.lang.String" 
               destination="java.lang.Integer" />
    <converter classname="org.apache.ant.convert.core.StringToShortConverter" 
               source="java.lang.String" 
               destination="java.lang.Short" />
    <converter classname="org.apache.ant.convert.core.StringToByteConverter" 
               source="java.lang.String" 
               destination="java.lang.Byte" />
    <converter classname="org.apache.ant.convert.core.StringToDoubleConverter" 
               source="java.lang.String" 
               destination="java.lang.Double" />
    <converter classname="org.apache.ant.convert.core.StringToFloatConverter" 
               source="java.lang.String" 
               destination="java.lang.Float" />
    <converter classname="org.apache.ant.convert.core.StringToClassConverter" 
               source="java.lang.String" 
               destination="java.lang.Class" />
    <converter classname="org.apache.ant.convert.core.StringToURLConverter" 
               source="java.lang.String" 
               destination="java.net.URL" />
  </tasklib>