ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From adammurd...@apache.org
Subject cvs commit: jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer DescriptorBuilder.java RoleDescriptor.java RoleDescriptorBuilder.java ServiceDefinition.java ServiceDescriptor.java ServiceDescriptorBuilder.java TypeDescriptor.java TypeDescriptorBuilder.java TypelibDescriptor.java ClassLoaderManager.java DefaultDeployer.java Deployment.java Resources.properties
Date Tue, 12 Feb 2002 10:40:09 GMT
adammurdoch    02/02/12 02:40:09

  Modified:    proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer
                        ClassLoaderManager.java DefaultDeployer.java
                        Deployment.java Resources.properties
  Added:       proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer
                        DescriptorBuilder.java RoleDescriptor.java
                        RoleDescriptorBuilder.java ServiceDefinition.java
                        ServiceDescriptor.java
                        ServiceDescriptorBuilder.java TypeDescriptor.java
                        TypeDescriptorBuilder.java TypelibDescriptor.java
  Log:
  Changes to DefaultDeployer:
  
  * Parses services descriptors (META-INF/ant-services.xml).  Does not do anything
    with them yet.
  
  * Enforces that the version attribute in type, role, and service descriptors
    is present, and compatible with the current version.
  
  * Moved descriptor construction from DefaultDeployer into separate
    DescriptorBuilder classes, one for each type of descriptor.
  
  * Detection of whether a descriptor is present in a file, was not portable across
    XML parser implementations.
  
  Revision  Changes    Path
  1.2       +1 -1      jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/ClassLoaderManager.java
  
  Index: ClassLoaderManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/ClassLoaderManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClassLoaderManager.java	10 Feb 2002 02:34:13 -0000	1.1
  +++ ClassLoaderManager.java	12 Feb 2002 10:40:08 -0000	1.2
  @@ -8,8 +8,8 @@
   package org.apache.myrmidon.components.deployer;
   
   import java.io.File;
  -import org.apache.myrmidon.interfaces.deployer.DeploymentException;
   import org.apache.avalon.framework.component.Component;
  +import org.apache.myrmidon.interfaces.deployer.DeploymentException;
   
   /**
    * Manages a classloader hierarchy.
  
  
  
  1.23      +32 -58    jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultDeployer.java
  
  Index: DefaultDeployer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultDeployer.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- DefaultDeployer.java	10 Feb 2002 02:34:13 -0000	1.22
  +++ DefaultDeployer.java	12 Feb 2002 10:40:08 -0000	1.23
  @@ -17,24 +17,23 @@
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.Composable;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
  -import org.apache.avalon.framework.configuration.Configuration;
  -import org.apache.avalon.framework.configuration.ConfigurationException;
  +import org.apache.myrmidon.converter.Converter;
  +import org.apache.myrmidon.interfaces.converter.ConverterRegistry;
  +import org.apache.myrmidon.interfaces.deployer.ConverterDefinition;
   import org.apache.myrmidon.interfaces.deployer.Deployer;
   import org.apache.myrmidon.interfaces.deployer.DeploymentException;
  -import org.apache.myrmidon.interfaces.deployer.TypeDeployer;
   import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
  -import org.apache.myrmidon.interfaces.deployer.ConverterDefinition;
  -import org.apache.myrmidon.interfaces.converter.ConverterRegistry;
  -import org.apache.myrmidon.interfaces.type.TypeManager;
  -import org.apache.myrmidon.interfaces.type.DefaultTypeFactory;
  +import org.apache.myrmidon.interfaces.deployer.TypeDeployer;
   import org.apache.myrmidon.interfaces.role.RoleManager;
  -import org.apache.myrmidon.converter.Converter;
  +import org.apache.myrmidon.interfaces.type.DefaultTypeFactory;
  +import org.apache.myrmidon.interfaces.type.TypeManager;
   
   /**
    * This class deploys roles, types and services from a typelib.
    *
    * @author <a href="mailto:peter@apache.org">Peter Donald</a>
  - * @version $Revision: 1.22 $ $Date: 2002/02/10 02:34:13 $
  + * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
  + * @version $Revision: 1.23 $ $Date: 2002/02/12 10:40:08 $
    */
   public class DefaultDeployer
       extends AbstractLogEnabled
  @@ -137,56 +136,9 @@
       }
   
       /**
  -     * Creates a type definition.
  -     */
  -    public TypeDefinition createTypeDefinition( final Configuration configuration )
  -        throws ConfigurationException
  -    {
  -        final String converterShorthand = m_roleManager.getNameForRole( Converter.ROLE
);
  -        final String roleShorthand = configuration.getName();
  -        if( roleShorthand.equals( converterShorthand ) )
  -        {
  -            // A converter definition
  -            final String className = configuration.getAttribute( "classname" );
  -            final String source = configuration.getAttribute( "source" );
  -            final String destination = configuration.getAttribute( "destination" );
  -            return new ConverterDefinition( className, source, destination );
  -        }
  -        else
  -        {
  -            // A type definition
  -            final String typeName = configuration.getAttribute( "name" );
  -            final String className = configuration.getAttribute( "classname" );
  -            return new TypeDefinition( typeName, roleShorthand, className );
  -        }
  -    }
  -
  -    /**
  -     * Handles a converter definition.
  -     */
  -    private void handleConverter( final Deployment deployment,
  -                                  final String className,
  -                                  final String source,
  -                                  final String destination )
  -        throws Exception
  -    {
  -        m_converterRegistry.registerConverter( className, source, destination );
  -        final DefaultTypeFactory factory = deployment.getFactory( Converter.class );
  -        factory.addNameClassMapping( className, className );
  -        m_typeManager.registerType( Converter.class, className, factory );
  -
  -        if( getLogger().isDebugEnabled() )
  -        {
  -            final String message =
  -                REZ.getString( "register-converter.notice", source, destination );
  -            getLogger().debug( message );
  -        }
  -    }
  -
  -    /**
        * Handles a type definition.
        */
  -    public void handleType( final Deployment deployment,
  +    public void deployType( final Deployment deployment,
                               final TypeDefinition typeDef )
           throws Exception
       {
  @@ -264,9 +216,31 @@
       }
   
       /**
  +     * Handles a converter definition.
  +     */
  +    private void handleConverter( final Deployment deployment,
  +                                  final String className,
  +                                  final String source,
  +                                  final String destination )
  +        throws Exception
  +    {
  +        m_converterRegistry.registerConverter( className, source, destination );
  +        final DefaultTypeFactory factory = deployment.getFactory( Converter.class );
  +        factory.addNameClassMapping( className, className );
  +        m_typeManager.registerType( Converter.class, className, factory );
  +
  +        if( getLogger().isDebugEnabled() )
  +        {
  +            final String message =
  +                REZ.getString( "register-converter.notice", source, destination );
  +            getLogger().debug( message );
  +        }
  +    }
  +
  +    /**
        * Handles a role definition.
        */
  -    public void handleRole( final Deployment deployment,
  +    public void deployRole( final Deployment deployment,
                               final RoleDefinition roleDef )
       {
           final String name = roleDef.getShortHand();
  
  
  
  1.19      +121 -115  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java
  
  Index: Deployment.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Deployment.java	10 Feb 2002 02:34:13 -0000	1.18
  +++ Deployment.java	12 Feb 2002 10:40:08 -0000	1.19
  @@ -12,35 +12,25 @@
   import java.util.ArrayList;
   import java.util.Enumeration;
   import java.util.HashMap;
  -import java.util.Iterator;
  -import java.util.List;
   import java.util.Map;
   import javax.xml.parsers.SAXParser;
   import javax.xml.parsers.SAXParserFactory;
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
  -import org.apache.avalon.framework.component.ComponentException;
  -import org.apache.avalon.framework.component.ComponentManager;
  -import org.apache.avalon.framework.configuration.Configuration;
  -import org.apache.avalon.framework.configuration.ConfigurationException;
   import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
  -import org.apache.myrmidon.converter.Converter;
  -import org.apache.myrmidon.interfaces.converter.ConverterRegistry;
  -import org.apache.myrmidon.interfaces.deployer.ConverterDefinition;
   import org.apache.myrmidon.interfaces.deployer.DeploymentException;
   import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
   import org.apache.myrmidon.interfaces.deployer.TypeDeployer;
  -import org.apache.myrmidon.interfaces.role.RoleManager;
   import org.apache.myrmidon.interfaces.type.DefaultTypeFactory;
  -import org.apache.myrmidon.interfaces.type.TypeManager;
   import org.xml.sax.XMLReader;
   
   /**
    * This class deploys type libraries from a ClassLoader into a registry.
    *
    * @author <a href="mailto:peter@apache.org">Peter Donald</a>
  - * @version $Revision: 1.18 $ $Date: 2002/02/10 02:34:13 $
  + * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
  + * @version $Revision: 1.19 $ $Date: 2002/02/12 10:40:08 $
    */
   class Deployment
       extends AbstractLogEnabled
  @@ -49,13 +39,19 @@
       private final static Resources REZ =
           ResourceManager.getPackageResources( Deployment.class );
   
  -    private final static String DESCRIPTOR_NAME = "META-INF/ant-descriptor.xml";
  +    private final static String TYPE_DESCRIPTOR_NAME = "META-INF/ant-descriptor.xml";
       private final static String ROLE_DESCRIPTOR_NAME = "META-INF/ant-roles.xml";
  +    private final static String SERVICE_DESCRIPTOR_NAME = "META-INF/ant-services.xml";
   
       private ClassLoader m_classLoader;
       private DefaultDeployer m_deployer;
  -    private String[] m_descriptorUrls;
  -    private Configuration[] m_descriptors;
  +    private TypeDescriptor[] m_descriptors;
  +    private ServiceDescriptor[] m_services;
  +
  +    // TODO - create and configure these in DefaultDeployer
  +    private DescriptorBuilder m_roleBuilder = new RoleDescriptorBuilder();
  +    private DescriptorBuilder m_typeBuilder = new TypeDescriptorBuilder();
  +    private DescriptorBuilder m_serviceBuilder = new ServiceDescriptorBuilder();
   
       /** Map from role Class -> DefaultTypeFactory for that role. */
       private Map m_factories = new HashMap();
  @@ -69,12 +65,13 @@
       /**
        * Load the descriptors.  Deploys all roles, then loads the descriptors
        * for, but does not deploy, all the types.
  +     *
  +     * @param jarUrl The URL for the typelib, used to locate the descriptors.
  +     *               If null, the resources from the classloader are used.
        */
       public void loadDescriptors( final URL jarUrl )
           throws Exception
       {
  -        final ArrayList descriptors = new ArrayList();
  -
           // Create a SAX parser to assemble the descriptors into Configuration
           // objects
           final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
  @@ -86,45 +83,51 @@
           parser.setContentHandler( handler );
           parser.setErrorHandler( handler );
   
  -        // Load the role descriptors, and deploy all roles
  -        final List roleUrls = locateResources( ROLE_DESCRIPTOR_NAME, jarUrl );
  -        for( Iterator iterator = roleUrls.iterator(); iterator.hasNext(); )
  -        {
  -            String url = (String)iterator.next();
  -            try
  -            {
  -                parser.parse( url );
  -            }
  -            catch( FileNotFoundException e )
  -            {
  -                // Ignore - this happens when jarUrl != null and the Jar does
  -                // not contain a role descriptor.
  -                continue;
  -            }
  +        // Build the role descriptors
  +        final ArrayList roleUrls = locateResources( ROLE_DESCRIPTOR_NAME, jarUrl );
  +        final ArrayList roleDescriptors = buildDescriptors( roleUrls, m_roleBuilder, parser,
handler );
  +
  +        // Deploy the roles
  +        // TODO - need to defer this
  +        for( int i = 0; i < roleDescriptors.size(); i++ )
  +        {
  +            final RoleDescriptor descriptor = (RoleDescriptor)roleDescriptors.get( i );
  +            deployRoles( descriptor );
  +        }
  +
  +        // Build the type descriptors
  +        final ArrayList typeUrls = locateResources( TYPE_DESCRIPTOR_NAME, jarUrl );
  +        final ArrayList typeDescriptors = buildDescriptors( typeUrls, m_typeBuilder, parser,
handler );
  +        m_descriptors = (TypeDescriptor[])typeDescriptors.toArray( new TypeDescriptor[
typeDescriptors.size() ] );
  +
  +        // Build the service descriptors
  +        final ArrayList serviceUrls = locateResources( SERVICE_DESCRIPTOR_NAME, jarUrl
);
  +        final ArrayList serviceDescriptors = buildDescriptors( serviceUrls, m_serviceBuilder,
parser, handler );
  +        m_services = (ServiceDescriptor[])serviceDescriptors.toArray( new ServiceDescriptor[
serviceDescriptors.size() ] );
  +    }
   
  -            handleRoleDescriptor( handler.getConfiguration(), url );
  -        }
  +    /**
  +     * Returns the type factory for a role.
  +     */
  +    public DefaultTypeFactory getFactory( final Class roleType )
  +    {
  +        DefaultTypeFactory factory = (DefaultTypeFactory)m_factories.get( roleType );
   
  -        // Load type descriptors
  -        final List typeUrls = locateResources( DESCRIPTOR_NAME, jarUrl );
  -        for( Iterator iterator = typeUrls.iterator(); iterator.hasNext(); )
  +        if( null == factory )
           {
  -            String url = (String)iterator.next();
  -            try
  -            {
  -                parser.parse( url.toString() );
  -            }
  -            catch( FileNotFoundException e )
  -            {
  -                // Ignore - this happens when jarUrl != null and the Jar does
  -                // not contain a type descriptor
  -                continue;
  -            }
  -
  -            descriptors.add( handler.getConfiguration() );
  +            factory = new DefaultTypeFactory( m_classLoader );
  +            m_factories.put( roleType, factory );
           }
  -        m_descriptorUrls = (String[])typeUrls.toArray( new String[ typeUrls.size() ] );
  -        m_descriptors = (Configuration[])descriptors.toArray( new Configuration[ descriptors.size()
] );
  +
  +        return factory;
  +    }
  +
  +    /**
  +     * Returns the classloader for this deployment.
  +     */
  +    public ClassLoader getClassLoader()
  +    {
  +        return m_classLoader;
       }
   
       /**
  @@ -135,8 +138,8 @@
       {
           for( int i = 0; i < m_descriptors.length; i++ )
           {
  -            Configuration descriptor = m_descriptors[ i ];
  -            deployFromDescriptor( descriptor, m_descriptorUrls[ i ] );
  +            TypeDescriptor descriptor = m_descriptors[ i ];
  +            deployTypes( descriptor );
           }
       }
   
  @@ -148,19 +151,21 @@
       {
           try
           {
  -            // Locate the entry for the type
  +            // Locate the definition for the type
               for( int i = 0; i < m_descriptors.length; i++ )
               {
  -                Configuration descriptor = m_descriptors[ i ];
  -                final Configuration[] datatypes =
  -                    descriptor.getChild( "types" ).getChildren( roleShorthand );
  -                for( int j = 0; j < datatypes.length; j++ )
  +                final TypeDescriptor descriptor = m_descriptors[ i ];
  +                final TypeDefinition[] definitions = descriptor.getDefinitions();
  +                for( int j = 0; j < definitions.length; j++ )
                   {
  -                    Configuration datatype = datatypes[ j ];
  -                    if( datatype.getAttribute( "name" ).equals( typeName ) )
  +                    TypeDefinition definition = definitions[ j ];
  +                    if( definition.getRole().equals( roleShorthand )
  +                        && definition.getName().equals( typeName ) )
                       {
  -                        final TypeDefinition typeDef = m_deployer.createTypeDefinition(
datatype );
  -                        m_deployer.handleType( this, typeDef );
  +                        // Found the definition - deploy it.  Note that we
  +                        // keep looking for matching types, and let the deployer
  +                        // deal with duplicates
  +                        m_deployer.deployType( this, definition );
                       }
                   }
               }
  @@ -178,30 +183,63 @@
       public void deployType( final TypeDefinition typeDef )
           throws DeploymentException
       {
  -        final String typeName = typeDef.getName();
  -        final String roleShorthand = typeDef.getRole();
           try
           {
  -            m_deployer.handleType( this, typeDef );
  +            m_deployer.deployType( this, typeDef );
           }
           catch( Exception e )
           {
  -            final String message = REZ.getString( "deploy-type.error", roleShorthand, typeName
);
  +            final String message = REZ.getString( "deploy-type.error", typeDef.getRole(),
typeDef.getName() );
               throw new DeploymentException( message, e );
           }
       }
   
       /**
  +     * Builds descriptors.
  +     */
  +    private ArrayList buildDescriptors( final ArrayList urls,
  +                                        final DescriptorBuilder builder,
  +                                        final XMLReader parser,
  +                                        final SAXConfigurationHandler handler )
  +        throws Exception
  +    {
  +        final ArrayList descriptors = new ArrayList();
  +        for( int i = 0; i < urls.size(); i++ )
  +        {
  +            final String url = (String)urls.get( i );
  +
  +            // Parse the file
  +            parser.parse( url );
  +            final TypelibDescriptor descriptor = builder.createDescriptor( handler.getConfiguration(),
url );
  +            descriptors.add( descriptor );
  +        }
  +
  +        return descriptors;
  +    }
  +
  +    /**
        * Locates all resources of a particular name.
        */
  -    private List locateResources( final String resource, final URL jarUrl )
  +    private ArrayList locateResources( final String resource, final URL jarUrl )
           throws Exception
       {
           final ArrayList urls = new ArrayList();
           if( null != jarUrl )
           {
               final String systemID = "jar:" + jarUrl + "!/" + resource;
  -            urls.add( systemID );
  +            try
  +            {
  +                // Probe the resource
  +                final URL url = new URL( systemID );
  +                url.openStream().close();
  +
  +                // Add to the list
  +                urls.add( systemID );
  +            }
  +            catch( FileNotFoundException e )
  +            {
  +                // Ignore
  +            }
           }
           else
           {
  @@ -216,77 +254,45 @@
       }
   
       /**
  -     * Configure RoleManager based on contents of single descriptor.
  -     *
  -     * @param descriptor the descriptor
  -     * @exception ConfigurationException if an error occurs
  +     * Deploys the roles from a role descriptor.
        */
  -    private void handleRoleDescriptor( final Configuration descriptor,
  -                                       final String url )
  -        throws ConfigurationException
  +    private void deployRoles( final RoleDescriptor descriptor )
       {
  -        final String message = REZ.getString( "url-deploy-roles.notice", url );
  +        final String message = REZ.getString( "url-deploy-roles.notice", descriptor.getUrl()
);
           getLogger().info( message );
   
  -        final Configuration[] types = descriptor.getChildren( "role" );
  -        for( int i = 0; i < types.length; i++ )
  +        final RoleDefinition[] definitions = descriptor.getDefinitions();
  +        for( int i = 0; i < definitions.length; i++ )
           {
  -            final String name = types[ i ].getAttribute( "shorthand" );
  -            final String role = types[ i ].getAttribute( "name" );
  -            final RoleDefinition roleDef = new RoleDefinition( role, name );
  -            m_deployer.handleRole( this, roleDef );
  +            final RoleDefinition definition = definitions[ i ];
  +            m_deployer.deployRole( this, definition );
           }
       }
   
       /**
        * Deploys all types from a typelib descriptor.
        */
  -    private void deployFromDescriptor( final Configuration descriptor,
  -                                       final String url )
  +    private void deployTypes( final TypeDescriptor descriptor )
           throws DeploymentException
       {
           try
           {
  -            final String message = REZ.getString( "url-deploy-types.notice", url );
  +            final String message = REZ.getString( "url-deploy-types.notice", descriptor.getUrl()
);
               getLogger().info( message );
   
               // Deploy all the types
  -            final Configuration[] typeEntries = descriptor.getChild( "types" ).getChildren();
  -            for( int i = 0; i < typeEntries.length; i++ )
  +            final TypeDefinition[] definitions = descriptor.getDefinitions();
  +            for( int i = 0; i < definitions.length; i++ )
               {
  -                final Configuration typeEntry = typeEntries[ i ];
  -                final TypeDefinition typeDef = m_deployer.createTypeDefinition( typeEntry
);
  -                m_deployer.handleType( this, typeDef );
  +                final TypeDefinition definition = definitions[ i ];
  +                m_deployer.deployType( this, definition );
               }
           }
           catch( final Exception e )
           {
  -            final String message = REZ.getString( "deploy-lib.error", url );
  +            final String message = REZ.getString( "deploy-types.error", descriptor.getUrl()
);
               throw new DeploymentException( message, e );
           }
       }
   
  -    /**
  -     * Returns the type factory for a role.
  -     */
  -    public DefaultTypeFactory getFactory( final Class roleType )
  -    {
  -        DefaultTypeFactory factory = (DefaultTypeFactory)m_factories.get( roleType );
  -
  -        if( null == factory )
  -        {
  -            factory = new DefaultTypeFactory( m_classLoader );
  -            m_factories.put( roleType, factory );
  -        }
  -
  -        return factory;
  -    }
  -
  -    /**
  -     * Returns the classloader for this deployment.
  -     */
  -    public ClassLoader getClassLoader()
  -    {
  -        return m_classLoader;
  -    }
   }
  
  
  
  1.8       +8 -2      jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Resources.properties
  
  Index: Resources.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Resources.properties,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Resources.properties	10 Feb 2002 02:34:13 -0000	1.7
  +++ Resources.properties	12 Feb 2002 10:40:08 -0000	1.8
  @@ -4,9 +4,9 @@
   url-deploy-types.notice=Registering types from "{0}".
   url-deploy-roles.notice=Registering roles from "{0}".
   
  -deploy-from-classloader.error=Could not register types from ClassLoader {0}.
  +deploy-from-classloader.error=Could not register types from ClassLoader.
   deploy-from-file.error=Could not register types from type library "{0}".
  -deploy-lib.error=Could not register types from "{0}".
  +deploy-types.error=Could not register types from "{0}".
   deploy-converter.error=Could not register converter that converts from {0} to {1}.
   deploy-type.error=Could not register type {0}/{1}.
   unknown-role4name.error=Unknown role "{0}".
  @@ -17,6 +17,12 @@
   typedef.no-role.error=Must specify type parameter.
   converterdef.no-source.error=Must specify the source-type parameter.
   converterdef.no-destination.error=Must specify the destination-type parameter.
  +role-descriptor-version.error=Role descriptor version {0} is incompatible with current
version {1}.
  +build-role-descriptor.error=Could not build role descriptor from "{0}".
  +type-descriptor-version.error=Type library descriptor version {0} is incompatible with
current version {1}.
  +build-type-descriptor.error=Could not build type library descriptor from "{0}".
  +service-descriptor-version.error=Service descriptor version {0} is incompatible with current
version {1}.
  +build-service-descriptor.error=Could not build service descriptor from "{0}".
   
   available-extensions.notice=The list of available extensions for type library includes;
{0}
   required-extensions.notice=The list of required extensions for type library includes; {0}
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DescriptorBuilder.java
  
  Index: DescriptorBuilder.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.myrmidon.components.deployer;
  
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.myrmidon.interfaces.deployer.DeploymentException;
  
  /**
   * Builds a descriptor.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  interface DescriptorBuilder
  {
      /**
       * Builds a descriptor from a set of configuration.
       */
      TypelibDescriptor createDescriptor( Configuration config,
                                          String descriptorUrl )
          throws DeploymentException;
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/RoleDescriptor.java
  
  Index: RoleDescriptor.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.myrmidon.components.deployer;
  
  import java.util.ArrayList;
  import java.util.List;
  
  /**
   * A typelib role descriptor, which defines a set of roles.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class RoleDescriptor
      extends TypelibDescriptor
  {
      private final List m_definitions = new ArrayList();
  
      public RoleDescriptor( final String url )
      {
          super( url );
      }
  
      /**
       * Returns the role definitions in the descriptor.
       */
      public RoleDefinition[] getDefinitions()
      {
          return (RoleDefinition[])m_definitions.toArray( new RoleDefinition[ m_definitions.size()
] );
      }
  
      /**
       * Adds a role definition to the descriptor.
       */
      public void addDefinition( final RoleDefinition def )
      {
          m_definitions.add( def );
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/RoleDescriptorBuilder.java
  
  Index: RoleDescriptorBuilder.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.myrmidon.components.deployer;
  
  import org.apache.avalon.excalibur.i18n.ResourceManager;
  import org.apache.avalon.excalibur.i18n.Resources;
  import org.apache.avalon.framework.Version;
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.myrmidon.interfaces.deployer.DeploymentException;
  
  /**
   * Builds typelib role descriptors.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class RoleDescriptorBuilder
      implements DescriptorBuilder
  {
      private final static Resources REZ =
          ResourceManager.getPackageResources( RoleDescriptorBuilder.class );
  
      private final static Version ROLE_DESCRIPTOR_VERSION = new Version( 1, 0, 0 );
  
      /**
       * Builds a descriptor from a set of configuration.
       */
      public TypelibDescriptor createDescriptor( final Configuration config,
                                                 final String url )
          throws DeploymentException
      {
          try
          {
              // Check version
              final String versionString = config.getAttribute( "version" );
              final Version version = Version.getVersion( versionString );
              if( ! ROLE_DESCRIPTOR_VERSION.complies( version ) )
              {
                  final String message = REZ.getString( "role-descriptor-version.error", version,
ROLE_DESCRIPTOR_VERSION );
                  throw new DeploymentException( message );
              }
  
              // Assemble the descriptor
              final RoleDescriptor descriptor = new RoleDescriptor( url );
  
              // Extract each of the role elements
              final Configuration[] types = config.getChildren( "role" );
              for( int i = 0; i < types.length; i++ )
              {
                  final String name = types[ i ].getAttribute( "shorthand" );
                  final String role = types[ i ].getAttribute( "name" );
                  final RoleDefinition roleDef = new RoleDefinition( role, name );
                  descriptor.addDefinition( roleDef );
              }
  
              return descriptor;
          }
          catch( Exception e )
          {
              final String message = REZ.getString( "build-role-descriptor.error", url );
              throw new DeploymentException( message, e );
          }
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/ServiceDefinition.java
  
  Index: ServiceDefinition.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.myrmidon.components.deployer;
  
  import org.apache.avalon.framework.configuration.Configuration;
  
  /**
   * A service definition.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class ServiceDefinition
  {
      private final String m_roleShorthand;
      private final String m_factoryClass;
      private final Configuration m_config;
  
      public ServiceDefinition( final String roleShorthand,
                                final String factoryClass,
                                final Configuration config )
      {
          m_roleShorthand = roleShorthand;
          m_factoryClass = factoryClass;
          m_config = config;
      }
  
      /**
       * Returns the role that the service implements.
       */
      public String getRoleShorthand()
      {
          return m_roleShorthand;
      }
  
      /**
       * Returns the name of the factory class for creating the service.
       */
      public String getFactoryClass()
      {
          return m_factoryClass;
      }
  
      /**
       * Returns the service configuration.
       */
      public Configuration getConfig()
      {
          return m_config;
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/ServiceDescriptor.java
  
  Index: ServiceDescriptor.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.myrmidon.components.deployer;
  
  import java.util.ArrayList;
  import java.util.List;
  
  /**
   * A typelib service descriptor, which defines a set of services.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class ServiceDescriptor
      extends TypelibDescriptor
  {
      private final List m_services = new ArrayList();
  
      public ServiceDescriptor( final String url )
      {
          super( url );
      }
  
      public ServiceDefinition[] getDefinitions()
      {
          return (ServiceDefinition[])m_services.toArray( new ServiceDefinition[ m_services.size()
] );
      }
  
      public void addDefinition( final ServiceDefinition definition )
      {
          m_services.add( definition );
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/ServiceDescriptorBuilder.java
  
  Index: ServiceDescriptorBuilder.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.myrmidon.components.deployer;
  
  import org.apache.avalon.excalibur.i18n.ResourceManager;
  import org.apache.avalon.excalibur.i18n.Resources;
  import org.apache.avalon.framework.Version;
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.myrmidon.interfaces.deployer.DeploymentException;
  
  /**
   * Builds typelib service descriptors.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class ServiceDescriptorBuilder
      implements DescriptorBuilder
  {
      private final static Resources REZ =
          ResourceManager.getPackageResources( ServiceDescriptorBuilder.class );
  
      private final static Version SERVICE_DESCRIPTOR_VERSION = new Version( 1, 0, 0 );
  
      /**
       * Builds a descriptor from a set of configuration.
       */
      public TypelibDescriptor createDescriptor( final Configuration config,
                                                 final String url )
          throws DeploymentException
      {
          try
          {
              // Check version
              final String versionString = config.getAttribute( "version" );
              final Version version = Version.getVersion( versionString );
              if( ! SERVICE_DESCRIPTOR_VERSION.complies( version ) )
              {
                  final String message = REZ.getString( "service-descriptor-version.error",
version, SERVICE_DESCRIPTOR_VERSION );
                  throw new DeploymentException( message );
              }
  
              // TODO - populate the descriptor
  
              return new ServiceDescriptor( url );
          }
          catch( Exception e )
          {
              final String message = REZ.getString( "build-service-descriptor.error", url
);
              throw new DeploymentException( message, e );
          }
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/TypeDescriptor.java
  
  Index: TypeDescriptor.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.myrmidon.components.deployer;
  
  import java.util.ArrayList;
  import java.util.List;
  import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
  
  /**
   * A typelib type descriptor, which defines a set of types.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class TypeDescriptor
      extends TypelibDescriptor
  {
      private final List m_definitions = new ArrayList();
  
      public TypeDescriptor( final String url )
      {
          super( url );
      }
  
      public TypeDefinition[] getDefinitions()
      {
          return (TypeDefinition[])m_definitions.toArray( new TypeDefinition[ m_definitions.size()
] );
      }
  
      public void addDefinition( final TypeDefinition def )
      {
          m_definitions.add( def );
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/TypeDescriptorBuilder.java
  
  Index: TypeDescriptorBuilder.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.myrmidon.components.deployer;
  
  import org.apache.avalon.excalibur.i18n.ResourceManager;
  import org.apache.avalon.excalibur.i18n.Resources;
  import org.apache.avalon.framework.Version;
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.avalon.framework.configuration.ConfigurationException;
  import org.apache.myrmidon.interfaces.deployer.ConverterDefinition;
  import org.apache.myrmidon.interfaces.deployer.DeploymentException;
  import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
  
  /**
   * Builds typelib type descriptors.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class TypeDescriptorBuilder
      implements DescriptorBuilder
  {
      private final static Resources REZ =
          ResourceManager.getPackageResources( TypeDescriptorBuilder.class );
  
      private final static Version TYPE_DESCRIPTOR_VERSION = new Version( 1, 0, 0 );
  
      /**
       * Builds a descriptor from a set of configuration.
       */
      public TypelibDescriptor createDescriptor( final Configuration config,
                                                 final String url )
          throws DeploymentException
      {
          try
          {
              // Check version
              final String versionString = config.getAttribute( "version" );
              final Version version = Version.getVersion( versionString );
              if( ! TYPE_DESCRIPTOR_VERSION.complies( version ) )
              {
                  final String message = REZ.getString( "type-descriptor-version.error", version,
TYPE_DESCRIPTOR_VERSION );
                  throw new DeploymentException( message );
              }
  
              // Assemble the descriptor
              final TypeDescriptor descriptor = new TypeDescriptor( url );
  
              // Extract each of the types elements
              final Configuration[] typeEntries = config.getChild( "types" ).getChildren();
              for( int i = 0; i < typeEntries.length; i++ )
              {
                  final Configuration typeEntry = typeEntries[ i ];
                  final TypeDefinition typeDef = createTypeDefinition( typeEntry );
                  descriptor.addDefinition( typeDef );
              }
  
              return descriptor;
          }
          catch( Exception e )
          {
              final String message = REZ.getString( "build-type-descriptor.error", url );
              throw new DeploymentException( message, e );
          }
      }
  
      /**
       * Creates a type definition.
       */
      public TypeDefinition createTypeDefinition( final Configuration configuration )
          throws ConfigurationException
      {
          final String roleShorthand = configuration.getName();
          if( roleShorthand.equals( "converter" ) )
          {
              // A converter definition
              final String className = configuration.getAttribute( "classname" );
              final String source = configuration.getAttribute( "source" );
              final String destination = configuration.getAttribute( "destination" );
              return new ConverterDefinition( className, source, destination );
          }
          else
          {
              // A type definition
              final String typeName = configuration.getAttribute( "name" );
              final String className = configuration.getAttribute( "classname" );
              return new TypeDefinition( typeName, roleShorthand, className );
          }
      }
  }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/TypelibDescriptor.java
  
  Index: TypelibDescriptor.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.myrmidon.components.deployer;
  
  /**
   * A descriptor from a typelib.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
   */
  class TypelibDescriptor
  {
      private final String m_url;
  
      public TypelibDescriptor( final String url )
      {
          m_url = url;
      }
  
      /**
       * Returns the descriptor URL.
       */
      public String getUrl()
      {
          return m_url;
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message