mcconnell 2002/12/20 03:58:01
Modified: merlin THE-RED-PILL.TXT
merlin/src/java/org/apache/avalon/merlin/block
BlockLoader.java
merlin/src/java/org/apache/avalon/merlin/container
ContainerLoader.java DefaultContainer.java
merlin/src/java/org/apache/avalon/merlin/kernel
DefaultKernel.java
merlin/src/java/org/apache/avalon/merlin/service
DefaultRegistry.java
merlin/src/test/config block.xml
merlin/src/test/org/apache/avalon/playground
StandardComponent.xinfo
Log:
Enhanced partition name management and registry related code.
Revision Changes Path
1.2 +1 -1 avalon-sandbox/merlin/THE-RED-PILL.TXT
Index: THE-RED-PILL.TXT
===================================================================
RCS file: /home/cvs/avalon-sandbox/merlin/THE-RED-PILL.TXT,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- THE-RED-PILL.TXT 4 Dec 2002 17:37:53 -0000 1.1
+++ THE-RED-PILL.TXT 20 Dec 2002 11:58:00 -0000 1.2
@@ -10,7 +10,7 @@
# an evalon-meta/assembly deployment engine and logs some stuff in the
# process - interesting but not terribly valuable at the moment.
#
-# Pl,ease not - this code base is evolving daily as part of refactoring of the
+# Please not - this code base is evolving daily as part of refactoring of the
# Excalibur/assembly package. On completion there wil be a clean seperation of
# the internals containerment systems from the application notions of contaier
# hierachies. The containement API element will be located under
1.7 +14 -3
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/BlockLoader.java
Index: BlockLoader.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/BlockLoader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- BlockLoader.java 17 Dec 2002 09:59:47 -0000 1.6
+++ BlockLoader.java 20 Dec 2002 11:58:00 -0000 1.7
@@ -203,6 +203,16 @@
return (Block[]) blocks.toArray( new Block[0] );
}
+ /**
+ * Load a block. The implemention is provided with the parent engine and
registry
+ * and handles the creation of subsidiary systems.
+ *
+ * @param parent the parent engine
+ * @param registry the system registry
+ * @param home the system home
+ * @param url the block URL
+ * @param system the system context
+ */
private Block loadBlock(
EngineClassLoader parent, Registry registry, File home, URL url, Context
system )
throws Exception
@@ -241,15 +251,16 @@
Configuration engineConfig = config.getChild( "engine" );
EngineClassLoader engine = createChildEngine( parent, home, engineConfig,
url, logger );
+ Registry childRegistry = registry.createChild( name );
//
// create and root container
//
Configuration containerConfig = config.getChild( "container" );
- Appliance appliance = createContainer( engine, registry, name, home,
containerConfig, logger );
- Logger child = getLogger().getChildLogger( name );
+ Appliance appliance = createContainer( engine, childRegistry, name, home,
containerConfig, logger );
DefaultBlock block = new DefaultBlock( appliance, url, manifest );
+ Logger child = getLogger().getChildLogger( name );
block.enableLogging( child );
if( getLogger().isDebugEnabled() )
1.6 +10 -19
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/ContainerLoader.java
Index: ContainerLoader.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/ContainerLoader.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ContainerLoader.java 19 Dec 2002 10:50:16 -0000 1.5
+++ ContainerLoader.java 20 Dec 2002 11:58:00 -0000 1.6
@@ -131,7 +131,7 @@
EngineClassLoader engine, Registry registry, String name, File home,
Configuration config, Logger logger )
throws Exception
{
- return createContainer( engine, registry, name, home, config, logger, null
);
+ return createContainer( engine, registry, name, home, config, logger, "/" );
}
/**
@@ -181,27 +181,16 @@
if( partition == null )
{
- childName = name;
- childLogger = logger;
- childEngine = engine;
- childPartition = name;
- childRegistry = registry;
+ childPartition = name + "/";
}
else
{
- childName = childConfig.getAttribute( "name", "untitled" );
- childLogger = logger.getChildLogger( childName );
- childEngine = childEngine = createChildEngine( engine, home,
childConfig, childLogger );
- if( partition.endsWith( "/" ) )
- {
- childPartition = partition + "/" + name;
- }
- else
- {
- childPartition = partition + name;
- }
- childRegistry = registry.createChild( name );
+ childPartition = partition + name + "/";
}
+ childName = childConfig.getAttribute( "name", "untitled" );
+ childLogger = logger.getChildLogger( childName );
+ childEngine = childEngine = createChildEngine( engine, home,
childConfig, childLogger );
+ childRegistry = registry.createChild( name );
//
// recursively call this method to create the subsidiary containers
@@ -230,7 +219,9 @@
{
map.put("urn:avalon:partition.name", "" );
}
+
ApplianceContext context = new ApplianceContext( descriptor );
+ context.setName( name );
context.setDeploymentContext( map );
if( partition != null )
{
1.5 +10 -10
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/DefaultContainer.java
Index: DefaultContainer.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/DefaultContainer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DefaultContainer.java 19 Dec 2002 10:50:16 -0000 1.4
+++ DefaultContainer.java 20 Dec 2002 11:58:00 -0000 1.5
@@ -167,16 +167,16 @@
{
if( m_partition.endsWith("/") )
{
- m_path = m_partition + "/" + m_descriptor.getName();
+ m_path = m_partition + m_descriptor.getName() + "/";
}
else
{
- m_path = m_partition + m_descriptor.getName();
+ m_path = m_partition + "/" + m_descriptor.getName() + "/";
}
}
else
{
- m_path = m_descriptor.getName();
+ m_path = m_descriptor.getName() + "/";
}
if( getLogger().isDebugEnabled() )
@@ -204,7 +204,7 @@
if( getLogger().isDebugEnabled() )
{
final String message =
- "activating container: [" + appliance.getProfile().getName() +
"]";
+ "activating container: [" + appliance.getName() + "]";
getLogger().debug( message );
}
@@ -217,7 +217,7 @@
{
final String error =
"Could not establish a sub-container: "
- + appliance.getProfile().getName()
+ + appliance.getName()
+ " in container: " + this;
throw new ContainerException( error, e );
}
@@ -315,7 +315,7 @@
if( getLogger().isDebugEnabled() )
{
final String message =
- "activating component: [" + appliance.getProfile().getName() +
"]";
+ "activating component: [" + appliance.getName() + "]";
getLogger().debug( message );
}
@@ -328,7 +328,7 @@
{
final String error =
"Could not establish a component: "
- + appliance.getProfile().getName()
+ + appliance.getName()
+ " in container: " + this;
throw new ContainerException( error, e );
}
@@ -354,7 +354,7 @@
{
final String error =
"Could not start a subsidiary container: "
- + appliance.getProfile().getName()
+ + appliance.getName()
+ " in container: " + this;
throw new ContainerException( error, e );
}
@@ -424,7 +424,7 @@
{
final String error =
"Could not shutdown a subsidiary container: "
- + appliance.getProfile().getName()
+ + appliance.getName()
+ " in container: " + this;
throw new ContainerException( error, e );
}
1.14 +3 -3
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/DefaultKernel.java
Index: DefaultKernel.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/DefaultKernel.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- DefaultKernel.java 19 Dec 2002 10:50:17 -0000 1.13
+++ DefaultKernel.java 20 Dec 2002 11:58:00 -0000 1.14
@@ -386,7 +386,7 @@
// list the registered services
//
- Appliance[] appliances = m_registry.getAppliances();
+ URL[] appliances = m_registry.list();
if( appliances.length == 0 )
{
getLogger().info( "empty registry" );
@@ -395,7 +395,7 @@
{
for( int i=0; i<appliances.length; i++ )
{
- getLogger().info("registry: " + appliances[i].getURL() );
+ getLogger().info("registry: " + appliances[i] );
}
}
}
1.2 +19 -13
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/service/DefaultRegistry.java
Index: DefaultRegistry.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/service/DefaultRegistry.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultRegistry.java 17 Dec 2002 09:58:46 -0000 1.1
+++ DefaultRegistry.java 20 Dec 2002 11:58:01 -0000 1.2
@@ -217,7 +217,7 @@
{
synchronized( m_appliances )
{
- final String name = appliance.getProfile().getName();
+ final String name = appliance.getName();
if( m_appliances.get( name ) != null )
{
final String error = "Duplicate name: " + name;
@@ -238,7 +238,7 @@
{
synchronized( m_appliances )
{
- String name = appliance.getProfile().getName();
+ String name = appliance.getName();
Iterator iterator = m_appliances.entrySet().iterator();
while( iterator.hasNext() )
{
@@ -363,30 +363,36 @@
//=======================================================================
/**
- * Returns a list of published appliance URLs.
- * @return the appliances
+ * Returns a list of published appliance URLs from this registry and all
+ * subsidiary registries.
+ * @return the appliances urls
*/
public URL[] list()
{
ArrayList list = new ArrayList();
- Registry[] publishers =
- (Registry[])m_table.values().toArray( new Registry[ 0 ] );
- for( int j = 0; j < publishers.length; j++ )
- {
- URL url = publishers[ j ].getBase();
- list.add( url );
- }
Appliance[] appliances = (Appliance[])m_appliances.values().toArray( new
Appliance[ 0 ] );
for( int i = 0; i < appliances.length; i++ )
{
list.add( appliances[ i ].getURL() );
}
+
+ Registry[] publishers =
+ (Registry[])m_table.values().toArray( new Registry[ 0 ] );
+ for( int j = 0; j < publishers.length; j++ )
+ {
+ URL[] sublist = publishers[j].list();
+ for( int k = 0; k < sublist.length; k++ )
+ {
+ list.add( sublist[ k ] );
+ }
+ }
+
return (URL[])list.toArray( new URL[ 0 ] );
}
/**
- * Returns a list of published appliances.
+ * Returns a list of published appliances local to this registry.
* @return the appliances
*/
public Appliance[] getAppliances()
1.8 +5 -4 avalon-sandbox/merlin/src/test/config/block.xml
Index: block.xml
===================================================================
RCS file: /home/cvs/avalon-sandbox/merlin/src/test/config/block.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- block.xml 19 Dec 2002 10:50:17 -0000 1.7
+++ block.xml 20 Dec 2002 11:58:01 -0000 1.8
@@ -10,10 +10,11 @@
</services>
<container>
- <component name="standard"
class="org.apache.avalon.playground.StandardComponent" activation="startup">
- <context class="org.apache.avalon.playground.StandardContextImp"/>
- </component>
- <container name="test"/>
+ <container name="test">
+ <component name="standard"
class="org.apache.avalon.playground.StandardComponent" activation="startup">
+ <context class="org.apache.avalon.playground.StandardContextImp"/>
+ </component>
+ </container>
</container>
</block>
1.5 +0 -2
avalon-sandbox/merlin/src/test/org/apache/avalon/playground/StandardComponent.xinfo
Index: StandardComponent.xinfo
===================================================================
RCS file:
/home/cvs/avalon-sandbox/merlin/src/test/org/apache/avalon/playground/StandardComponent.xinfo,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- StandardComponent.xinfo 19 Dec 2002 10:50:17 -0000 1.4
+++ StandardComponent.xinfo 20 Dec 2002 11:58:01 -0000 1.5
@@ -28,12 +28,10 @@
-->
<context type="org.apache.avalon.playground.StandardContext">
-
<attributes>
<attribute key="urn:assembly:lifecycle.context.extension"
value="org.apache.avalon.playground.Contextualizable"/>
</attributes>
-
</context>
<services>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>