mcconnell    2002/12/11 16:32:33

  Modified:    assembly/src/java/org/apache/avalon/assembly/appliance
                        Appliance.java DefaultAppliance.java
               assembly/src/java/org/apache/avalon/assembly/engine
                        Engine.java EngineClassLoader.java
               assembly/src/java/org/apache/avalon/assembly/lifestyle
                        LifestyleHandler.java PooledLifestyleHandler.java
                        SingletonLifestyleHandler.java
                        ThreadLocalLifestyleHandler.java
                        TransientLifestyleHandler.java
               assembly/src/java/org/apache/avalon/assembly/profile
                        ProfileManager.java
               assembly/src/test/config block.xml
               assembly/src/test/org/apache/avalon/assembly/engine
                        EngineTestCase.java
  Log:
  Updating test case to handle direct type driven assembly.
  
  Revision  Changes    Path
  1.5       +8 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java
  
  Index: Appliance.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Appliance.java    3 Dec 2002 06:57:25 -0000       1.4
  +++ Appliance.java    12 Dec 2002 00:32:32 -0000      1.5
  @@ -155,8 +155,14 @@
       void addExtensionProvider( StageDescriptor stage, Appliance appliance );
   
      /**
  +    * Activate of the appliance.
  +    * @return the implementation object
  +    */
  +    Object access() throws LifestyleException;
  +
  +   /**
       * Activate a service provided by the appliance.
  -    * @param appliance the appliance to deploy
  +    * @param dependency the service dependecy decsriptor
       */
       Object access( DependencyDescriptor dependency ) throws 
LifestyleException;
   
  
  
  
  1.7       +9 -1      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java
  
  Index: DefaultAppliance.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DefaultAppliance.java     7 Dec 2002 09:34:27 -0000       1.6
  +++ DefaultAppliance.java     12 Dec 2002 00:32:32 -0000      1.7
  @@ -408,6 +408,14 @@
       }
   
      /**
  +    * Activate of the appliance.
  +    */
  +    public Object access() throws LifestyleException
  +    {
  +        return m_handler.access();
  +    }
  +
  +   /**
       * Activate an extension handler provided by the appliance.
       * @param appliance the appliance to deploy
       */
  
  
  
  1.5       +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/Engine.java
  
  Index: Engine.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/Engine.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Engine.java       9 Dec 2002 03:03:47 -0000       1.4
  +++ Engine.java       12 Dec 2002 00:32:32 -0000      1.5
  @@ -81,7 +81,7 @@
       LifestyleHandler createLifestyleHandler( Appliance appliance, Context 
context );
   
      /**
  -    * Register a type and associated profiles with the container.
  +    * Dynamic registration of a type and associated profiles with the 
container.
       * @param path the path to the appliance implementation class
       * @return the appliance
       * @exception EngineRuntimeException if a registration error occurs
  
  
  
  1.6       +2 -1      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java
  
  Index: EngineClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- EngineClassLoader.java    11 Dec 2002 08:11:04 -0000      1.5
  +++ EngineClassLoader.java    12 Dec 2002 00:32:32 -0000      1.6
  @@ -793,6 +793,7 @@
           }
       }
   
  +
      /**
       * Resolve an appliance capable of supporting a service 
       * referenced.
  
  
  
  1.2       +7 -1      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/LifestyleHandler.java
  
  Index: LifestyleHandler.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/LifestyleHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LifestyleHandler.java     29 Nov 2002 13:04:56 -0000      1.1
  +++ LifestyleHandler.java     12 Dec 2002 00:32:32 -0000      1.2
  @@ -62,6 +62,12 @@
   public interface LifestyleHandler
   {
      /**
  +    * Activate of the appliance.
  +    * @return the implementation object
  +    */
  +    Object access() throws LifestyleException;
  +
  +   /**
       * Activate a service provided by the appliance.
       * @param appliance the appliance to deploy
       */
  
  
  
  1.4       +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/PooledLifestyleHandler.java
  
  Index: PooledLifestyleHandler.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/PooledLifestyleHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PooledLifestyleHandler.java       3 Dec 2002 06:57:26 -0000       1.3
  +++ PooledLifestyleHandler.java       12 Dec 2002 00:32:32 -0000      1.4
  @@ -205,7 +205,7 @@
        * @return an instance of the type defined by the profile
        * @exception Exception if an error occurs while aquiring the object
        */
  -    private Object access() throws LifestyleException
  +    public Object access() throws LifestyleException
       {
           try
           {
  
  
  
  1.5       +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/SingletonLifestyleHandler.java
  
  Index: SingletonLifestyleHandler.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/SingletonLifestyleHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SingletonLifestyleHandler.java    30 Nov 2002 21:46:39 -0000      1.4
  +++ SingletonLifestyleHandler.java    12 Dec 2002 00:32:32 -0000      1.5
  @@ -104,7 +104,7 @@
       * Activate the implementation.
       * @param appliance the appliance to deploy
       */
  -    private Object access() throws LifestyleException
  +    public Object access() throws LifestyleException
       {
           if( getLogger().isDebugEnabled() )
           {
  
  
  
  1.4       +1 -1      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/ThreadLocalLifestyleHandler.java
  
  Index: ThreadLocalLifestyleHandler.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/ThreadLocalLifestyleHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ThreadLocalLifestyleHandler.java  30 Nov 2002 21:46:39 -0000      1.3
  +++ ThreadLocalLifestyleHandler.java  12 Dec 2002 00:32:32 -0000      1.4
  @@ -95,7 +95,7 @@
        * @return an instance of the type defined by the appliance
        * @exception Exception if an access phase error occurs
        */
  -    private Object access() throws LifestyleException
  +    public Object access() throws LifestyleException
       {
           if( getLogger().isDebugEnabled() )
           {        
  
  
  
  1.3       +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/TransientLifestyleHandler.java
  
  Index: TransientLifestyleHandler.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/TransientLifestyleHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TransientLifestyleHandler.java    29 Nov 2002 17:37:30 -0000      1.2
  +++ TransientLifestyleHandler.java    12 Dec 2002 00:32:32 -0000      1.3
  @@ -104,7 +104,7 @@
       * Activate the implementation.
       * @param appliance the appliance to deploy
       */
  -    private Object access() throws LifestyleException
  +    public Object access() throws LifestyleException
       {
           Object object = newInstance();
           super.processAccessStage( object );
  
  
  
  1.5       +29 -1     
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/ProfileManager.java
  
  Index: ProfileManager.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/ProfileManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ProfileManager.java       7 Dec 2002 09:34:28 -0000       1.4
  +++ ProfileManager.java       12 Dec 2002 00:32:32 -0000      1.5
  @@ -53,6 +53,7 @@
   import java.util.Hashtable;
   import java.util.ArrayList;
   import java.util.Enumeration;
  +import java.util.Iterator;
   
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.configuration.Configuration;
  @@ -295,6 +296,33 @@
           return profile;
       }
       
  +    /**
  +     * Get the preferred profile for a supplied type.
  +     * @param type the component type
  +     * @return the profile matching the type
  +     * @exception UnknownTypeException if the type is unknown to the manager
  +     */
  +    public Profile getProfile( Type type ) throws UnknownTypeException
  +    {
  +        Enumeration enum = m_profiles.elements();
  +        while( enum.hasMoreElements() )
  +        {
  +            Profile profile = (Profile) enum.nextElement();
  +            if( profile.getType().equals( type ) )
  +            {
  +                return profile;
  +            }
  +        }
  +        if( m_parent != null )
  +        {
  +            return m_parent.getProfile( type );
  +        }
  +        else
  +        {
  +            return null;
  +        }
  +    }
  +
       /**
        * Get the set of profiles declared for a particular type.
        * @param type the component type
  
  
  
  1.2       +0 -4      avalon-sandbox/assembly/src/test/config/block.xml
  
  Index: block.xml
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/assembly/src/test/config/block.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- block.xml 11 Dec 2002 04:57:17 -0000      1.1
  +++ block.xml 12 Dec 2002 00:32:32 -0000      1.2
  @@ -5,12 +5,9 @@
   
   <block>
   
  -   <categories priority="INFO"/>
  -
      <container>
   
        <component name="basic" 
class="org.apache.excalibur.playground.BasicComponent" activation="startup">
  -       <categories priority="DEBUG"/>
          <context class="org.apache.excalibur.playground.BasicContext">
            <entry key="location">My Place</entry>
            <import name="avalon:home" key="home" />
  @@ -18,7 +15,6 @@
        </component>
   
        <component name="complex" 
class="org.apache.excalibur.playground.ComplexComponent" activation="startup">
  -        <categories priority="DEBUG"/>
           <context>
             <entry key="location" value="Paris"/>
           </context>
  
  
  
  1.6       +23 -1     
avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/engine/EngineTestCase.java
  
  Index: EngineTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/engine/EngineTestCase.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- EngineTestCase.java       9 Dec 2002 03:04:56 -0000       1.5
  +++ EngineTestCase.java       12 Dec 2002 00:32:32 -0000      1.6
  @@ -9,11 +9,14 @@
   package org.apache.avalon.assembly.engine;
   
   import java.io.File;
  +import java.util.Map;
  +import java.util.Hashtable;
   import junit.framework.TestCase;
   import org.apache.avalon.framework.Version;
   import org.apache.avalon.framework.context.DefaultContext;
   import org.apache.avalon.framework.service.DefaultServiceManager;
   import org.apache.avalon.meta.info.*;
  +import org.apache.avalon.meta.model.*;
   import org.apache.avalon.assembly.TestCaseBase;
   import org.apache.avalon.assembly.engine.Engine;
   import org.apache.avalon.assembly.appliance.Appliance;
  @@ -197,7 +200,26 @@
               getLogger().error( error );
               assertTrue( false );
           }
  -
       }
   
  +    public void testDirect()
  +    {
  +        final String classname = 
"org.apache.avalon.playground.ComplexComponent";
  +          
  +        try
  +        {
  +            Type type = m_engine.getRepository().getTypeManager().getType( 
classname );
  +            Profile profile = 
m_engine.getRepository().getProfileManager().getProfile( type );
  +            Map map = new Hashtable();
  +            Appliance appliance = m_engine.createAppliance( profile, map, 
false );
  +            m_engine.assemble( appliance );
  +            assertTrue( appliance.access() != null );
  +        }
  +        catch( Throwable e )
  +        {
  +            System.out.println("failure for create type using : " + 
classname );
  +            assertTrue( false );
  +            e.printStackTrace();
  +        }
  +    }
   }
  
  
  

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

Reply via email to