donaldp     2002/08/19 05:53:40

  Modified:    containerkit/src/java/org/apache/excalibur/containerkit/dependency
                        DependencyMap.java
  Log:
  Reworked so that the state is only used in the top level methods. The lower methods 
only act on parameters.
  
  Revision  Changes    Path
  1.15      +38 -33    
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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- DependencyMap.java        19 Aug 2002 12:44:28 -0000      1.14
  +++ DependencyMap.java        19 Aug 2002 12:53:40 -0000      1.15
  @@ -9,10 +9,11 @@
   
   import java.util.ArrayList;
   import java.util.Collection;
  -import org.apache.excalibur.containerkit.metadata.DependencyMetaData;
  -import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
  +import java.util.List;
   import org.apache.avalon.framework.info.DependencyDescriptor;
   import org.apache.excalibur.containerkit.kernel.ComponentEntry;
  +import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
  +import org.apache.excalibur.containerkit.metadata.DependencyMetaData;
   import org.apache.excalibur.containerkit.store.ComponentStore;
   
   /**
  @@ -26,12 +27,6 @@
   public class DependencyMap
   {
       /**
  -     * The child {@link DependencyMap} objects.
  -     * Possible consumers of services in this assembly.
  -     */
  -    private final ArrayList m_children = new ArrayList();
  -
  -    /**
        * The set of components in assembly.
        * Used when searching for providers/consumers.
        */
  @@ -52,7 +47,7 @@
        */
       public ComponentEntry[] getStartupGraph()
       {
  -        return walkGraph( true );
  +        return walkGraph( true, m_store );
       }
   
       /**
  @@ -65,7 +60,7 @@
        */
       public ComponentEntry[] getShutdownGraph()
       {
  -        return walkGraph( false );
  +        return walkGraph( false, m_store );
       }
   
       /**
  @@ -77,7 +72,7 @@
        */
       public ComponentEntry[] getConsumerGraph( final ComponentEntry component )
       {
  -        return getComponentGraph( component, false );
  +        return getComponentGraph( component, false, m_store );
       }
   
       /**
  @@ -89,7 +84,7 @@
        */
       public ComponentEntry[] getProviderGraph( final ComponentEntry component )
       {
  -        return getComponentGraph( component, true );
  +        return getComponentGraph( component, true, m_store );
       }
   
       /**
  @@ -99,13 +94,16 @@
        * @param providers true if traversing providers, false if consumers
        * @return the list of components in graph
        */
  -    private ComponentEntry[] getComponentGraph( final ComponentEntry component, 
final boolean providers )
  +    private ComponentEntry[] getComponentGraph( final ComponentEntry component,
  +                                                final boolean providers,
  +                                                final ComponentStore store )
       {
           final ArrayList result = new ArrayList();
           visitcomponent( component,
                           providers,
                           new ArrayList(),
  -                        result );
  +                        result,
  +                        store );
   
           final ComponentEntry[] returnValue = new ComponentEntry[ result.size() ];
           return (ComponentEntry[])result.toArray( returnValue );
  @@ -119,12 +117,13 @@
        * @param providers true if forward dependencys traced, false if dependencies 
reversed
        * @return the ordered node names
        */
  -    private ComponentEntry[] walkGraph( final boolean providers )
  +    private ComponentEntry[] walkGraph( final boolean providers,
  +                                        final ComponentStore store )
       {
           final ArrayList result = new ArrayList();
           final ArrayList done = new ArrayList();
   
  -        final Collection components = m_store.getComponents();
  +        final Collection components = store.getComponents();
           final ComponentEntry[] entrySet =
               (ComponentEntry[])components.toArray( new ComponentEntry[ 
components.size() ] );
           for( int i = 0; i < entrySet.length; i++ )
  @@ -133,7 +132,8 @@
               visitcomponent( component,
                               providers,
                               done,
  -                            result );
  +                            result,
  +                            store );
           }
   
           final ComponentEntry[] returnValue = new ComponentEntry[ result.size() ];
  @@ -152,7 +152,8 @@
       private void visitcomponent( final ComponentEntry component,
                                    final boolean providers,
                                    final ArrayList done,
  -                                 final ArrayList order )
  +                                 final ArrayList order,
  +                                 final ComponentStore store )
       {
           //If already visited this component then bug out early
           if( done.contains( component ) )
  @@ -163,11 +164,11 @@
   
           if( providers )
           {
  -            visitProviders( component, done, order );
  +            visitProviders( component, done, order, store );
           }
           else
           {
  -            visitConsumers( component, done, order );
  +            visitConsumers( component, done, order, store );
           }
   
           order.add( component );
  @@ -181,7 +182,8 @@
        */
       private void visitProviders( final ComponentEntry component,
                                    final ArrayList done,
  -                                 final ArrayList order )
  +                                 final ArrayList order,
  +                                 final ComponentStore store )
       {
           final DependencyDescriptor[] descriptors =
               component.getInfo().getDependencies();
  @@ -199,8 +201,8 @@
               if( dependency != null )
               {
                   final ComponentEntry other =
  -                  getComponent( dependency.getProviderName() );
  -                visitcomponent( other, true, done, order );
  +                    getComponent( dependency.getProviderName(), store );
  +                visitcomponent( other, true, done, order, store );
               }
           }
       }
  @@ -213,11 +215,12 @@
        */
       private void visitConsumers( final ComponentEntry component,
                                    final ArrayList done,
  -                                 final ArrayList order )
  +                                 final ArrayList order,
  +                                 final ComponentStore store )
       {
           final String name = component.getMetaData().getName();
   
  -        final Collection components = m_store.getComponents();
  +        final Collection components = store.getComponents();
           final ComponentEntry[] entrySet =
               (ComponentEntry[])components.toArray( new ComponentEntry[ 
components.size() ] );
           for( int i = 0; i < entrySet.length; i++ )
  @@ -231,16 +234,17 @@
                   final String depends = roles[ j ].getProviderName();
                   if( depends.equals( name ) )
                   {
  -                    visitcomponent( other, false, done, order );
  +                    visitcomponent( other, false, done, order, store );
                   }
               }
           }
   
  -        final int childCount = m_children.size();
  +        final List childStores = store.getChildStores();
  +        final int childCount = childStores.size();
           for( int i = 0; i < childCount; i++ )
           {
  -            final DependencyMap map = (DependencyMap)m_children.get( i );
  -            map.visitConsumers( component, done, order );
  +            final ComponentStore child = (ComponentStore)childStores.get( i );
  +            visitConsumers( component, done, order, child );
           }
       }
   
  @@ -250,15 +254,16 @@
        * @param name the name of component
        * @return the component
        */
  -    private ComponentEntry getComponent( final String name )
  +    private ComponentEntry getComponent( final String name,
  +                                         final ComponentStore store )
       {
  -        final ComponentEntry component = m_store.getComponent( name );
  +        final ComponentEntry component = store.getComponent( name );
           if( null != component )
           {
               return component;
           }
   
  -        final ComponentStore parent = m_store.getParent();
  +        final ComponentStore parent = store.getParent();
           if( null != parent )
           {
               return parent.getComponent( name );
  
  
  

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

Reply via email to