mcconnell    2002/12/16 20:56:35

  Modified:    assembly/src/java/org/apache/avalon/assembly/lifecycle
                        DefaultDeploymentService.java
  Log:
  Consolidates Composable and Serviceable under a single handler.
  
  Revision  Changes    Path
  1.6       +42 -20    
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/DefaultDeploymentService.java
  
  Index: DefaultDeploymentService.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/DefaultDeploymentService.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DefaultDeploymentService.java     14 Dec 2002 21:04:41 -0000      1.5
  +++ DefaultDeploymentService.java     17 Dec 2002 04:56:34 -0000      1.6
  @@ -66,6 +66,7 @@
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   
   import org.apache.avalon.assembly.appliance.Appliance;
  +import org.apache.avalon.assembly.engine.AssemblyService;
   import org.apache.avalon.assembly.lifecycle.logging.LoggingService;
   import org.apache.avalon.assembly.lifecycle.logging.DefaultLoggingService;
   import org.apache.avalon.assembly.lifecycle.configuration.ConfigurationService;
  @@ -101,6 +102,7 @@
   
       private Context m_context;
       private ServiceManager m_manager;
  +    private AssemblyService m_assembly;
   
       private LoggingService m_logging;
       private ConfigurationService m_configuration;
  @@ -176,6 +178,8 @@
               throw new NullPointerException( "manager" );
           }
   
  +        m_assembly = (AssemblyService) manager.lookup( 
"urn:assembly:engine.assembly" );
  +
           final String classloaderkey = "urn:assembly:engine.classloader";
           if( !manager.hasService( classloaderkey ) )
           {
  @@ -208,7 +212,7 @@
               m_contextualization = (ContextualizationService) manager.lookup( key );
           }
   
  -        key = "urn:assembly:lifecycle.assembly";
  +        key = "urn:assembly:lifecycle.composition";
           if( manager.hasService( key ) )
           {
               m_composition = (CompositionService) manager.lookup( key );
  @@ -290,7 +294,7 @@
       //==============================================================
   
      /**
  -    * Deploy an appliance based ona supplied classloader, logging channel and 
  +    * Deploy an appliance based on a supplied classloader, logging channel and 
       * containment context.
       * @param classloader the classloader to use
       * @param appliance the appliance to deploy
  @@ -318,6 +322,25 @@
               throw new NullPointerException( "context" );
           }
   
  +        //
  +        // make sure we are deploying a fully assembled appliance
  +        //
  +
  +        try
  +        {
  +            m_assembly.assemble( appliance );
  +        }
  +        catch( Throwable e )
  +        {
  +            final String error = 
  +              "Unresolved dependencies in appliance: " + appliance;
  +            throw new DeploymentException( error, e );
  +        }
  +
  +        //
  +        // commence deployment
  +        //
  +
           Object instance;
           try
           {
  @@ -341,14 +364,7 @@
               m_configuration.configure( appliance, instance );
               m_parameters.parameterize( appliance, instance );
               m_contextualization.contextualize( appliance, instance, context );
  -            if( instance instanceof Serviceable )
  -            {
  -                m_composition.service( appliance, instance );
  -            }
  -            else if( instance instanceof Composable )
  -            {
  -                m_composition.compose( appliance, instance );
  -            }
  +            m_composition.service( appliance, instance );
               m_initialization.initialize( appliance, instance );
               m_startup.start( appliance, instance );
   
  @@ -369,15 +385,21 @@
       */
       public void decommission( Appliance appliance, Object instance )
       {
  -         try
  -         {
  -             m_startup.stop( appliance, instance );
  -         }
  -         catch( Throwable e )
  -         {
  -             // log a warning
  -         }
  -         m_disposal.dispose( appliance, instance );
  +        //
  +        // make sure all dependent components are decommissioned
  +        //
  +
  +        m_assembly.disassemble( appliance );
  +
  +        try
  +        {
  +            m_startup.stop( appliance, instance );
  +        }
  +        catch( Throwable e )
  +        {
  +            // log a warning
  +        }
  +        m_disposal.dispose( appliance, instance );
       }
   
       private LoggingService makeLoggingService() throws DeploymentException
  
  
  

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

Reply via email to