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 2002/11/26 19:04:22 UTC

cvs commit: avalon-sandbox/meta/src/java/org/apache/avalon/meta/info Type.java

mcconnell    2002/11/26 10:04:22

  Modified:    assembly/src/java/org/apache/avalon/assembly/appliance
                        ApplianceManager.java
               assembly/src/java/org/apache/avalon/assembly/profile
                        DefaultProfileManager.java ProfileManager.java
               assembly/src/test/org/apache/avalon/assembly/profile
                        ProfileManagerTestCase.java
               meta/src/java/org/apache/avalon/meta/info Type.java
  Log:
  Addition of a profile selection test case and updates to the ProfileManager
  interface to support profile resolution based on a default selector.
  
  Revision  Changes    Path
  1.2       +2 -2      avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceManager.java
  
  Index: ApplianceManager.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ApplianceManager.java	24 Nov 2002 12:50:44 -0000	1.1
  +++ ApplianceManager.java	26 Nov 2002 18:04:22 -0000	1.2
  @@ -57,7 +57,7 @@
   
   /**
    * An appliance manager implemetation provides support for the 
  - * retrival of appliance instances.
  + * creation and retrival of appliance instances.
    *
    * @author <a href="mailto:avalon-dev@jakarta.apache.org">Avalon Development Team</a>
    * @version $Revision$ $Date$
  
  
  
  1.2       +30 -1     avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/DefaultProfileManager.java
  
  Index: DefaultProfileManager.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/DefaultProfileManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultProfileManager.java	24 Nov 2002 12:50:45 -0000	1.1
  +++ DefaultProfileManager.java	26 Nov 2002 18:04:22 -0000	1.2
  @@ -123,6 +123,12 @@
        */
       private final Hashtable m_profiles = new Hashtable();
   
  +   /**
  +    * The default profile selector.
  +    */
  +    private final DefaultProfileSelector m_selector = new DefaultProfileSelector();
  +
  +
       //==============================================================
       // Contextualizable
       //==============================================================
  @@ -194,6 +200,7 @@
               throw new IllegalStateException("logger");
           }
   
  +        m_selector.enableLogging( getLogger().getChildLogger( "selector" ) );
           m_initialized = true;
       }
   
  @@ -420,6 +427,17 @@
   
      /**
       * Locate the set of profiles tied to a type capable of supporting a service 
  +    * referenced by a supplied dependency descriptor using the default selector.
  +    * @param dependency a service depedency descriptor
  +    * @return a set of profiles capable of servicing the supplied dependency
  +    */
  +    public Profile getProfile( DependencyDescriptor dependency )
  +    {
  +        return getProfile( dependency, m_selector );
  +    }
  +
  +   /**
  +    * Locate the set of profiles tied to a type capable of supporting a service 
       * referenced by a supplied dependency descriptor using a supplied selector.
       * @param dependency a service depedency descriptor
       * @param selector a profile selector
  @@ -429,6 +447,17 @@
       {
           Profile[] profiles = getProfiles( dependency );
           return selector.select( profiles, dependency );
  +    }
  +
  +   /**
  +    * Locate a profile tied to a type capable of supporting an extension 
  +    * referenced by a supplied stage descriptor usign the default selector.
  +    * @param stage a stage descriptor
  +    * @return a set of types that provide the supplied service
  +    */
  +    public Profile getProfile( StageDescriptor stage )
  +    {
  +        return getProfile( stage, m_selector );
       }
   
      /**
  
  
  
  1.2       +20 -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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProfileManager.java	24 Nov 2002 12:50:45 -0000	1.1
  +++ ProfileManager.java	26 Nov 2002 18:04:22 -0000	1.2
  @@ -137,6 +137,25 @@
   
      /**
       * Locate the set of profiles tied to a type capable of supporting a service 
  +    * referenced by a supplied dependency descriptor using the default selector.
  +    *
  +    * @param dependency a service depedency descriptor
  +    * @return a set of types capable of servicing the supplied dependency
  +    */
  +    Profile getProfile( DependencyDescriptor dependency );
  +
  +   /**
  +    * Locate a profile tied to a type capable of supporting an extension 
  +    * referenced by a supplied stage descriptor using the default selector.
  +    *
  +    * @param stage a stage descriptor
  +    * @param selector the profile selector
  +    * @return a set of types that provide the supplied service
  +    */
  +    Profile getProfile( StageDescriptor stage );
  +
  +   /**
  +    * Locate the set of profiles tied to a type capable of supporting a service 
       * referenced by a supplied dependency descriptor using a supplied selector.
       *
       * @param dependency a service depedency descriptor
  
  
  
  1.4       +60 -0     avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/profile/ProfileManagerTestCase.java
  
  Index: ProfileManagerTestCase.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/profile/ProfileManagerTestCase.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ProfileManagerTestCase.java	26 Nov 2002 17:12:14 -0000	1.3
  +++ ProfileManagerTestCase.java	26 Nov 2002 18:04:22 -0000	1.4
  @@ -127,6 +127,66 @@
           }
       }
   
  +    public void testServiceProviderSelection() throws Exception
  +    {
  +        final String classname = "org.apache.avalon.playground.BasicComponent";
  +        
  +        ReferenceDescriptor ref = 
  +          new ReferenceDescriptor(
  +            "org.apache.avalon.playground.BasicService",
  +            Version.getVersion( "1.1" ) );
  +
  +        DependencyDescriptor dep = 
  +          new DependencyDescriptor( "test", ref );
  +
  +        try
  +        {
  +            Type type = m_types.createType( classname );
  +            Profile[] profiles = m_manager.loadProfiles( type );
  +            for( int i=0; i<profiles.length; i++ )
  +            {
  +                m_manager.addProfile( profiles[i] );
  +            }
  +
  +            Profile selection = m_manager.getProfile( dep );
  +            assertTrue( selection != null );
  +        }
  +        catch( Throwable e )
  +        {
  +            System.out.println("failure to resolve profile for : " + ref );
  +            e.printStackTrace();
  +            assertTrue( false );
  +        }
  +    }
  +
  +    public void testExtensionProviderSelection() throws Exception
  +    {
  +        final String classname = "org.apache.avalon.playground.ExploitationManager";
  +        
  +        ReferenceDescriptor reference = 
  +          new ReferenceDescriptor( "org.apache.avalon.playground.Exploitable" );
  +
  +        StageDescriptor stage = new StageDescriptor( reference );
  +
  +        try
  +        {
  +            Type type = m_types.createType( classname );
  +            Profile[] profiles = m_manager.loadProfiles( type );
  +            for( int i=0; i<profiles.length; i++ )
  +            {
  +                m_manager.addProfile( profiles[i] );
  +            }
  +
  +            Profile selection = m_manager.getProfile( stage );
  +            assertTrue( selection != null );
  +        }
  +        catch( Throwable e )
  +        {
  +            System.out.println("failure to resolve extension handler profile for : " + reference );
  +            e.printStackTrace();
  +            assertTrue( false );
  +        }
  +    }
   
       protected void tearDown() throws Exception
       {
  
  
  
  1.3       +1 -23     avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/Type.java
  
  Index: Type.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/Type.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Type.java	26 Nov 2002 17:12:14 -0000	1.2
  +++ Type.java	26 Nov 2002 18:04:22 -0000	1.3
  @@ -328,30 +328,8 @@
        * @exception Exception if an error occurs while marchalling the default
        *   confiugration for the type
        */
  -    //public Configuration getConfiguration( ClassLoader loader ) throws Exception
       public Configuration getConfiguration()
       {
  -        /*
  -        if( m_loaded )
  -        {
  -            return m_configuration;
  -        }
  -
  -        final String xconfig =
  -            getInfo().getClassname().replace( '.', '/' ) + ".xconfig";
  -        final InputStream stream =
  -            loader.getResourceAsStream( xconfig );
  -        if( stream == null )
  -        {
  -            m_loaded = true;
  -        }
  -        else
  -        {
  -            final InputSource source = new InputSource( stream );
  -            m_configuration = ConfigurationBuilder.build( source );
  -            m_loaded = true;
  -        }
  -        */
           return m_configuration;
       }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>