You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2003/04/02 17:58:05 UTC
cvs commit: avalon-sandbox/merlin/merlin-core/src/java/org/apache/avalon/merlin/block/impl DefaultBlockLoader.java
mcconnell 2003/04/02 07:58:05
Modified: merlin/merlin-core/src/java/org/apache/avalon/merlin/block/impl
DefaultBlockLoader.java
Log:
Addition of support for simulated package deployment.
Revision Changes Path
1.5 +39 -5 avalon-sandbox/merlin/merlin-core/src/java/org/apache/avalon/merlin/block/impl/DefaultBlockLoader.java
Index: DefaultBlockLoader.java
===================================================================
RCS file: /home/cvs/avalon-sandbox/merlin/merlin-core/src/java/org/apache/avalon/merlin/block/impl/DefaultBlockLoader.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DefaultBlockLoader.java 29 Mar 2003 03:25:57 -0000 1.4
+++ DefaultBlockLoader.java 2 Apr 2003 15:58:05 -0000 1.5
@@ -347,7 +347,11 @@
}
URL base = getBasePath( path );
- Configuration implementation = block.getChild( "implementation" );
+ Configuration implementation = block.getChild( "implementation", false );
+ if( implementation == null )
+ {
+ implementation = block.getChild( "container" );
+ }
Configuration engineConfig = implementation.getChild( "engine" );
EngineClassLoader engine = null;
try
@@ -523,9 +527,16 @@
}
catch( Throwable e )
{
- final String error =
- "Unable to resolve block description on path: " + uri;
- throw new BlockException( error, e );
+ try
+ {
+ return createConfiguration( uri + "BLOCK-INF/block.xml" );
+ }
+ catch( Throwable ce )
+ {
+ final String error =
+ "Unable to resolve block description on path: " + uri;
+ throw new BlockException( error, e );
+ }
}
}
}
@@ -567,6 +578,13 @@
try
{
descriptor = CREATOR.createContainerDescriptor( type, config, name );
+
+ //
+ // from the container implementor point of view a block is all
+ // about the creation of appliance instances - the following code
+ // fragment pulls in all appliance declarations
+ //
+
Configuration[] children = config.getChildren( "appliance" );
for( int i=0; i<children.length; i++ )
{
@@ -575,6 +593,22 @@
engine.getRepository().getProfileManager().addProfile( profile );
descriptor.addComponent( profile );
}
+
+ //
+ // however, a user views a container as a thing that contains components
+ // so we repeat the same process here using "component" instead of
+ // "appliance"
+ //
+
+ children = config.getChildren( "component" );
+ for( int j=0; j<children.length; j++ )
+ {
+ Configuration child = children[j];
+ Profile profile = createProfile( name, engine, child );
+ engine.getRepository().getProfileManager().addProfile( profile );
+ descriptor.addComponent( profile );
+ }
+
return descriptor;
}
catch( Exception e )
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org