You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2003/10/19 08:12:59 UTC

cvs commit: avalon/merlin/platform/tutorials/lifecycle/activation project.xml

mcconnell    2003/10/18 23:12:59

  Modified:    merlin/activation/api project.xml
               merlin/activation/impl project.xml
               merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl
                        DefaultAppliance.java
               merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl
                        AbstractLifestyleHandler.java
                        PooledLifestyleHandler.java
                        SingletonLifestyleHandler.java
                        ThreadLifestyleHandler.java
                        TransientLifestyleHandler.java
               merlin/activation/spi project.xml
               merlin/activation/spi/src/java/org/apache/avalon/activation/lifestyle
                        LifestyleHandler.java
               merlin/composition/api project.xml
               merlin/composition/api/src/java/org/apache/avalon/composition/data
                        DeploymentProfile.java
               merlin/composition/api/src/java/org/apache/avalon/composition/model
                        DeploymentModel.java
               merlin/composition/impl project.xml
               merlin/composition/impl/src/java/org/apache/avalon/composition/data/builder
                        XMLDeploymentProfileCreator.java
               merlin/composition/impl/src/java/org/apache/avalon/composition/data/writer
                        XMLDeploymentProfileWriter.java
               merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl
                        DefaultDeploymentModel.java
               merlin/composition/impl/src/test/org/apache/avalon/composition/data/test
                        DeploymentProfileTestCase.java
               merlin/composition/spi project.xml
               merlin/kernel/bootstrap/src/etc merlin.properties
               merlin/kernel/impl project.xml
               merlin/kernel/plugin project.xml
               merlin/kernel/spi project.xml
               merlin/kernel/unit project.xml
               merlin/kernel/unit/src/etc merlin.properties
               merlin/kernel/unit/src/java/org/apache/avalon/merlin/unit
                        DefaultEmbeddedKernel.java
               merlin   platform.xml
               merlin/platform/tutorials/context/strategy project.xml
               merlin/platform/tutorials/lifecycle/activation project.xml
  Log:
  Update meta-data to expose a collection policy override.  Update meta-model to allow explicit setting of a type collection policy.  Udpate component proxy to declare release of finaliuzed component instances to a lifestyle handler. Bump related versions.
  
  Revision  Changes    Path
  1.3       +3 -3      avalon/merlin/activation/api/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/api/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml	17 Oct 2003 03:26:28 -0000	1.2
  +++ project.xml	19 Oct 2003 06:12:57 -0000	1.3
  @@ -8,7 +8,7 @@
     <id>avalon-activation-api</id>
     <name>Avalon Activation API</name>
     <package>org.apache.avalon.activation</package>
  -  <currentVersion>1.1-dev</currentVersion>
  +  <currentVersion>1.2-dev</currentVersion>
   
     <inceptionYear>2002</inceptionYear>
     <shortDescription>Activation API</shortDescription>
  @@ -27,12 +27,12 @@
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
     </dependencies>
  
  
  
  1.4       +9 -9      avalon/merlin/activation/impl/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/impl/project.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- project.xml	17 Oct 2003 03:26:28 -0000	1.3
  +++ project.xml	19 Oct 2003 06:12:57 -0000	1.4
  @@ -8,7 +8,7 @@
     <id>avalon-activation-impl</id>
     <name>Avalon Activation Framework</name>
     <package>org.apache.avalon.activation</package>
  -  <currentVersion>1.1-dev</currentVersion>
  +  <currentVersion>1.2-dev</currentVersion>
   
     <inceptionYear>2002</inceptionYear>
     <shortDescription>Runtime activation framework.</shortDescription>
  @@ -44,44 +44,44 @@
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-impl</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-spi</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-impl</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
   
       <dependency>
  
  
  
  1.5       +17 -4     avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java
  
  Index: DefaultAppliance.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultAppliance.java	18 Oct 2003 00:34:19 -0000	1.4
  +++ DefaultAppliance.java	19 Oct 2003 06:12:58 -0000	1.5
  @@ -572,10 +572,21 @@
        */
       public void release( Object instance )
       {
  +        release( instance, false );
  +    }
  +
  +    /**
  +     * Release an object.
  +     *
  +     * @param finalized the finalized state of the object
  +     * @param instance the object to be released
  +     */
  +    private void release( Object instance, boolean finalized )
  +    {
           if( instance == null ) return;
           if( !m_deployment.isEnabled() ) return;
           releaseInstance( getProviderInstance( instance ) );
  -        m_lifestyle.release( instance );
  +        m_lifestyle.release( instance, finalized );
       }
   
       private void accessInstance( Object instance ) throws Exception
  @@ -597,7 +608,6 @@
           }
       }
   
  -
       private Object getProviderInstance( Object instance )
       {
           if( Proxy.isProxyClass( instance.getClass() ) )
  @@ -1218,7 +1228,10 @@
           {
               if( !m_disposed )
               {
  -                release( m_instance );
  +                final String message = 
  +                  "Releasing finalized component in [" + m_model.getQualifiedName() + "].";
  +                getLogger().debug( message );
  +                release( m_instance, true );
               }
           }
   
  
  
  
  1.4       +16 -9     avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/AbstractLifestyleHandler.java
  
  Index: AbstractLifestyleHandler.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/AbstractLifestyleHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractLifestyleHandler.java	17 Oct 2003 06:44:49 -0000	1.3
  +++ AbstractLifestyleHandler.java	19 Oct 2003 06:12:58 -0000	1.4
  @@ -72,8 +72,6 @@
   {
       private final Factory m_factory;
   
  -    private final InfoDescriptor m_info;
  -
       private final ReferenceQueue m_liberals = new ReferenceQueue();
   
       private final ReferenceQueue m_democrats = new ReferenceQueue();
  @@ -85,22 +83,27 @@
       public AbstractLifestyleHandler( Logger logger, Factory factory  )
       {
           enableLogging( logger );
  -        m_info = factory.getDeploymentModel().getType().getInfo();
           m_factory = factory;
       }
   
  -    Factory getFactory()
  -    { 
  -        return m_factory;
  +    /**
  +     * Release an object. 
  +     *
  +     * @param instance the object to be reclaimed
  +     */
  +    public void release( Object instance )
  +    {
  +        release( instance, false );
       }
   
       Reference getReference( Object instance )
       {
  -        if( m_info.isLiberal() )
  +        final String policy = getFactory().getDeploymentModel().getCollectionPolicy();
  +        if( policy.equals( InfoDescriptor.LIBERAL ) )
           {
                return new WeakReference( instance, m_liberals );
           }
  -        else if( m_info.isDemocrat() )
  +        else if( policy.equals( InfoDescriptor.DEMOCRAT )  )
           {
                return new SoftReference( instance );
           }
  @@ -142,4 +145,8 @@
           return m_factory.newInstance();
       }
       
  +    Factory getFactory()
  +    { 
  +        return m_factory;
  +    }
   }
  
  
  
  1.4       +5 -5      avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/PooledLifestyleHandler.java
  
  Index: PooledLifestyleHandler.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/PooledLifestyleHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PooledLifestyleHandler.java	17 Oct 2003 06:44:49 -0000	1.3
  +++ PooledLifestyleHandler.java	19 Oct 2003 06:12:58 -0000	1.4
  @@ -78,13 +78,13 @@
       }
   
       /**
  -     * Release an object. 
  +     * Release an object
        *
  -     * @param instance the object to be reclaimed
  +     * @param instance the object to be released
  +     * @param finalized if TRUE the lifestyle handler cannot reuse the instance
        */
  -    public void release( Object instance )
  +    public void release( Object instance, boolean finalized )
       {
           throw new UnsupportedOperationException();
       }
  -
   }
  
  
  
  1.5       +13 -7     avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/SingletonLifestyleHandler.java
  
  Index: SingletonLifestyleHandler.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/SingletonLifestyleHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SingletonLifestyleHandler.java	18 Oct 2003 00:34:19 -0000	1.4
  +++ SingletonLifestyleHandler.java	19 Oct 2003 06:12:58 -0000	1.5
  @@ -79,7 +79,7 @@
        * @return the resolved object
        * @throws Exception if an error occurs
        */
  -    public Object resolve() throws Exception
  +    public synchronized Object resolve() throws Exception
       {
           Object instance = null;
   
  @@ -102,13 +102,21 @@
       }
   
       /**
  -     * Release an object.
  +     * Release an object
        *
        * @param instance the object to be released
  +     * @param finalized if TRUE the lifestyle handler cannot reuse the instance
        */
  -    public void release( Object instance )
  +    public synchronized void release( Object instance, boolean finalized )
       {
  -        // don't release singleton types
  +        if( finalized )
  +        {
  +            m_reference = null;
  +        }
  +        else
  +        {
  +            // continue with the current reference
  +        }
       }
   
      /**
  @@ -132,6 +140,4 @@
               return instance;
           }
       }
  -
  -
   }
  
  
  
  1.4       +16 -9     avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/ThreadLifestyleHandler.java
  
  Index: ThreadLifestyleHandler.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/ThreadLifestyleHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ThreadLifestyleHandler.java	17 Oct 2003 06:44:49 -0000	1.3
  +++ ThreadLifestyleHandler.java	19 Oct 2003 06:12:58 -0000	1.4
  @@ -50,6 +50,7 @@
   
   package org.apache.avalon.activation.lifestyle.impl;
   
  +import org.apache.avalon.activation.lifecycle.LifecycleRuntimeException;
   import org.apache.avalon.activation.lifecycle.Factory;
   import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.framework.activity.Disposable;
  @@ -88,12 +89,9 @@
               }
               catch( Exception e )
               {
  -                //
  -                // TODO: Should be throwing some sort of runtime 
  -                // exception in this case or at least logging a warning.
  -                //
  -
  -                return null;
  +                final String error = 
  +                  "Unable to establish thread local variable.";
  +                throw new LifecycleRuntimeException( error );
               }
           }
       }
  @@ -129,9 +127,18 @@
        *
        * @param instance the object to be reclaimed
        */
  -    public void release( Object instance )
  +    public void release( Object instance, boolean finalized )
       {
  -        // don't release
  +        if( finalized )
  +        {
  +            final String error =
  +              "Not possible because the thread local varliable is holding a hard reference.";
  +            throw new IllegalStateException( error );
  +        }
  +        else
  +        {
  +            // don't release because this is a sharable reference
  +        }
       }
   
      /**
  
  
  
  1.5       +5 -4      avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/TransientLifestyleHandler.java
  
  Index: TransientLifestyleHandler.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/TransientLifestyleHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TransientLifestyleHandler.java	18 Oct 2003 00:34:19 -0000	1.4
  +++ TransientLifestyleHandler.java	19 Oct 2003 06:12:58 -0000	1.5
  @@ -90,11 +90,12 @@
       }
   
       /**
  -     * Release an object. 
  +     * Release an object
        *
  -     * @param instance the object to be reclaimed
  +     * @param instance the object to be released
  +     * @param finalized if TRUE the lifestyle handler cannot reuse the instance
        */
  -    public void release( Object instance )
  +    public void release( Object instance, boolean finalized )
       {
           disposeInstance( instance );
       }
  
  
  
  1.3       +6 -5      avalon/merlin/activation/spi/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/spi/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml	17 Oct 2003 03:26:28 -0000	1.2
  +++ project.xml	19 Oct 2003 06:12:58 -0000	1.3
  @@ -8,7 +8,7 @@
     <id>avalon-activation-spi</id>
     <name>Avalon Activation SPI</name>
     <package>org.apache.avalon.activation</package>
  -  <currentVersion>1.1-dev</currentVersion>
  +  <currentVersion>1.2-dev</currentVersion>
   
     <inceptionYear>2002</inceptionYear>
     <shortDescription>Activation Service Provider Interface</shortDescription>
  @@ -32,27 +32,28 @@
         <artifactId>avalon-framework-api</artifactId>
         <version>4.1.5</version>
       </dependency>
  +
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-spi</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
  
  
  
  1.3       +9 -1      avalon/merlin/activation/spi/src/java/org/apache/avalon/activation/lifestyle/LifestyleHandler.java
  
  Index: LifestyleHandler.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/activation/spi/src/java/org/apache/avalon/activation/lifestyle/LifestyleHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LifestyleHandler.java	17 Oct 2003 03:26:29 -0000	1.2
  +++ LifestyleHandler.java	19 Oct 2003 06:12:58 -0000	1.3
  @@ -73,4 +73,12 @@
        */
       void release( Object instance );
   
  +    /**
  +     * Release an object
  +     *
  +     * @param instance the object to be released
  +     * @param finalized if TRUE the lifestyle handler cannot reuse the instance
  +     */
  +    void release( Object instance, boolean finalized );
  +
   }
  
  
  
  1.3       +3 -3      avalon/merlin/composition/api/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/api/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.2
  +++ project.xml	19 Oct 2003 06:12:58 -0000	1.3
  @@ -8,7 +8,7 @@
     <id>avalon-composition-api</id>
     <name>Avalon Composition API</name>
     <package>org.apache.avalon.assembly</package>
  -  <currentVersion>1.1-dev</currentVersion>
  +  <currentVersion>1.2-dev</currentVersion>
   
     <inceptionYear>2002</inceptionYear>
     <shortDescription>Avalon Composition SPI</shortDescription>
  @@ -34,12 +34,12 @@
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-spi</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
   
       <dependency>
  
  
  
  1.3       +29 -2     avalon/merlin/composition/api/src/java/org/apache/avalon/composition/data/DeploymentProfile.java
  
  Index: DeploymentProfile.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/api/src/java/org/apache/avalon/composition/data/DeploymentProfile.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DeploymentProfile.java	4 Oct 2003 11:53:03 -0000	1.2
  +++ DeploymentProfile.java	19 Oct 2003 06:12:58 -0000	1.3
  @@ -61,6 +61,7 @@
   import org.apache.avalon.meta.info.DependencyDescriptor;
   import org.apache.avalon.meta.info.ReferenceDescriptor;
   import org.apache.avalon.meta.info.ServiceDescriptor;
  +import org.apache.avalon.meta.info.InfoDescriptor;
   
   /**
    * Definition of the criteria for an explicit component profile.  A profile, when
  @@ -145,6 +146,11 @@
       private CategoriesDirective m_categories;
   
       /**
  +     * The collection policy override.
  +     */
  +    private String m_collection;
  +
  +    /**
        * The component classname.
        */
       private String m_classname;
  @@ -183,12 +189,19 @@
       // constructor
       //--------------------------------------------------------------------------
   
  +   /**
  +    * Creation of a new profile using IMPLICT mode and LIBERAL collection
  +    * policies.
  +    *
  +    * @param name the name to assign to the component deployment scenario
  +    * @param classname the classname of the component type
  +    */
       public DeploymentProfile( 
              final String name, 
              final String classname )
       {
           this( 
  -          name, false, classname, null, null, null, null, 
  +          name, false, InfoDescriptor.LIBERAL, classname, null, null, null, null, 
             null, null, Mode.IMPLICIT );
       }
   
  @@ -202,6 +215,7 @@
           this( 
             name, 
             template.getActivationPolicy(),
  +          template.getCollectionPolicy(),
             template.m_classname,
             template.m_categories,
             template.m_context,
  @@ -215,6 +229,7 @@
       public DeploymentProfile( 
              final String name, 
              final boolean activation, 
  +           final String collection, 
              final String classname, 
              final CategoriesDirective categories, 
              final ContextDirective context, 
  @@ -226,6 +241,7 @@
       {
           super( name, activation, mode );
   
  +        m_collection = collection;
           m_classname = classname;
           m_categories = categories;
           m_context = context;
  @@ -263,6 +279,17 @@
       public String getClassname()
       {
           return m_classname;
  +    }
  +
  +    /**
  +     * Return the component collection policy.  If null, the component
  +     * type collection policy will apply.
  +     *
  +     * @return a LIBERAL, DEMOCRAT, CONSERVATIVE or null
  +     */
  +    public String getCollectionPolicy()
  +    {
  +        return m_collection;
       }
   
       /**
  
  
  
  1.3       +13 -1     avalon/merlin/composition/api/src/java/org/apache/avalon/composition/model/DeploymentModel.java
  
  Index: DeploymentModel.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/api/src/java/org/apache/avalon/composition/model/DeploymentModel.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DeploymentModel.java	17 Oct 2003 03:26:29 -0000	1.2
  +++ DeploymentModel.java	19 Oct 2003 06:12:58 -0000	1.3
  @@ -80,6 +80,18 @@
       boolean getActivationPolicy();
   
      /**
  +    * Return the collection policy for the model. If a profile
  +    * does not declare a collection policy, the collection policy 
  +    * declared by the type will be used.
  +    *
  +    * @return the collection policy
  +    * @see org.apache.avalon.meta.info.InfoDescriptor#LIBERAL
  +    * @see org.apache.avalon.meta.info.InfoDescriptor#DEMOCRAT
  +    * @see org.apache.avalon.meta.info.InfoDescriptor#CONSERVATIVE
  +    */
  +    String getCollectionPolicy();
  +
  +   /**
       * Return the logging categories. 
       * @return the logging categories
       */
  
  
  
  1.3       +6 -7      avalon/merlin/composition/impl/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/impl/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.2
  +++ project.xml	19 Oct 2003 06:12:58 -0000	1.3
  @@ -8,7 +8,7 @@
     <id>avalon-composition-impl</id>
     <name>Avalon Composition Framework</name>
     <package>org.apache.avalon.composition</package>
  -  <currentVersion>1.1-dev</currentVersion>
  +  <currentVersion>1.2-dev</currentVersion>
   
     <inceptionYear>2002</inceptionYear>
     <shortDescription>Avalon Composition Framework.</shortDescription>
  @@ -42,30 +42,29 @@
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-spi</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-impl</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
  -
   
       <dependency>
         <groupId>avalon-extension</groupId>
  
  
  
  1.3       +16 -2     avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/data/builder/XMLDeploymentProfileCreator.java
  
  Index: XMLDeploymentProfileCreator.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/data/builder/XMLDeploymentProfileCreator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLDeploymentProfileCreator.java	4 Oct 2003 11:53:04 -0000	1.2
  +++ XMLDeploymentProfileCreator.java	19 Oct 2003 06:12:58 -0000	1.3
  @@ -108,6 +108,7 @@
         throws Exception
       {
           final boolean activation = getActivationPolicy( config, true );
  +        final String collection = getCollectionPolicy( config );
   
           final CategoriesDirective categories = 
             getCategoriesDirective( config.getChild( "categories", false ), name );
  @@ -123,8 +124,21 @@
             config.getChild( "configuration", true );
   
           return new DeploymentProfile( 
  -          name, activation, classname, categories, context, dependencies, 
  +          name, activation, collection, classname, categories, context, dependencies, 
             stages, params, configuration, Mode.EXPLICIT );
  +    }
  +
  +   /**
  +    * Get the collection policy from a configuration.  If the collection
  +    * policy is not declared a null is returned indicating that the collection 
  +    * policy shall default to the component type collection policy. 
  +    *
  +    * @param config a configuration fragment holding a collection attribute
  +    * @return collection policy or null if not declared
  +    */
  +    protected String getCollectionPolicy( Configuration config )
  +    {
  +        return config.getAttribute( "collection", null );
       }
   
       protected DependencyDirective[] getDependencyDirectives( Configuration config )
  
  
  
  1.2       +13 -3     avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/data/writer/XMLDeploymentProfileWriter.java
  
  Index: XMLDeploymentProfileWriter.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/data/writer/XMLDeploymentProfileWriter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XMLDeploymentProfileWriter.java	24 Sep 2003 09:31:46 -0000	1.1
  +++ XMLDeploymentProfileWriter.java	19 Oct 2003 06:12:58 -0000	1.2
  @@ -100,11 +100,21 @@
           writer.write( "\n" + pad + "  class=\"" + profile.getClassname() + "\"");
           if( !profile.getActivationPolicy() )
           {
  -            writer.write( "\n" + pad + "  activation=\"false\"" ); 
  +            writer.write( 
  +              "\n" + pad 
  +              + "  activation=\"false\"" ); 
  +        }
  +        if( profile.getCollectionPolicy() != null )
  +        {
  +            writer.write( 
  +              "\n" + pad 
  +              + "  collection=\"" 
  +              + profile.getCollectionPolicy() 
  +              + "\"" ); 
           }
   
           if(( profile.getCategories() == null ) && ( profile.getContext() == null )
  -         && ( isEmptyConfiguration( profile.getConfiguration() ) ) && (profile.getParameters() == null ))
  +         && ( isEmptyConfiguration( profile.getConfiguration() ) ) && ( profile.getParameters() == null ))
           {
               writer.write( "/>");
           }
  
  
  
  1.3       +69 -5     avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultDeploymentModel.java
  
  Index: DefaultDeploymentModel.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultDeploymentModel.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultDeploymentModel.java	17 Oct 2003 03:26:29 -0000	1.2
  +++ DefaultDeploymentModel.java	19 Oct 2003 06:12:58 -0000	1.3
  @@ -71,6 +71,7 @@
   import org.apache.avalon.repository.Repository;
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
  +import org.apache.avalon.framework.activity.Startable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.DefaultConfiguration;
   import org.apache.avalon.framework.configuration.Configurable;
  @@ -81,11 +82,12 @@
   import org.apache.avalon.composition.data.ContextDirective;
   import org.apache.avalon.composition.data.DeploymentProfile;
   import org.apache.avalon.composition.data.Mode;
  -import org.apache.avalon.meta.info.Type;
  +import org.apache.avalon.meta.info.ContextDescriptor;
  +import org.apache.avalon.meta.info.DependencyDescriptor;
  +import org.apache.avalon.meta.info.InfoDescriptor;
   import org.apache.avalon.meta.info.ServiceDescriptor;
   import org.apache.avalon.meta.info.StageDescriptor;
  -import org.apache.avalon.meta.info.DependencyDescriptor;
  -import org.apache.avalon.meta.info.ContextDescriptor;
  +import org.apache.avalon.meta.info.Type;
   import org.apache.avalon.meta.info.builder.TypeBuilder;
   import org.apache.excalibur.configuration.CascadingConfiguration;
   
  @@ -308,6 +310,67 @@
       }
   
      /**
  +    * Return the collection policy for the model. If a profile
  +    * does not declare a collection policy, then the collection
  +    * policy declareed by the underrlying component type
  +    * will be used.
  +    *
  +    * @return the collection policy
  +    * @see InfoDescriptor#LIBERAL
  +    * @see InfoDescriptor#DEMOCRAT
  +    * @see InfoDescriptor#CONSERVATIVE
  +    */
  +    public String getCollectionPolicy()
  +    {
  +        final String policy = m_context.getProfile().getCollectionPolicy();
  +        if( policy != null )
  +        {
  +            if( policy.equalsIgnoreCase( InfoDescriptor.LIBERAL ) )
  +            {
  +                return InfoDescriptor.LIBERAL;
  +            }
  +            else if( policy.equalsIgnoreCase( InfoDescriptor.DEMOCRAT ) )
  +            {
  +                return InfoDescriptor.DEMOCRAT;
  +            }
  +            else if( policy.equalsIgnoreCase( InfoDescriptor.CONSERVATIVE ) )
  +            {
  +                return InfoDescriptor.CONSERVATIVE;
  +            }
  +            else
  +            {
  +                final String warning = 
  +                  "Overriding collection policy argument [" + policy + "] is not recognized. "
  +                  + "Reverting to CONSERVATIVE policy.";
  +                return InfoDescriptor.CONSERVATIVE;
  +            }
  +        }
  +        else
  +        {
  +            //if( isStartable() )
  +            //{
  +            //    return InfoDescriptor.CONSERVATIVE;
  +            //}
  +            //else
  +            //{
  +                return m_context.getType().getInfo().getCollectionPolicy();
  +            //}
  +        }
  +    }
  +
  +   /**
  +    * Rest if the component type backing the model is 
  +    * startable.
  +    *
  +    * @return TRUE if the component type is startable
  +    *   otherwise FALSE
  +    */
  +    //public boolean isStartable()
  +    //{
  +    //    return Startable.class.isAssignableFrom( getDeploymentClass() );
  +    //}
  +
  +   /**
       * Set categories. 
       * @param categories the categories directive
       */
  @@ -330,7 +393,8 @@
       }
   
      /**
  -    * Set the activation policy for the model. 
  +    * Set the activation policy for the model.
  +    *
       * @param policy the activaltion policy
       */
       public void setActivationPolicy( boolean policy )
  
  
  
  1.2       +4 -1      avalon/merlin/composition/impl/src/test/org/apache/avalon/composition/data/test/DeploymentProfileTestCase.java
  
  Index: DeploymentProfileTestCase.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/impl/src/test/org/apache/avalon/composition/data/test/DeploymentProfileTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DeploymentProfileTestCase.java	24 Sep 2003 09:32:26 -0000	1.1
  +++ DeploymentProfileTestCase.java	19 Oct 2003 06:12:58 -0000	1.2
  @@ -81,6 +81,7 @@
       private StageDirective[] m_stages;
       private String m_name;
       private String m_classname;
  +    private String m_collection;
   
       public DeploymentProfileTestCase( String name )
       {
  @@ -100,16 +101,18 @@
           m_activation = true;
           m_mode = Mode.IMPLICIT;
           m_categories = new CategoriesDirective( new CategoryDirective[0] );
  +        m_collection = InfoDescriptor.CONSERVATIVE;
       }
   
       public void testProfile() throws ContextException
       {
           DeploymentProfile profile = new DeploymentProfile(
  -          m_name, m_activation, m_classname, m_categories, 
  +          m_name, m_activation, m_collection, m_classname, m_categories, 
             m_context, m_dependencies, m_stages, m_parameters, 
             m_configuration, m_mode );
   
           assertEquals( "name", m_name, profile.getName() );
  +        assertEquals( "collection", m_collection, profile.getCollectionPolicy() );
           assertEquals( "classname", m_classname, profile.getClassname() );
           assertEquals( "categories", m_categories, profile.getCategories() );
           assertEquals( "mode", m_mode, profile.getMode() );
  
  
  
  1.3       +2 -2      avalon/merlin/composition/spi/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/composition/spi/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.2
  +++ project.xml	19 Oct 2003 06:12:58 -0000	1.3
  @@ -8,7 +8,7 @@
     <id>avalon-composition-spi</id>
     <name>Avalon Composition SPI</name>
     <package>org.apache.avalon.assembly</package>
  -  <currentVersion>1.1-dev</currentVersion>
  +  <currentVersion>1.2-dev</currentVersion>
   
     <inceptionYear>2002</inceptionYear>
     <shortDescription>Avalon Composition SPI</shortDescription>
  @@ -51,7 +51,7 @@
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
     </dependencies>
  
  
  
  1.6       +9 -9      avalon/merlin/kernel/bootstrap/src/etc/merlin.properties
  
  Index: merlin.properties
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/kernel/bootstrap/src/etc/merlin.properties,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- merlin.properties	17 Oct 2003 03:26:29 -0000	1.5
  +++ merlin.properties	19 Oct 2003 06:12:59 -0000	1.6
  @@ -8,9 +8,9 @@
   # the api classpath
   #
   merlin.api.classpath.0=avalon-framework:avalon-framework-api;4.1.5
  -merlin.api.classpath.1=avalon-meta:avalon-meta-api;1.2-dev
  -merlin.api.classpath.2=avalon-composition:avalon-composition-api;1.1-dev
  -merlin.api.classpath.3=avalon-activation:avalon-activation-api;1.1-dev
  +merlin.api.classpath.1=avalon-meta:avalon-meta-api;1.2.1-dev
  +merlin.api.classpath.2=avalon-composition:avalon-composition-api;1.2-dev
  +merlin.api.classpath.3=avalon-activation:avalon-activation-api;1.2-dev
   merlin.api.classpath.4=excalibur-lifecycle:excalibur-lifecycle-api;1.0
   merlin.api.classpath.5=avalon-extension:avalon-extension-spi;1.0
   merlin.api.classpath.6=merlin:merlin-kernel-spi;3.2-dev
  @@ -18,19 +18,19 @@
   #
   # the spi classpath
   #
  -merlin.spi.classpath.0=avalon-meta:avalon-meta-spi;1.2-dev
  -merlin.spi.classpath.1=avalon-composition:avalon-composition-spi;1.1-dev
  -merlin.spi.classpath.2=avalon-activation:avalon-activation-spi;1.1-dev
  +merlin.spi.classpath.0=avalon-meta:avalon-meta-spi;1.2.1-dev
  +merlin.spi.classpath.1=avalon-composition:avalon-composition-spi;1.2-dev
  +merlin.spi.classpath.2=avalon-activation:avalon-activation-spi;1.2-dev
   merlin.spi.classpath.3=avalon-repository:avalon-repository-spi;1.0b1
   
   #
   # the bootstrap classpath
   #
   merlin.impl.classpath.0=avalon-framework:avalon-framework-impl;4.1.5
  -merlin.impl.classpath.1=avalon-meta:avalon-meta-impl;1.2-dev
  +merlin.impl.classpath.1=avalon-meta:avalon-meta-impl;1.2.1-dev
   merlin.impl.classpath.2=avalon-extension:avalon-extension-impl;1.0
  -merlin.impl.classpath.3=avalon-composition:avalon-composition-impl;1.1-dev
  -merlin.impl.classpath.4=avalon-activation:avalon-activation-impl;1.1-dev
  +merlin.impl.classpath.3=avalon-composition:avalon-composition-impl;1.2-dev
  +merlin.impl.classpath.4=avalon-activation:avalon-activation-impl;1.2-dev
   merlin.impl.classpath.5=excalibur-i18n:excalibur-i18n;1.1
   merlin.impl.classpath.6=avalon-repository:avalon-repository-impl;1.0b1
   merlin.impl.classpath.7=commons-cli:commons-cli;1.0
  
  
  
  1.5       +9 -9      avalon/merlin/kernel/impl/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/kernel/impl/project.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.4
  +++ project.xml	19 Oct 2003 06:12:59 -0000	1.5
  @@ -45,17 +45,17 @@
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-impl</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
  @@ -72,33 +72,33 @@
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-impl</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-spi</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-impl</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
   
       <dependency>
  
  
  
  1.6       +9 -9      avalon/merlin/kernel/plugin/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/kernel/plugin/project.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.5
  +++ project.xml	19 Oct 2003 06:12:59 -0000	1.6
  @@ -41,33 +41,33 @@
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-impl</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-impl</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
  @@ -84,17 +84,17 @@
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-spi</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-impl</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
   
       <dependency>
  
  
  
  1.6       +2 -2      avalon/merlin/kernel/spi/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/kernel/spi/project.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.5
  +++ project.xml	19 Oct 2003 06:12:59 -0000	1.6
  @@ -27,13 +27,13 @@
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
     </dependencies>
  
  
  
  1.9       +3 -3      avalon/merlin/kernel/unit/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/kernel/unit/project.xml,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.8
  +++ project.xml	19 Oct 2003 06:12:59 -0000	1.9
  @@ -45,19 +45,19 @@
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
  
  
  
  1.5       +9 -9      avalon/merlin/kernel/unit/src/etc/merlin.properties
  
  Index: merlin.properties
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/kernel/unit/src/etc/merlin.properties,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- merlin.properties	17 Oct 2003 03:26:29 -0000	1.4
  +++ merlin.properties	19 Oct 2003 06:12:59 -0000	1.5
  @@ -8,9 +8,9 @@
   # the api classpath
   #
   merlin.api.classpath.0=avalon-framework:avalon-framework-api;4.1.5
  -merlin.api.classpath.1=avalon-meta:avalon-meta-api;1.2-dev
  -merlin.api.classpath.2=avalon-composition:avalon-composition-api;1.1-dev
  -merlin.api.classpath.3=avalon-activation:avalon-activation-api;1.1-dev
  +merlin.api.classpath.1=avalon-meta:avalon-meta-api;1.2.1-dev
  +merlin.api.classpath.2=avalon-composition:avalon-composition-api;1.2-dev
  +merlin.api.classpath.3=avalon-activation:avalon-activation-api;1.2-dev
   merlin.api.classpath.4=excalibur-lifecycle:excalibur-lifecycle-api;1.0
   merlin.api.classpath.5=avalon-extension:avalon-extension-spi;1.0
   merlin.api.classpath.6=merlin:merlin-kernel-spi;3.2-dev
  @@ -18,19 +18,19 @@
   #
   # the spi classpath
   #
  -merlin.spi.classpath.0=avalon-meta:avalon-meta-spi;1.2-dev
  -merlin.spi.classpath.1=avalon-composition:avalon-composition-spi;1.1-dev
  -merlin.spi.classpath.2=avalon-activation:avalon-activation-spi;1.1-dev
  +merlin.spi.classpath.0=avalon-meta:avalon-meta-spi;1.2.1-dev
  +merlin.spi.classpath.1=avalon-composition:avalon-composition-spi;1.2-dev
  +merlin.spi.classpath.2=avalon-activation:avalon-activation-spi;1.2-dev
   merlin.spi.classpath.3=avalon-repository:avalon-repository-spi;1.0b1
   
   #
   # the bootstrap classpath
   #
   merlin.impl.classpath.0=avalon-framework:avalon-framework-impl;4.1.5
  -merlin.impl.classpath.1=avalon-meta:avalon-meta-impl;1.2-dev
  +merlin.impl.classpath.1=avalon-meta:avalon-meta-impl;1.2.1-dev
   merlin.impl.classpath.2=avalon-extension:avalon-extension-impl;1.0
  -merlin.impl.classpath.3=avalon-composition:avalon-composition-impl;1.1-dev
  -merlin.impl.classpath.4=avalon-activation:avalon-activation-impl;1.1-dev
  +merlin.impl.classpath.3=avalon-composition:avalon-composition-impl;1.2-dev
  +merlin.impl.classpath.4=avalon-activation:avalon-activation-impl;1.2-dev
   merlin.impl.classpath.5=excalibur-i18n:excalibur-i18n;1.1
   merlin.impl.classpath.6=avalon-repository:avalon-repository-impl;1.0b1
   merlin.impl.classpath.7=commons-cli:commons-cli;1.0
  
  
  
  1.2       +31 -0     avalon/merlin/kernel/unit/src/java/org/apache/avalon/merlin/unit/DefaultEmbeddedKernel.java
  
  Index: DefaultEmbeddedKernel.java
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/kernel/unit/src/java/org/apache/avalon/merlin/unit/DefaultEmbeddedKernel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultEmbeddedKernel.java	13 Oct 2003 22:48:53 -0000	1.1
  +++ DefaultEmbeddedKernel.java	19 Oct 2003 06:12:59 -0000	1.2
  @@ -175,6 +175,7 @@
               Method method = 
                 clazz.getMethod( "getKernel", new Class[0] );
               m_kernel = (Kernel) method.invoke( m_loader, new Object[0] );
  +            setShutdownHook( this );
               m_started = true;
           }
           catch( Throwable e )
  @@ -263,6 +264,7 @@
       */
       public void startup()
       {
  +        if( m_command == EXIT ) throw new IllegalStateException("trminated");
           synchronized( m_command )
           {
               m_command = STARTUP;
  @@ -292,6 +294,7 @@
       public void shutdown()
       {
           if( m_error != null ) return;
  +        if( m_command == EXIT ) throw new IllegalStateException("trminated");
           synchronized( m_command )
           {
               m_command = SHUTDOWN;
  @@ -613,5 +616,33 @@
           }
       }
   
  +   /**
  +    * Create a shutdown hook that will trigger shutdown of the supplied kernel.
  +    * @param kernel the kernel to be shutdown
  +    */
  +    private void setShutdownHook( final DefaultEmbeddedKernel kernel )
  +    {
  +        //
  +        // Create a shutdown hook to trigger clean disposal of the
  +        // Merlin kernel
  +        //
  +
  +        Runtime.getRuntime().addShutdownHook(
  +          new Thread()
  +          {
  +              public void run()
  +              {
  +                  try
  +                  {
  +                      kernel.shutdown();
  +                  }
  +                  catch( Throwable e )
  +                  {
  +                      // ignore it
  +                  }
  +              }
  +          }
  +        );
  +    }
   }
   
  
  
  
  1.6       +10 -10    avalon/merlin/platform.xml
  
  Index: platform.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/platform.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- platform.xml	17 Oct 2003 03:26:29 -0000	1.5
  +++ platform.xml	19 Oct 2003 06:12:59 -0000	1.6
  @@ -63,22 +63,22 @@
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-spi</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-impl</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-tools</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
  @@ -89,33 +89,33 @@
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-impl</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-spi</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-impl</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
   
       <dependency>
  
  
  
  1.3       +1 -1      avalon/merlin/platform/tutorials/context/strategy/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/platform/tutorials/context/strategy/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml	17 Oct 2003 03:26:29 -0000	1.2
  +++ project.xml	19 Oct 2003 06:12:59 -0000	1.3
  @@ -26,7 +26,7 @@
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
     </dependencies>
     
  
  
  
  1.3       +3 -3      avalon/merlin/platform/tutorials/lifecycle/activation/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon/merlin/platform/tutorials/lifecycle/activation/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml	17 Oct 2003 03:26:30 -0000	1.2
  +++ project.xml	19 Oct 2003 06:12:59 -0000	1.3
  @@ -26,17 +26,17 @@
       <dependency>
         <groupId>avalon-composition</groupId>
         <artifactId>avalon-composition-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-activation</groupId>
         <artifactId>avalon-activation-api</artifactId>
  -      <version>1.1-dev</version>
  +      <version>1.2-dev</version>
       </dependency>
       <dependency>
         <groupId>avalon-meta</groupId>
         <artifactId>avalon-meta-api</artifactId>
  -      <version>1.2-dev</version>
  +      <version>1.2.1-dev</version>
       </dependency>
     </dependencies>
     
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org