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