adammurdoch    02/02/13 18:07:02

  Modified:    
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor
                        DefaultEmbeddor.java
               
proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer
                        DefaultDeployer.java Deployment.java
                        Resources.properties ServiceDescriptorBuilder.java
  Log:
  * Deployer now deploys services from META-INF/ant-services.xml
  * Embeddor now creates a ServiceManager component.
  
  Revision  Changes    Path
  1.24      +3 -1      
jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
  
  Index: DefaultEmbeddor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- DefaultEmbeddor.java      13 Feb 2002 03:02:54 -0000      1.23
  +++ DefaultEmbeddor.java      14 Feb 2002 02:07:02 -0000      1.24
  @@ -38,6 +38,7 @@
   import org.apache.myrmidon.interfaces.extensions.ExtensionManager;
   import org.apache.myrmidon.interfaces.model.Project;
   import org.apache.myrmidon.interfaces.role.RoleManager;
  +import org.apache.myrmidon.interfaces.service.ServiceManager;
   import org.apache.myrmidon.interfaces.type.TypeFactory;
   import org.apache.myrmidon.interfaces.type.TypeManager;
   import org.apache.myrmidon.interfaces.workspace.Workspace;
  @@ -48,7 +49,7 @@
    * Instantiate this to embed inside other applications.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
  - * @version $Revision: 1.23 $ $Date: 2002/02/13 03:02:54 $
  + * @version $Revision: 1.24 $ $Date: 2002/02/14 02:07:02 $
    */
   public class DefaultEmbeddor
       extends AbstractLogEnabled
  @@ -245,6 +246,7 @@
           createComponent( Deployer.class, PREFIX + "deployer.DefaultDeployer" 
);
           createComponent( ClassLoaderManager.class, PREFIX + 
"deployer.DefaultClassLoaderManager" );
           createComponent( Executor.class, PREFIX + 
"executor.AspectAwareExecutor" );
  +        createComponent( ServiceManager.class, PREFIX + 
"service.DefaultServiceManager" );
       }
   
       /**
  
  
  
  1.24      +31 -13    
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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- DefaultDeployer.java      12 Feb 2002 10:40:08 -0000      1.23
  +++ DefaultDeployer.java      14 Feb 2002 02:07:02 -0000      1.24
  @@ -25,6 +25,8 @@
   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.service.ServiceFactory;
  +import org.apache.myrmidon.interfaces.service.ServiceManager;
   import org.apache.myrmidon.interfaces.type.DefaultTypeFactory;
   import org.apache.myrmidon.interfaces.type.TypeManager;
   
  @@ -33,7 +35,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
  - * @version $Revision: 1.23 $ $Date: 2002/02/12 10:40:08 $
  + * @version $Revision: 1.24 $ $Date: 2002/02/14 02:07:02 $
    */
   public class DefaultDeployer
       extends AbstractLogEnabled
  @@ -50,6 +52,7 @@
   
       /** Map from ClassLoader to the deployer for that class loader. */
       private final Map m_classLoaderDeployers = new HashMap();
  +    private ServiceManager m_ServiceManager;
   
       /**
        * Retrieve relevent services needed to deploy.
  @@ -64,6 +67,7 @@
           m_typeManager = (TypeManager)componentManager.lookup( 
TypeManager.ROLE );
           m_roleManager = (RoleManager)componentManager.lookup( 
RoleManager.ROLE );
           m_classLoaderManager = (ClassLoaderManager)componentManager.lookup( 
ClassLoaderManager.ROLE );
  +        m_ServiceManager = (ServiceManager)componentManager.lookup( 
ServiceManager.ROLE );
       }
   
       /**
  @@ -136,6 +140,21 @@
       }
   
       /**
  +     * Deploys a service.
  +     */
  +    public void deployService( final Deployment deployment,
  +                               final ServiceDefinition definition )
  +        throws Exception
  +    {
  +        // Determine the service interface class name
  +        String serviceTypeName = getRoleForName( 
definition.getRoleShorthand() );
  +
  +        // Register the service factory
  +        final String factoryClassName = definition.getFactoryClass();
  +        handleType( deployment, ServiceFactory.class, serviceTypeName, 
factoryClassName );
  +    }
  +
  +    /**
        * Handles a type definition.
        */
       public void deployType( final Deployment deployment,
  @@ -187,7 +206,16 @@
               }
   
               // Deploy general-purpose type
  -            handleType( deployment, roleShorthand, typeName, className );
  +            final String role = getRoleForName( roleShorthand );
  +            final Class roleType = deployment.getClassLoader().loadClass( 
role );
  +            handleType( deployment, roleType, typeName, className );
  +
  +            if( getLogger().isDebugEnabled() )
  +            {
  +                final String message =
  +                    REZ.getString( "register-type.notice", roleShorthand, 
typeName );
  +                getLogger().debug( message );
  +            }
           }
       }
   
  @@ -195,24 +223,15 @@
        * Handles a type definition.
        */
       private void handleType( final Deployment deployment,
  -                             final String roleShorthand,
  +                             final Class roleType,
                                final String typeName,
                                final String className )
           throws Exception
       {
           // TODO - detect duplicates
  -        final String role = getRoleForName( roleShorthand );
  -        final Class roleType = deployment.getClassLoader().loadClass( role );
           final DefaultTypeFactory factory = deployment.getFactory( roleType );
           factory.addNameClassMapping( typeName, className );
           m_typeManager.registerType( roleType, typeName, factory );
  -
  -        if( getLogger().isDebugEnabled() )
  -        {
  -            final String message =
  -                REZ.getString( "register-type.notice", roleShorthand, 
typeName );
  -            getLogger().debug( message );
  -        }
       }
   
       /**
  @@ -270,5 +289,4 @@
   
           return role;
       }
  -
   }
  
  
  
  1.20      +35 -1     
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.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Deployment.java   12 Feb 2002 10:40:08 -0000      1.19
  +++ Deployment.java   14 Feb 2002 02:07:02 -0000      1.20
  @@ -30,7 +30,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
  - * @version $Revision: 1.19 $ $Date: 2002/02/12 10:40:08 $
  + * @version $Revision: 1.20 $ $Date: 2002/02/14 02:07:02 $
    */
   class Deployment
       extends AbstractLogEnabled
  @@ -136,11 +136,19 @@
       public void deployAll()
           throws DeploymentException
       {
  +        // Deploy types
           for( int i = 0; i < m_descriptors.length; i++ )
           {
               TypeDescriptor descriptor = m_descriptors[ i ];
               deployTypes( descriptor );
           }
  +
  +        // Deploy services
  +        for( int i = 0; i < m_services.length; i++ )
  +        {
  +            final ServiceDescriptor descriptor = m_services[ i ];
  +            deployServices( descriptor );
  +        }
       }
   
       /**
  @@ -295,4 +303,30 @@
           }
       }
   
  +    /**
  +     * Deploys all services from a typelib descriptor.
  +     */
  +    private void deployServices( final ServiceDescriptor descriptor )
  +        throws DeploymentException
  +    {
  +
  +        try
  +        {
  +            final String message = REZ.getString( 
"url-deploy-services.notice", descriptor.getUrl() );
  +            getLogger().info( message );
  +
  +            // Deploy the services
  +            final ServiceDefinition[] definitions = 
descriptor.getDefinitions();
  +            for( int i = 0; i < definitions.length; i++ )
  +            {
  +                final ServiceDefinition definition = definitions[ i ];
  +                m_deployer.deployService( this, definition );
  +            }
  +        }
  +        catch( Exception e )
  +        {
  +            final String message = REZ.getString( "deploy-services.error", 
descriptor.getUrl() );
  +            throw new DeploymentException( message, e );
  +        }
  +    }
   }
  
  
  
  1.9       +2 -0      
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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Resources.properties      12 Feb 2002 10:40:08 -0000      1.8
  +++ Resources.properties      14 Feb 2002 02:07:02 -0000      1.9
  @@ -3,10 +3,12 @@
   register-role.notice=Registered role {0} with shorthand name {1}.
   url-deploy-types.notice=Registering types from "{0}".
   url-deploy-roles.notice=Registering roles from "{0}".
  +url-deploy-services.notice=Registering services from "{0}".
   
   deploy-from-classloader.error=Could not register types from ClassLoader.
   deploy-from-file.error=Could not register types from type library "{0}".
   deploy-types.error=Could not register types from "{0}".
  +deploy-services.error=Could not register services 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}".
  
  
  
  1.2       +15 -3     
jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/ServiceDescriptorBuilder.java
  
  Index: ServiceDescriptorBuilder.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/ServiceDescriptorBuilder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ServiceDescriptorBuilder.java     12 Feb 2002 10:40:08 -0000      1.1
  +++ ServiceDescriptorBuilder.java     14 Feb 2002 02:07:02 -0000      1.2
  @@ -17,7 +17,7 @@
    * Builds typelib service descriptors.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
  - * @version $Revision: 1.1 $ $Date: 2002/02/12 10:40:08 $
  + * @version $Revision: 1.2 $ $Date: 2002/02/14 02:07:02 $
    */
   class ServiceDescriptorBuilder
       implements DescriptorBuilder
  @@ -45,9 +45,21 @@
                   throw new DeploymentException( message );
               }
   
  -            // TODO - populate the descriptor
  +            // Build the descriptor
  +            final ServiceDescriptor descriptor = new ServiceDescriptor( url 
);
   
  -            return new ServiceDescriptor( url );
  +            // Add the service definitions
  +            final Configuration[] elements = config.getChildren();
  +            for( int i = 0; i < elements.length; i++ )
  +            {
  +                final Configuration element = elements[ i ];
  +                final String roleShorthand = element.getName();
  +                final String factoryClassName = element.getAttribute( 
"factory" );
  +                final ServiceDefinition definition = new ServiceDefinition( 
roleShorthand, factoryClassName, config );
  +                descriptor.addDefinition( definition );
  +            }
  +
  +            return descriptor;
           }
           catch( Exception e )
           {
  
  
  

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

Reply via email to