You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/08/18 05:34:29 UTC

cvs commit: jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/verifier AssemblyVerifier.java MetaDataVerifier.java

donaldp     2002/08/17 20:34:28

  Modified:    containerkit/src/java/org/apache/excalibur/containerkit/dependency
                        DependencyMap.java
               containerkit/src/java/org/apache/excalibur/containerkit/kernel
                        AbstractServiceKernel.java ComponentEntry.java
                        MetaDataBuilder.java SimpleMetaDataBuilder.java
                        SimpleResourceProvider.java
                        SimpleServiceKernel.java
               containerkit/src/java/org/apache/excalibur/containerkit/lifecycle/impl
                        AbstractResourceProvider.java
               containerkit/src/java/org/apache/excalibur/containerkit/metadata
                        ComponentMetaData.java
               containerkit/src/java/org/apache/excalibur/containerkit/verifier
                        AssemblyVerifier.java MetaDataVerifier.java
  Log:
  Remove link to ComponentInfo from within ComponentMetaData
  
  Revision  Changes    Path
  1.11      +38 -35    jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/dependency/DependencyMap.java
  
  Index: DependencyMap.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/dependency/DependencyMap.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- DependencyMap.java	17 Aug 2002 06:46:16 -0000	1.10
  +++ DependencyMap.java	18 Aug 2002 03:34:27 -0000	1.11
  @@ -8,9 +8,10 @@
   package org.apache.excalibur.containerkit.dependency;
   
   import java.util.ArrayList;
  -import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
   import org.apache.excalibur.containerkit.metadata.DependencyMetaData;
  +import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
   import org.apache.excalibur.containerkit.metainfo.DependencyDescriptor;
  +import org.apache.excalibur.containerkit.kernel.ComponentEntry;
   
   /**
    * Utility class to help aquire a ordered graph of
  @@ -76,57 +77,57 @@
        *
        * @param component the component
        */
  -    public void add( final ComponentMetaData component )
  +    public void add( final ComponentEntry component )
       {
           m_components.add( component );
       }
   
       /**
  -     * Get the serilized graph of {@link ComponentMetaData} objects
  +     * Get the serilized graph of {@link ComponentEntry} objects
        * required when starting up all the components. This makes sure
        * that all providers occur before their coresponding
        * consumers in graph.
        *
        * @return the ordered list of components
        */
  -    public ComponentMetaData[] getStartupGraph()
  +    public ComponentEntry[] getStartupGraph()
       {
           return walkGraph( true );
       }
   
       /**
  -     * Get the serilized graph of {@link ComponentMetaData} objects
  +     * Get the serilized graph of {@link ComponentEntry} objects
        * required when shutting down all the components. This makes
        * sure that all consumers occur before their coresponding
        * providers in graph.
        *
        * @return the ordered list of components
        */
  -    public ComponentMetaData[] getShutdownGraph()
  +    public ComponentEntry[] getShutdownGraph()
       {
           return walkGraph( false );
       }
   
       /**
  -     * Get the serilized graph of {@link ComponentMetaData} objects
  +     * Get the serilized graph of {@link ComponentEntry} objects
        * that use services of specified component.
        *
        * @param component the component
        * @return the ordered list of consumers
        */
  -    public ComponentMetaData[] getConsumerGraph( final ComponentMetaData component )
  +    public ComponentEntry[] getConsumerGraph( final ComponentEntry component )
       {
           return getComponentGraph( component, false );
       }
   
       /**
  -     * Get the serilized graph of {@link ComponentMetaData} objects
  +     * Get the serilized graph of {@link ComponentEntry} objects
        * that provide specified component with services.
        *
        * @param component the component
        * @return the ordered list of providers
        */
  -    public ComponentMetaData[] getProviderGraph( final ComponentMetaData component )
  +    public ComponentEntry[] getProviderGraph( final ComponentEntry component )
       {
           return getComponentGraph( component, true );
       }
  @@ -138,7 +139,7 @@
        * @param providers true if traversing providers, false if consumers
        * @return the list of components in graph
        */
  -    private ComponentMetaData[] getComponentGraph( final ComponentMetaData component, final boolean providers )
  +    private ComponentEntry[] getComponentGraph( final ComponentEntry component, final boolean providers )
       {
           final ArrayList result = new ArrayList();
           visitcomponent( component,
  @@ -146,8 +147,8 @@
                           new ArrayList(),
                           result );
   
  -        final ComponentMetaData[] returnValue = new ComponentMetaData[ result.size() ];
  -        return (ComponentMetaData[])result.toArray( returnValue );
  +        final ComponentEntry[] returnValue = new ComponentEntry[ result.size() ];
  +        return (ComponentEntry[])result.toArray( returnValue );
       }
   
       /**
  @@ -158,7 +159,7 @@
        * @param providers true if forward dependencys traced, false if dependencies reversed
        * @return the ordered node names
        */
  -    private ComponentMetaData[] walkGraph( final boolean providers )
  +    private ComponentEntry[] walkGraph( final boolean providers )
       {
           final ArrayList result = new ArrayList();
           final ArrayList done = new ArrayList();
  @@ -166,16 +167,16 @@
           final int size = m_components.size();
           for( int i = 0; i < size; i++ )
           {
  -            final ComponentMetaData component =
  -                (ComponentMetaData)m_components.get( i );
  +            final ComponentEntry component =
  +                (ComponentEntry)m_components.get( i );
               visitcomponent( component,
                               providers,
                               done,
                               result );
           }
   
  -        final ComponentMetaData[] returnValue = new ComponentMetaData[ result.size() ];
  -        return (ComponentMetaData[])result.toArray( returnValue );
  +        final ComponentEntry[] returnValue = new ComponentEntry[ result.size() ];
  +        return (ComponentEntry[])result.toArray( returnValue );
       }
   
       /**
  @@ -187,7 +188,7 @@
        * @param order the order in which nodes have already been
        *             traversed
        */
  -    private void visitcomponent( final ComponentMetaData component,
  +    private void visitcomponent( final ComponentEntry component,
                                    final boolean providers,
                                    final ArrayList done,
                                    final ArrayList order )
  @@ -215,19 +216,20 @@
        * Traverse graph of components that provide services to
        * the specified component.
        *
  -     * @param component the ComponentMetaData
  +     * @param component the ComponentEntry
        */
  -    private void visitProviders( final ComponentMetaData component,
  +    private void visitProviders( final ComponentEntry component,
                                    final ArrayList done,
                                    final ArrayList order )
       {
           final DependencyDescriptor[] descriptors =
  -            component.getComponentInfo().getDependencies();
  +            component.getInfo().getDependencies();
  +        final ComponentMetaData metaData = component.getMetaData();
   
           for( int i = 0; i < descriptors.length; i++ )
           {
               final DependencyMetaData dependency =
  -                component.getDependency( descriptors[ i ].getRole() );
  +                metaData.getDependency( descriptors[ i ].getRole() );
   
               // added != null clause to catch cases where an optional
               // dependency exists and the dependecy has not been bound
  @@ -235,7 +237,7 @@
   
               if( dependency != null )
               {
  -                final ComponentMetaData other =
  +                final ComponentEntry other =
                     getComponent( dependency.getProviderName() );
                   visitcomponent( other, true, done, order );
               }
  @@ -246,20 +248,21 @@
        * Traverse all Consumers of component. ie Anyone that uses
        * service provided by component.
        *
  -     * @param component the ComponentMetaData
  +     * @param component the ComponentEntry
        */
  -    private void visitConsumers( final ComponentMetaData component,
  +    private void visitConsumers( final ComponentEntry component,
                                    final ArrayList done,
                                    final ArrayList order )
       {
  -        final String name = component.getName();
  +        final String name = component.getMetaData().getName();
   
           final int size = m_components.size();
           for( int i = 0; i < size; i++ )
           {
  -            final ComponentMetaData other =
  -                (ComponentMetaData)m_components.get( i );
  -            final DependencyMetaData[] roles = other.getDependencies();
  +            final ComponentEntry other =
  +                (ComponentEntry)m_components.get( i );
  +            final DependencyMetaData[] roles =
  +                other.getMetaData().getDependencies();
   
               for( int j = 0; j < roles.length; j++ )
               {
  @@ -285,14 +288,14 @@
        * @param name the name of component
        * @return the component
        */
  -    private ComponentMetaData getComponent( final String name )
  +    private ComponentEntry getComponent( final String name )
       {
           final int size = m_components.size();
           for( int i = 0; i < size; i++ )
           {
  -            final ComponentMetaData component =
  -                (ComponentMetaData)m_components.get( i );
  -            if( component.getName().equals( name ) )
  +            final ComponentEntry component =
  +                (ComponentEntry)m_components.get( i );
  +            if( component.getMetaData().getName().equals( name ) )
               {
                   return component;
               }
  
  
  
  1.19      +41 -23    jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/AbstractServiceKernel.java
  
  Index: AbstractServiceKernel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/AbstractServiceKernel.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- AbstractServiceKernel.java	17 Aug 2002 06:57:01 -0000	1.18
  +++ AbstractServiceKernel.java	18 Aug 2002 03:34:28 -0000	1.19
  @@ -17,9 +17,11 @@
   import org.apache.avalon.framework.container.ContainerUtil;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.excalibur.containerkit.dependency.DependencyMap;
  +import org.apache.excalibur.containerkit.factory.ComponentFactory;
   import org.apache.excalibur.containerkit.lifecycle.LifecycleHelper;
   import org.apache.excalibur.containerkit.lifecycle.ResourceProvider;
   import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
  +import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
   
   /**
    * The <code>AbstractServiceKernel</code> defines an application scope through
  @@ -37,6 +39,10 @@
       private final static Resources REZ =
           ResourceManager.getPackageResources( AbstractServiceKernel.class );
       /**
  +     * The factory to use when creating components.
  +     */
  +    private ComponentFactory m_factory;
  +    /**
        * The resource provider to use to provide resources
        * for all the components.
        */
  @@ -66,6 +72,7 @@
       public void initialize()
           throws Exception
       {
  +        m_factory = prepareFactory();
           m_resourceProvider = prepareResourceProvider();
           m_lifecycleHelper = prepareLifecycleHelper();
       }
  @@ -100,6 +107,8 @@
           }
       }
   
  +    protected abstract ComponentFactory prepareFactory();
  +
       protected abstract ResourceProvider prepareResourceProvider();
   
       protected LifecycleHelper prepareLifecycleHelper()
  @@ -116,7 +125,7 @@
       protected final void startupAllComponents()
           throws Exception
       {
  -        final ComponentMetaData[] components = m_dependencyMap.getStartupGraph();
  +        final ComponentEntry[] components = m_dependencyMap.getStartupGraph();
           processComponents( true, components );
       }
   
  @@ -127,7 +136,7 @@
       protected final void shutdownAllComponents()
           throws Exception
       {
  -        final ComponentMetaData[] components = m_dependencyMap.getShutdownGraph();
  +        final ComponentEntry[] components = m_dependencyMap.getShutdownGraph();
           processComponents( false, components );
       }
   
  @@ -140,8 +149,8 @@
           throws Exception
       {
           final ComponentEntry entry = (ComponentEntry)m_entrys.get( name );
  -        final ComponentMetaData[] components =
  -            m_dependencyMap.getProviderGraph( entry.getProfile() );
  +        final ComponentEntry[] components =
  +            m_dependencyMap.getProviderGraph( entry );
           processComponents( true, components );
       }
   
  @@ -154,12 +163,22 @@
           throws Exception
       {
           final ComponentEntry entry = (ComponentEntry)m_entrys.get( name );
  -        final ComponentMetaData[] components =
  -            m_dependencyMap.getConsumerGraph( entry.getProfile() );
  +        final ComponentEntry[] components =
  +            m_dependencyMap.getConsumerGraph( entry );
           processComponents( false, components );
       }
   
       /**
  +     * Return the {@link ComponentFactory} associated with kernel.
  +     *
  +     * @return the {@link ComponentFactory} associated with kernel.
  +     */
  +    protected final ComponentFactory getFactory()
  +    {
  +        return m_factory;
  +    }
  +
  +    /**
        * Add a Component to the container.
        * This Must be called before any components are started
        * or else an exception is raised.
  @@ -167,11 +186,12 @@
        * @param component the component
        */
       protected final void addComponent( final ComponentMetaData component )
  +        throws Exception
       {
  -        final String name = component.getName();
  -        final ComponentEntry entry = new ComponentEntry( component );
  -        m_entrys.put( name, entry );
  -        m_dependencyMap.add( component );
  +        final ComponentInfo info = m_factory.createInfo( component.getImplementationKey() );
  +        final ComponentEntry entry = new ComponentEntry( info, component );
  +        m_entrys.put( component.getName(), entry );
  +        m_dependencyMap.add( entry );
       }
   
       protected final Object getComponent( final String name )
  @@ -197,7 +217,7 @@
        *         through the phases
        */
       private void processComponents( final boolean startup,
  -                                    final ComponentMetaData[] components )
  +                                    final ComponentEntry[] components )
           throws Exception
       {
           processComponentsNotice( components, startup );
  @@ -245,15 +265,13 @@
        * @throws Exception if there is error processing any of the components
        *         through the phases
        */
  -    private void processComponent( final ComponentMetaData component,
  +    private void processComponent( final ComponentEntry component,
                                      final boolean startup )
           throws Exception
       {
  -        final String name = component.getName();
  -        final ComponentEntry entry =
  -            (ComponentEntry)m_entrys.get( name );
  +        final String name = component.getMetaData().getName();
   
  -        if( startup == entry.isActive() )
  +        if( startup == component.isActive() )
           {
               //If component is already started and we said start
               //or the component is already stopped and we said stop
  @@ -269,14 +287,14 @@
               {
                   final Object object =
                       m_lifecycleHelper.startup( name,
  -                                               entry,
  +                                               component,
                                                  m_resourceProvider );
  -                entry.setObject( object );
  +                component.setObject( object );
               }
               else
               {
  -                final Object object = entry.getObject();
  -                entry.setObject( null );
  +                final Object object = component.getObject();
  +                component.setObject( null );
                   m_lifecycleHelper.shutdown( name, object );
               }
           }
  @@ -302,7 +320,7 @@
        * @param order the order the components will be processed in
        * @param startup true if application startup phase, false if shutdown phase
        */
  -    private void processComponentsNotice( final ComponentMetaData[] order,
  +    private void processComponentsNotice( final ComponentEntry[] order,
                                             final boolean startup )
       {
           if( getLogger().isInfoEnabled() )
  @@ -312,7 +330,7 @@
               final List pathList = new ArrayList();
               for( int i = 0; i < order.length; i++ )
               {
  -                pathList.add( order[ i ].getName() );
  +                pathList.add( order[ i ].getMetaData().getName() );
               }
   
               final String message =
  
  
  
  1.12      +26 -8     jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/ComponentEntry.java
  
  Index: ComponentEntry.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/ComponentEntry.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ComponentEntry.java	17 Aug 2002 06:57:01 -0000	1.11
  +++ ComponentEntry.java	18 Aug 2002 03:34:28 -0000	1.12
  @@ -8,22 +8,28 @@
   package org.apache.excalibur.containerkit.kernel;
   
   import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
  +import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
   
   /**
    * This is the structure that components are contained within when
    * loaded into a container.
    *
    * @author <a href="mailto:peter at apache.org">Peter Donald</a>
  - * @author <a href="mailto:mcconnell@apache.org">Stephen McConnell</a>
    * @version $Revision$ $Date$
    */
   public class ComponentEntry
   {
       /**
  +     * The {@link ComponentInfo} that describes
  +     * the type of this component.
  +     */
  +    private final ComponentInfo m_info;
  +
  +    /**
        * The {@link ComponentMetaData} that describes
        * this component.
        */
  -    private final ComponentMetaData m_profile;
  +    private final ComponentMetaData m_metaData;
   
       /**
        * The instance of this component.
  @@ -32,20 +38,32 @@
   
       /**
        * Creation of a new <code>ComponentEntry</code> instance.
  -     * @param profile the {@link ComponentMetaData} instance defining the component.
  +     * @param metaData the {@link ComponentMetaData} instance defining the component.
  +     */
  +    public ComponentEntry( final ComponentInfo info,
  +                           final ComponentMetaData metaData )
  +    {
  +        m_info = info;
  +        m_metaData = metaData;
  +    }
  +
  +    /**
  +     * Returns the underlying {@link ComponentInfo} instance.
  +     *
  +     * @return the component info instance
        */
  -    public ComponentEntry( final ComponentMetaData profile )
  +    public ComponentInfo getInfo()
       {
  -        m_profile = profile;
  +        return m_info;
       }
   
       /**
        * Returns the underlying {@link ComponentMetaData} instance.
        * @return the component meta data instance
        */
  -    public ComponentMetaData getProfile()
  +    public ComponentMetaData getMetaData()
       {
  -        return m_profile;
  +        return m_metaData;
       }
   
       /**
  
  
  
  1.3       +2 -4      jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/MetaDataBuilder.java
  
  Index: MetaDataBuilder.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/MetaDataBuilder.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MetaDataBuilder.java	17 Aug 2002 06:57:01 -0000	1.2
  +++ MetaDataBuilder.java	18 Aug 2002 03:34:28 -0000	1.3
  @@ -8,7 +8,6 @@
   package org.apache.excalibur.containerkit.kernel;
   
   import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
  -import org.apache.excalibur.containerkit.factory.ComponentFactory;
   
   /**
    * Load metadata from some source. The source is usually
  @@ -30,7 +29,6 @@
        * @throws Exception if unable to load or resolve meta
        *         data for any reason
        */
  -    ComponentMetaData[] loadMetaData( String location,
  -                                      ComponentFactory factory )
  +    ComponentMetaData[] loadMetaData( String location )
           throws Exception;
   }
  
  
  
  1.3       +8 -13     jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleMetaDataBuilder.java
  
  Index: SimpleMetaDataBuilder.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleMetaDataBuilder.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SimpleMetaDataBuilder.java	17 Aug 2002 06:57:01 -0000	1.2
  +++ SimpleMetaDataBuilder.java	18 Aug 2002 03:34:28 -0000	1.3
  @@ -11,10 +11,8 @@
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
   import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
  -import org.apache.excalibur.containerkit.factory.ComponentFactory;
   import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
   import org.apache.excalibur.containerkit.metadata.DependencyMetaData;
  -import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
   import org.xml.sax.InputSource;
   
   /**
  @@ -27,8 +25,8 @@
   public class SimpleMetaDataBuilder
       implements MetaDataBuilder
   {
  -    public ComponentMetaData[] loadMetaData( final String location,
  -                                             final ComponentFactory factory )
  +    public ComponentMetaData[] loadMetaData( final String location
  +                                             )
           throws Exception
       {
           final DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
  @@ -37,11 +35,10 @@
           final Configuration configuration = builder.build( input );
           final Configuration[] children =
               configuration.getChildren( "component" );
  -        return loadComponentDatas( children, factory );
  +        return loadComponentDatas( children );
       }
   
  -    private ComponentMetaData[] loadComponentDatas( final Configuration[] components,
  -                                                    final ComponentFactory factory )
  +    private ComponentMetaData[] loadComponentDatas( final Configuration[] components )
           throws Exception
       {
           final ArrayList profiles = new ArrayList();
  @@ -49,25 +46,23 @@
           for( int i = 0; i < components.length; i++ )
           {
               final ComponentMetaData component =
  -                loadComponentData( components[ i ],factory );
  +                loadComponentData( components[ i ] );
               profiles.add( component );
           }
   
           return (ComponentMetaData[])profiles.toArray( new ComponentMetaData[ profiles.size() ] );
       }
   
  -    private ComponentMetaData loadComponentData( final Configuration component,
  -                                                 final ComponentFactory factory )
  +    private ComponentMetaData loadComponentData( final Configuration component )
           throws Exception
       {
           final String name = component.getAttribute( "name" );
           final String impl = component.getAttribute( "impl" );
           final Configuration config = component.getChild( "config" );
  -        final ComponentInfo info = factory.createInfo( impl );
           final DependencyMetaData[] dependencies =
               parseAssociations( component.getChildren( "provide" ) );
   
  -        return new ComponentMetaData( name, dependencies, null, config, info );
  +        return new ComponentMetaData( name, impl, dependencies, null, config );
       }
   
       private DependencyMetaData[] parseAssociations( final Configuration[] provides )
  
  
  
  1.7       +3 -18     jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleResourceProvider.java
  
  Index: SimpleResourceProvider.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleResourceProvider.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SimpleResourceProvider.java	17 Aug 2002 06:57:01 -0000	1.6
  +++ SimpleResourceProvider.java	18 Aug 2002 03:34:28 -0000	1.7
  @@ -11,12 +11,8 @@
   import org.apache.excalibur.containerkit.factory.ComponentFactory;
   import org.apache.excalibur.containerkit.lifecycle.impl.AbstractResourceProvider;
   import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
  -import org.apache.excalibur.containerkit.metainfo.ComponentDescriptor;
  -import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
   
   /**
  - *
  - *
    * @author <a href="mailto:peter at apache.org">Peter Donald</a>
    * @version $Revision$ $Date$
    */
  @@ -24,18 +20,17 @@
       extends AbstractResourceProvider
   {
       private final AbstractServiceKernel m_serviceKernel;
  -    private final ComponentFactory m_factory;
   
       public SimpleResourceProvider( final AbstractServiceKernel serviceKernel,
                                      final ComponentFactory factory )
       {
  +        super( factory );
           m_serviceKernel = serviceKernel;
  -        m_factory = factory;
       }
   
       protected ComponentMetaData getMetaData( final Object entry )
       {
  -        return ((ComponentEntry)entry).getProfile();
  +        return ((ComponentEntry)entry).getMetaData();
       }
   
       protected Object getService( final String name,
  @@ -49,16 +44,6 @@
       {
           //Should return classloaders that are available
           return null;
  -    }
  -
  -    public Object createObject( final Object entry )
  -        throws Exception
  -    {
  -        final ComponentMetaData component = getMetaData( entry );
  -        final ComponentInfo info = component.getComponentInfo();
  -        final ComponentDescriptor descriptor = info.getComponentDescriptor();
  -        final String implementationKey = descriptor.getImplementationKey();
  -        return m_factory.createComponent( implementationKey );
       }
   
       public Logger createLogger( final Object entry )
  
  
  
  1.9       +13 -9     jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleServiceKernel.java
  
  Index: SimpleServiceKernel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleServiceKernel.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SimpleServiceKernel.java	17 Aug 2002 06:57:01 -0000	1.8
  +++ SimpleServiceKernel.java	18 Aug 2002 03:34:28 -0000	1.9
  @@ -34,7 +34,6 @@
       private final static Resources REZ =
           ResourceManager.getPackageResources( SimpleServiceKernel.class );
   
  -    private ComponentFactory m_factory;
       private MetaDataBuilder m_metaDataBuilder;
       private String m_configURL;
   
  @@ -47,15 +46,12 @@
       public void initialize()
           throws Exception
       {
  -        m_factory = new DefaultComponentFactory( getClass().getClassLoader() );
  -        setupLogger( m_factory, "factory" );
  +        super.initialize();
   
           m_metaDataBuilder = new SimpleMetaDataBuilder();
  -        setupLogger( m_factory, "builder" );
  -
  -        super.initialize();
  +        setupLogger( getFactory(), "builder" );
   
  -        final ComponentMetaData[] components = m_metaDataBuilder.loadMetaData( m_configURL, m_factory );
  +        final ComponentMetaData[] components = m_metaDataBuilder.loadMetaData( m_configURL );
           for( int i = 0; i < components.length; i++ )
           {
               final ComponentMetaData component = components[ i ];
  @@ -80,10 +76,18 @@
           super.dispose();
       }
   
  +    protected ComponentFactory prepareFactory()
  +    {
  +        final DefaultComponentFactory factory =
  +            new DefaultComponentFactory( getClass().getClassLoader() );
  +        setupLogger( factory, "factory" );
  +        return factory;
  +    }
  +
       protected ResourceProvider prepareResourceProvider()
       {
           final SimpleResourceProvider resourceProvider =
  -            new SimpleResourceProvider( this, m_factory );
  +            new SimpleResourceProvider( this, getFactory() );
           setupLogger( resourceProvider, "provider" );
           return resourceProvider;
       }
  
  
  
  1.14      +46 -5     jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/lifecycle/impl/AbstractResourceProvider.java
  
  Index: AbstractResourceProvider.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/lifecycle/impl/AbstractResourceProvider.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- AbstractResourceProvider.java	17 Aug 2002 06:53:36 -0000	1.13
  +++ AbstractResourceProvider.java	18 Aug 2002 03:34:28 -0000	1.14
  @@ -28,6 +28,7 @@
   import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
   import org.apache.excalibur.containerkit.metainfo.ContextDescriptor;
   import org.apache.excalibur.containerkit.metainfo.EntryDescriptor;
  +import org.apache.excalibur.containerkit.factory.ComponentFactory;
   
   /**
    * This is a base object via which the
  @@ -51,6 +52,17 @@
       private final static Resources REZ =
           ResourceManager.getPackageResources( AbstractResourceProvider.class );
   
  +    private final ComponentFactory m_factory;
  +
  +    protected AbstractResourceProvider( final ComponentFactory factory )
  +    {
  +        if( null == factory )
  +        {
  +            throw new NullPointerException( "factory" );
  +        }
  +        m_factory = factory;
  +    }
  +
       /**
        * Utility method via which the provider aquires services to place
        * in ServiceManager for a particular component.
  @@ -76,6 +88,24 @@
       protected abstract Object getContextValue( String name, Object entry );
   
       /**
  +     * Create a component for a particular entry.
  +     * This implementation uses the associated
  +     * {@link ComponentFactory} to create instance of
  +     * component.
  +     *
  +     * @param entry the entry
  +     * @return the newly created component
  +     * @throws Exception if unable to create component
  +     */
  +    public Object createObject( final Object entry )
  +        throws Exception
  +    {
  +        final ComponentMetaData component = getMetaData( entry );
  +        final String implementationKey = component.getImplementationKey();
  +        return m_factory.createComponent( implementationKey );
  +    }
  +
  +    /**
        * Create a Parameters object by Creating configuration object and converting that.
        *
        * @param entry the entry
  @@ -160,9 +190,9 @@
       {
           final ComponentMetaData component = getMetaData( componentEntry );
           final String componentName = component.getName();
  -
  -        final ContextDescriptor descriptor =
  -            component.getComponentInfo().getContextDescriptor();
  +        final String impl = component.getImplementationKey();
  +        final ComponentInfo info = m_factory.createInfo( impl );
  +        final ContextDescriptor descriptor = info.getContextDescriptor();
   
           final Map contextData = new HashMap();
   
  @@ -296,6 +326,16 @@
       }
   
       /**
  +     * Accessor for component factory for sub-classes.
  +     *
  +     * @return the componentFactory associated with ResourceProvider.
  +     */
  +    protected final ComponentFactory getComponentFactory()
  +    {
  +        return m_factory;
  +    }
  +
  +    /**
        * Create a Map of services for specified component.
        * The map maps role name to service provider.
        *
  @@ -307,7 +347,8 @@
           throws Exception
       {
           final ComponentMetaData component = getMetaData( componentEntry );
  -        final ComponentInfo info = component.getComponentInfo();
  +        final String impl = component.getImplementationKey();
  +        final ComponentInfo info = m_factory.createInfo( impl );
           final DependencyMetaData[] dependencies = component.getDependencies();
   
           final HashMap services = new HashMap();
  
  
  
  1.13      +19 -18    jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metadata/ComponentMetaData.java
  
  Index: ComponentMetaData.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metadata/ComponentMetaData.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ComponentMetaData.java	17 Aug 2002 06:59:02 -0000	1.12
  +++ ComponentMetaData.java	18 Aug 2002 03:34:28 -0000	1.13
  @@ -9,7 +9,6 @@
   
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.parameters.Parameters;
  -import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
   
   /**
    * Each component declared in the application is represented by
  @@ -25,7 +24,15 @@
   public class ComponentMetaData
   {
       /**
  -     * The name of the component profile. This is an
  +     * The implementationKey for this component.
  +     * Usually this represents a classname but
  +     * alternative mechanisms could be used (ie URL
  +     * of webservice).
  +     */
  +    private final String m_implementationKey;
  +
  +    /**
  +     * The name of the component. This is an
        * abstract name used during assembly.
        */
       private final String m_name;
  @@ -37,11 +44,6 @@
       private final DependencyMetaData[] m_dependencies;
   
       /**
  -     * The info object for component type.
  -     */
  -    private final ComponentInfo m_componentInfo;
  -
  -    /**
        * The parameters for component (if any).
        */
       private final Parameters m_parameters;
  @@ -56,13 +58,12 @@
        *
        * @param name the abstract name of component meta data instance
        * @param dependencies the meta data for any dependencies
  -     * @param componentInfo the component componentInfo desribing the component type
        */
       public ComponentMetaData( final String name,
  +                              final String implementationKey,
                                 final DependencyMetaData[] dependencies,
                                 final Parameters parameters,
  -                              final Configuration configuration,
  -                              final ComponentInfo componentInfo )
  +                              final Configuration configuration )
       {
           if( null == name )
           {
  @@ -72,16 +73,16 @@
           {
               throw new NullPointerException( "dependencies" );
           }
  -        if( null == componentInfo )
  +        if( null == implementationKey )
           {
  -            throw new NullPointerException( "componentInfo" );
  +            throw new NullPointerException( "implementationKey" );
           }
   
           m_name = name;
           m_dependencies = dependencies;
           m_parameters = parameters;
           m_configuration = configuration;
  -        m_componentInfo = componentInfo;
  +        m_implementationKey = implementationKey;
       }
   
       /**
  @@ -95,13 +96,13 @@
       }
   
       /**
  -     * Return the info for component.
  +     * Return the implementationKey for component.
        *
  -     * @return the info for component type.
  +     * @return the implementationKey for component.
        */
  -    public ComponentInfo getComponentInfo()
  +    public String getImplementationKey()
       {
  -        return m_componentInfo;
  +        return m_implementationKey;
       }
   
       /**
  
  
  
  1.29      +40 -17    jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/verifier/AssemblyVerifier.java
  
  Index: AssemblyVerifier.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/verifier/AssemblyVerifier.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- AssemblyVerifier.java	17 Aug 2002 06:48:47 -0000	1.28
  +++ AssemblyVerifier.java	18 Aug 2002 03:34:28 -0000	1.29
  @@ -12,6 +12,7 @@
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
  +import org.apache.excalibur.containerkit.factory.ComponentFactory;
   import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
   import org.apache.excalibur.containerkit.metadata.DependencyMetaData;
   import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
  @@ -60,7 +61,8 @@
        * @param components the Components that make up assembly
        * @throws VerifyException if an error occurs
        */
  -    public void verifyAssembly( final ComponentMetaData[] components )
  +    public void verifyAssembly( final ComponentMetaData[] components,
  +                                final ComponentFactory factory )
           throws VerifyException
       {
           String message = null;
  @@ -75,11 +77,11 @@
   
           message = REZ.getString( "assembly.dependencies-mapping.notice" );
           getLogger().info( message );
  -        verifyValidDependencies( components );
  +        verifyValidDependencies( components, factory );
   
           message = REZ.getString( "assembly.dependency-references.notice" );
           getLogger().info( message );
  -        verifyDependencyReferences( components );
  +        verifyDependencyReferences( components, factory );
   
           message = REZ.getString( "assembly.nocircular-dependencies.notice" );
           getLogger().info( message );
  @@ -92,12 +94,13 @@
        * @param components the ComponentMetaData objects for the components
        * @throws VerifyException if an error occurs
        */
  -    public void verifyValidDependencies( final ComponentMetaData[] components )
  +    public void verifyValidDependencies( final ComponentMetaData[] components,
  +                                         final ComponentFactory factory )
           throws VerifyException
       {
           for( int i = 0; i < components.length; i++ )
           {
  -            verifyDependenciesMap( components[ i ] );
  +            verifyDependenciesMap( components[ i ], factory );
           }
       }
   
  @@ -210,7 +213,7 @@
           for( int i = 0; i < deps.length; i++ )
           {
               final String name = deps[ i ].getProviderName();
  -            final ComponentMetaData other = getComponentProfile( name, components );
  +            final ComponentMetaData other = getComponentMetaData( name, components );
               dependencies.add( other );
           }
   
  @@ -223,12 +226,13 @@
        * @param components the ComponentMetaData objects for the components
        * @throws VerifyException if an error occurs
        */
  -    protected void verifyDependencyReferences( final ComponentMetaData[] components )
  +    protected void verifyDependencyReferences( final ComponentMetaData[] components,
  +                                               final ComponentFactory factory )
           throws VerifyException
       {
           for( int i = 0; i < components.length; i++ )
           {
  -            verifyDependencyReferences( components[ i ], components );
  +            verifyDependencyReferences( components[ i ], components, factory );
           }
       }
   
  @@ -240,10 +244,11 @@
        * @throws VerifyException if an error occurs
        */
       protected void verifyDependencyReferences( final ComponentMetaData component,
  -                                               final ComponentMetaData[] others )
  +                                               final ComponentMetaData[] others,
  +                                               final ComponentFactory factory )
           throws VerifyException
       {
  -        final ComponentInfo info = component.getComponentInfo();
  +        final ComponentInfo info = getComponentInfo( component, factory );
           final DependencyMetaData[] roles = component.getDependencies();
   
           for( int i = 0; i < roles.length; i++ )
  @@ -254,7 +259,7 @@
                   info.getDependency( roleName ).getService();
   
               //Get the other component that is providing service
  -            final ComponentMetaData provider = getComponentProfile( providerName, others );
  +            final ComponentMetaData provider = getComponentMetaData( providerName, others );
               if( null == provider )
               {
                   final String message =
  @@ -267,7 +272,8 @@
   
               //make sure that the component offers service
               //that user expects it to be providing
  -            final ServiceDescriptor[] services = provider.getComponentInfo().getServices();
  +            final ComponentInfo providerInfo = getComponentInfo( provider, factory );
  +            final ServiceDescriptor[] services = providerInfo.getServices();
               if( !hasMatchingService( service, services ) )
               {
                   final String message =
  @@ -280,6 +286,20 @@
           }
       }
   
  +    private ComponentInfo getComponentInfo( final ComponentMetaData component, final ComponentFactory factory )
  +        throws VerifyException
  +    {
  +        final String impl = component.getImplementationKey();
  +        try
  +        {
  +            return factory.createInfo( impl );
  +        }
  +        catch( final Exception e )
  +        {
  +            throw new VerifyException( e.getMessage(), e );
  +        }
  +    }
  +
       /**
        * Get component with specified name from specified Component array.
        *
  @@ -287,7 +307,7 @@
        * @param components the array of components to search
        * @return the Component if found, else null
        */
  -    protected ComponentMetaData getComponentProfile( final String name,
  +    protected ComponentMetaData getComponentMetaData( final String name,
                                                         final ComponentMetaData[] components )
       {
           for( int i = 0; i < components.length; i++ )
  @@ -395,7 +415,8 @@
        * @param component the ComponentMetaData describing the component
        * @throws VerifyException if an error occurs
        */
  -    protected void verifyDependenciesMap( final ComponentMetaData component )
  +    protected void verifyDependenciesMap( final ComponentMetaData component,
  +                                          final ComponentFactory factory )
           throws VerifyException
       {
           //Make sure all role entries specified in config file are valid
  @@ -404,7 +425,8 @@
           for( int i = 0; i < dependencySet.length; i++ )
           {
               final String roleName = dependencySet[ i ].getRole();
  -            final DependencyDescriptor descriptor = component.getComponentInfo().getDependency( roleName );
  +            final ComponentInfo info = getComponentInfo( component, factory );
  +            final DependencyDescriptor descriptor = info.getDependency( roleName );
   
               //If there is no dependency descriptor in ComponentInfo then
               //user has specified an uneeded dependency.
  @@ -420,7 +442,8 @@
           }
   
           //Make sure all dependencies in ComponentInfo file are satisfied
  -        final DependencyDescriptor[] dependencies = component.getComponentInfo().getDependencies();
  +        final ComponentInfo info = getComponentInfo( component, factory );
  +        final DependencyDescriptor[] dependencies = info.getDependencies();
           for( int i = 0; i < dependencies.length; i++ )
           {
               final DependencyDescriptor dependency = dependencies[ i ];
  
  
  
  1.10      +36 -8     jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/verifier/MetaDataVerifier.java
  
  Index: MetaDataVerifier.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/verifier/MetaDataVerifier.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- MetaDataVerifier.java	17 Aug 2002 06:48:25 -0000	1.9
  +++ MetaDataVerifier.java	18 Aug 2002 03:34:28 -0000	1.10
  @@ -19,6 +19,7 @@
   import org.apache.excalibur.containerkit.metainfo.ContextDescriptor;
   import org.apache.excalibur.containerkit.metainfo.ServiceDescriptor;
   import org.apache.excalibur.containerkit.metainfo.ServiceDesignator;
  +import org.apache.excalibur.containerkit.factory.ComponentFactory;
   
   /**
    * This Class verifies that an implementation is valid wrt the
  @@ -87,11 +88,12 @@
        * @throws VerifyException if an error occurs
        */
       public void verifyType( final ComponentMetaData component,
  -                            final ClassLoader classLoader )
  +                            final ClassLoader classLoader,
  +                            final ComponentFactory factory )
           throws VerifyException
       {
           final Class clazz = getClass( classLoader, component );
  -        verifyType( component, clazz );
  +        verifyType( component, clazz, factory );
       }
   
       /**
  @@ -102,19 +104,45 @@
        * @throws VerifyException if an error occurs
        */
       public void verifyType( final ComponentMetaData component,
  -                            final Class clazz )
  +                            final Class clazz,
  +                            final ComponentFactory factory )
           throws VerifyException
       {
           final String name = component.getName();
  +        final String impl = component.getImplementationKey();
  +        final ComponentInfo info = getComponentInfo( impl, factory );
           final Class[] interfaces =
               getServiceClasses( name,
  -                               component.getComponentInfo().getServices(),
  +                               info.getServices(),
                                  clazz.getClassLoader() );
   
           m_verifier.verifyComponent( name, clazz, interfaces );
   
           verifyDependencyPresence( component, clazz );
  -        verifyContextPresence( component, clazz );
  +        verifyContextPresence( component, info, clazz );
  +    }
  +
  +    /**
  +     * Retrieve component info from factory and throw a verify
  +     * exception on error.
  +     *
  +     * @param impl the implementationKey
  +     * @param factory the factory to use
  +     * @return the ComponentInfo for implementationKey
  +     * @throws VerifyException if unable to locate info
  +     */
  +    private ComponentInfo getComponentInfo( final String impl,
  +                                            final ComponentFactory factory )
  +        throws VerifyException
  +    {
  +        try
  +        {
  +            return factory.createInfo( impl );
  +        }
  +        catch( final Exception e )
  +        {
  +            throw new VerifyException( e.getMessage(), e );
  +        }
       }
   
       /**
  @@ -126,10 +154,10 @@
        * @throws VerifyException if fails verification check
        */
       protected void verifyContextPresence( final ComponentMetaData component,
  +                                          final ComponentInfo info,
                                             final Class clazz )
           throws VerifyException
       {
  -        final ComponentInfo info = component.getComponentInfo();
           final ContextDescriptor context = info.getContextDescriptor();
           final int count = context.getEntrys().length;
   
  @@ -254,6 +282,6 @@
        */
       private String getClassname( final ComponentMetaData component )
       {
  -        return component.getComponentInfo().getComponentDescriptor().getImplementationKey();
  +        return component.getImplementationKey();
       }
   }
  
  
  

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