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]>