mcconnell 2002/12/27 17:32:02
Modified: merlin/src/java/org/apache/avalon/merlin/container
DefaultContainer.java
Log:
added support for resolving and applying a custom component configuration
Revision Changes Path
1.10 +17 -4
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.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DefaultContainer.java 27 Dec 2002 16:41:06 -0000 1.9
+++ DefaultContainer.java 28 Dec 2002 01:32:02 -0000 1.10
@@ -68,6 +68,9 @@
import org.apache.avalon.assembly.appliance.ApplianceException;
import org.apache.avalon.assembly.lifecycle.AssemblyException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.context.ContextException;
@@ -75,8 +78,10 @@
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.merlin.container.ContainerDescriptor;
+import org.apache.avalon.merlin.kernel.DefaultKernel;
import org.apache.avalon.merlin.service.Registry;
import org.apache.avalon.meta.model.Profile;
+import org.apache.excalibur.configuration.ConfigurationUtil;
/**
* <p>Default implementation of a container model within which a set
@@ -130,14 +135,17 @@
*/
private String m_path;
+ /**
+ * Component configuration.
+ */
+ private Configuration m_targets;
+
//==============================================================
// Contextualizable
//==============================================================
/**
- * <p>Application of a runtime context to the lifestyle service.
- * The context value will be passed directly to lifestyle handlers
- * established by this service.
+ * <p>Application of a runtime context for this container.
* @param context the runtime context
*/
public void contextualize( Context context ) throws ContextException
@@ -147,6 +155,7 @@
m_descriptor = (ContainerDescriptor) context.get(
"urn:merlin:container.descriptor" );
m_partition = (String) context.get( "urn:avalon:partition.name" );
m_registry = (Registry) context.get( "urn:merlin:container.registry" );
+ m_targets = (Configuration) context.get(
"urn:merlin:container.configuration" );
}
//==============================================================
@@ -186,6 +195,8 @@
getLogger().debug( "initialization: " + m_path + " (" + profiles.length
+ ")" );
}
+ getLogger().info( "configuration array:\n" + ConfigurationUtil.list(
m_targets ) );
+
for( int i=0; i<profiles.length; i++ )
{
Profile profile = profiles[i];
@@ -196,7 +207,9 @@
getLogger().debug( message );
}
DefaultApplianceContext context = new DefaultApplianceContext( profile
);
+ Configuration config = DefaultKernel.getNamedConfiguration( m_targets,
profile.getName() );
context.setPartitionName( m_path );
+ context.setConfiguration( config );
context.makeReadOnly();
Appliance appliance = createAppliance( context, true );
m_components.add( appliance );
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>