mcconnell 2002/12/02 22:57:27
Modified: assembly build.xml
assembly/src/java/org/apache/avalon/assembly/appliance
Appliance.java ApplianceManager.java
ApplianceSelector.java DefaultAppliance.java
DefaultApplianceManager.java
DefaultApplianceSelector.java
DefaultAssemblyService.java
assembly/src/java/org/apache/avalon/assembly/engine
DefaultEngine.java
assembly/src/java/org/apache/avalon/assembly/lifecycle
ContextHandler.java DefaultDeploymentService.java
DeploymentService.java
assembly/src/java/org/apache/avalon/assembly/lifecycle/logging
DefaultLoggingService.java LoggingService.java
assembly/src/java/org/apache/avalon/assembly/lifestyle
AbstractLifestyleHandler.java
DefaultLifestyleService.java LifestyleService.java
PooledLifestyleHandler.java
assembly/src/java/org/apache/avalon/assembly/logging
DefaultLoggingManager.java
assembly/src/java/org/apache/avalon/assembly/profile
DefaultProfileManager.java ProfileSelector.java
assembly/src/java/org/apache/avalon/assembly/service
DefaultServiceManager.java
assembly/src/java/org/apache/avalon/assembly/type
DefaultTypeManager.java
assembly/src/test/org/apache/avalon/assembly
TestCaseBase.java
assembly/src/test/org/apache/avalon/assembly/engine
EngineTestCase.java
assembly/src/test/org/apache/avalon/assembly/profile
ProfileManagerTestCase.java
assembly/src/test/org/apache/avalon/assembly/service
DefaultServiceManagerTestCase.java
assembly/src/test/org/apache/avalon/assembly/type
TypeManagerTestCase.java
assembly/src/test/org/apache/avalon/playground
BasicComponent.xprofile BasicService.xservice
DemoManager.xinfo SimpleComponent.xinfo
Added: assembly/src/java/org/apache/avalon/assembly/logging
Resources.properties
Log:
Lots of updates - enahancements (even things like optimization of the
context/service seperation), etc. Still a work in progress.
Revision Changes Path
1.4 +2 -2 avalon-sandbox/assembly/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/avalon-sandbox/assembly/build.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- build.xml 1 Dec 2002 06:43:22 -0000 1.3
+++ build.xml 3 Dec 2002 06:57:25 -0000 1.4
@@ -382,8 +382,8 @@
<target name="patch">
<replace dir="src" summary="true"
- token="Apache Avalon Project"
- value="Apache Avalon Project" >
+ token="xxxx"
+ value="yyyy" >
<include name="**/*.*"/>
</replace>
</target>
1.4 +6 -1
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java
Index: Appliance.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Appliance.java 1 Dec 2002 06:43:22 -0000 1.3
+++ Appliance.java 3 Dec 2002 06:57:25 -0000 1.4
@@ -68,6 +68,11 @@
public interface Appliance
{
+ /**
+ * Release the appliance path.
+ */
+ String getPath();
+
/**
* Return the profile backing the appliance.
* @return the profile that this appliance is managing
1.4 +2 -1
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceManager.java
Index: ApplianceManager.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ApplianceManager.java 29 Nov 2002 13:04:54 -0000 1.3
+++ ApplianceManager.java 3 Dec 2002 06:57:25 -0000 1.4
@@ -58,6 +58,7 @@
import org.apache.avalon.meta.info.DependencyDescriptor;
import org.apache.avalon.meta.info.StageDescriptor;
import org.apache.avalon.meta.model.Profile;
+import org.apache.avalon.assembly.logging.LoggingManager;
/**
* An appliance manager implemetation provides support for the
1.3 +2 -2
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceSelector.java
Index: ApplianceSelector.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ApplianceSelector.java 29 Nov 2002 13:04:54 -0000 1.2
+++ ApplianceSelector.java 3 Dec 2002 06:57:25 -0000 1.3
@@ -59,7 +59,7 @@
* implementing the selector interface may be activated during the selection of
* candidate service providers during assembly. A component author may declare a
* selection class explicitly via a service dependency attribute with the attribute
- * name of <code>avalon:appliance.selector</code>.
+ * name of <code>urn:avalon:appliance.selector</code>.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development
Team</a>
* @version $Revision$ $Date$
1.5 +33 -23
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java
Index: DefaultAppliance.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DefaultAppliance.java 30 Nov 2002 21:46:39 -0000 1.4
+++ DefaultAppliance.java 3 Dec 2002 06:57:25 -0000 1.5
@@ -133,10 +133,10 @@
*/
private boolean m_initialized = false;
- /**
- * The base logging channel for the componet instance.
- */
- private Logger m_logger;
+ /**
+ * The base path for the appliance.
+ */
+ private String m_path;
//==============================================================
// Contextualizable
@@ -148,37 +148,37 @@
* detailed in the following table.</p>
* <table>
* <tr>
- * <td>key</td><td>type</td><td>default</td>
+ *
<td><strong>key</strong></td><td><strong>type</strong></td><td><strong>default</strong></td>
* </tr>
* <tr>
- * <td>avalon:classloader</td>
+ * <td>urn:avalon:classloader</td>
* <td>{@link ClassLoader}</td>
* <td>The classloader from to be supplied to the lifestyle manager.</td>
* </tr>
* <tr>
- * <td>assembly:appliance.profile</td>
+ * <td>urn:assembly:appliance.profile</td>
* <td>{@link Profile}</td>
* <td>The profile backing this appliance.</td>
* </tr>
* <tr>
- * <td>assembly:appliance.enabled</td>
+ * <td>urn:assembly:appliance.enabled</td>
* <td>{@link Boolean}</td>
* <td>The enabled state of the appliance.</td>
* </tr>
* <tr>
- * <td>assembly:appliance.activation</td>
+ * <td>urn:assembly:appliance.activation</td>
* <td>{@link Boolean}</td>
* <td>The activation policy for the appliance.</td>
* </tr>
* <tr>
- * <td>assembly:appliance.context</td>
+ * <td>urn:assembly:appliance.context</td>
* <td>{@link Context}</td>
* <td>Supplimentary (option) deployment context.</td>
* </tr>
* <tr>
- * <td>assembly:logger</td>
- * <td>{@link org.apache.avalon.framework.logger.Logger}</td>
- * <td>The base client logger from which component loggers will be
created.</td>
+ * <td>urn:assembly:appliance.base</td>
+ * <td>{@link String}</td>
+ * <td>The base path.</td>
* </tr>
* </table>
* @param context the runtime context
@@ -186,12 +186,12 @@
public void contextualize( Context context ) throws ContextException
{
m_context = context;
- m_classloader = (ClassLoader) context.get( "assembly:appliance.classloader"
);
- m_profile = (Profile)context.get( "assembly:appliance.profile" );
+ m_classloader = (ClassLoader) context.get(
"urn:assembly:appliance.classloader" );
+ m_profile = (Profile)context.get( "urn:assembly:appliance.profile" );
try
{
- m_enabled = ((Boolean)context.get( "assembly:appliance.enabled"
)).booleanValue();
+ m_enabled = ((Boolean)context.get( "urn:assembly:appliance.enabled"
)).booleanValue();
}
catch( ContextException e )
{
@@ -200,22 +200,24 @@
try
{
- m_activation = ((Boolean)context.get( "assembly:appliance.activation"
)).booleanValue();
+ String base = (String) context.get( "urn:assembly:appliance.base" );
+ m_path = base + "/" + m_profile.getName();
}
catch( ContextException e )
{
- m_activation = false;
+ m_path = "/" + m_profile.getName();
}
try
{
- m_logger = (Logger) context.get( "assembly:logger" );
+ m_activation = ((Boolean)context.get(
"urn:assembly:appliance.activation" )).booleanValue();
}
catch( ContextException e )
{
- m_logger = getLogger();
+ m_activation = false;
}
+
}
//==============================================================
@@ -229,7 +231,7 @@
*/
public void service( ServiceManager manager ) throws ServiceException
{
- m_lifestyle = (LifestyleService) manager.lookup(
"assembly:lifestyle-service" );
+ m_lifestyle = (LifestyleService) manager.lookup(
"urn:assembly:lifestyle-service" );
}
//==============================================================
@@ -257,7 +259,7 @@
try
{
- m_handler = m_lifestyle.createHandler( this, m_classloader,
getLogger(), m_logger, m_context );
+ m_handler = m_lifestyle.createHandler( this, m_classloader, m_context );
}
catch( Throwable e )
{
@@ -272,6 +274,14 @@
//=====================================================================
// implementation
//=====================================================================
+
+ /**
+ * Release the appliance path.
+ */
+ public String getPath()
+ {
+ return m_path;
+ }
/**
* Return the profile backing the appliance.
1.4 +106 -65
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceManager.java
Index: DefaultApplianceManager.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultApplianceManager.java 30 Nov 2002 21:46:39 -0000 1.3
+++ DefaultApplianceManager.java 3 Dec 2002 06:57:25 -0000 1.4
@@ -73,6 +73,9 @@
import org.apache.avalon.meta.model.Profile;
import org.apache.avalon.assembly.lifestyle.LifestyleService;
import org.apache.avalon.assembly.lifestyle.DefaultLifestyleService;
+import org.apache.avalon.assembly.logging.DefaultLoggingManager;
+import org.apache.avalon.assembly.logging.LoggingManager;
+import org.apache.avalon.assembly.engine.Engine;
/**
* The default appliance manager provides support for {@link Appliance}
@@ -89,7 +92,9 @@
// static
//==================================================================
- public static final String ASSEMBLY_SERVICE_KEY = "assembly:assembly-service";
+ public static final String ASSEMBLY_SERVICE_KEY =
"urn:assembly:assembly-service";
+
+ public static final String LOGGING_MANAGER_KEY = "urn:assembly:logging.manager";
//==================================================================
// state
@@ -134,49 +139,17 @@
* The assembly service.
*/
private AssemblyService m_assembly;
-
+
/**
- * The client logging channel.
+ * The assembly service.
*/
- private Logger m_logger;
+ private LoggingManager m_logging;
-
- //==============================================================
- // Serviceable
- //==============================================================
-
- /**
- * <p>Application of a supporting service to the appliance manager.</p>
- * <table>
- * <tr>
- * <td>key</td><td>type</td><td>description</td>
- * </tr>
- * <tr>
- * <td>assembly:lifecycle-service</td>
- * <td>{@link org.apache.avalon.assembly.lifestyle.LifestyleService}</td>
- * <td>The lifestyle service to provide to appliance instances created
- * by this manager.</td>
- * </tr>
- * <tr>
- * <td>assembly:assembly-service</td>
- * <td>{@link org.apache.avalon.assembly.AssemblyService}</td>
- * <td>The assembly service.</td>
- * </tr>
- * </table>
- * @param context the runtime context
- */
- public void service( ServiceManager manager ) throws ServiceException
- {
- m_manager = manager;
- try
- {
- m_assembly = (AssemblyService) manager.lookup( ASSEMBLY_SERVICE_KEY );
- }
- catch( ServiceException se )
- {
- m_assembly = bootstrapAssemblyService( manager );
- }
- }
+ /**
+ * The lifestyle service that will be supplied to appliance instances
+ * created by this manager.
+ */
+ private LifestyleService m_lifestyle;
//==============================================================
// Contextualizable
@@ -191,20 +164,15 @@
* <td>key</td><td>type</td><td>default</td>
* </tr>
* <tr>
- * <td>assembly:classloader</td>
+ * <td>urn:assembly:classloader</td>
* <td>java.lang.ClassLoader</td>
* <td>The context classloader will be used by default if no value is
supplied.</td>
* </tr>
* <tr>
- * <td>assembly:parent</td>
+ * <td>urn:assembly:parent</td>
* <td>{@link org.apache.avalon.assembly.appliance.ApplianceManager}</td>
* <td>In no value suppled, this appliance manager will be considered as a
root manager.</td>
* </tr>
- * <tr>
- * <td>assembly:logger</td>
- * <td>{@link org.apache.avalon.framework.logger.Logger}</td>
- * <td>The base logger from which component loggers will be created.</td>
- * </tr>
* </table>
* @param context the runtime context
*/
@@ -213,7 +181,7 @@
m_context = context;
try
{
- m_parent = (ApplianceManager) context.get( "assembly:parent" );
+ m_parent = (ApplianceManager) context.get( "urn:assembly:parent" );
}
catch( ContextException e )
{
@@ -222,23 +190,62 @@
try
{
- m_classloader = (ClassLoader) context.get( "assembly:classloader" );
+ m_classloader = (ClassLoader) context.get( "urn:assembly:classloader" );
}
catch( ContextException e )
{
m_classloader = Thread.currentThread().getContextClassLoader();
}
+ m_contextualized = true;
+ }
+
+ //==============================================================
+ // Serviceable
+ //==============================================================
+
+ /**
+ * <p>Application of a supporting service to the appliance manager.</p>
+ * <table>
+ * <tr>
+ * <td>key</td><td>type</td><td>description</td>
+ * </tr>
+ * <tr>
+ * <td>urn:assembly:lifecycle-service</td>
+ * <td>{@link org.apache.avalon.assembly.lifestyle.LifestyleService}</td>
+ * <td>The lifestyle service to provide to appliance instances created
+ * by this manager.</td>
+ * </tr>
+ * <tr>
+ * <td>urn:assembly:assembly-service</td>
+ * <td>{@link org.apache.avalon.assembly.AssemblyService}</td>
+ * <td>The assembly service.</td>
+ * </tr>
+ * </table>
+ * @param context the runtime context
+ */
+ public void service( ServiceManager manager ) throws ServiceException
+ {
+ m_manager = manager;
+ m_logging = (LoggingManager) manager.lookup( LOGGING_MANAGER_KEY );
try
{
- m_logger = (Logger) context.get( "assembly:logger" );
+ m_assembly = (AssemblyService) manager.lookup( ASSEMBLY_SERVICE_KEY );
}
- catch( ContextException e )
+ catch( ServiceException se )
{
- m_logger = getLogger();
+ m_assembly = bootstrapAssemblyService();
}
- m_contextualized = true;
+ try
+ {
+ m_lifestyle =
+ (LifestyleService) manager.lookup( "urn:assembly:lifestyle-service" );
+ }
+ catch( ServiceException se )
+ {
+ // ignore and handle during initialization
+ }
}
//==============================================================
@@ -268,7 +275,19 @@
throw new IllegalStateException("service");
}
- final String key = "assembly:lifestyle-service";
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "initialization" );
+ }
+
+ /*
+ if( m_lifestyle == null )
+ {
+ m_lifestyle = bootstrapLifestyleService();
+ }
+ */
+
+ final String key = "urn:assembly:lifestyle-service";
if( !m_manager.hasService( key ) )
{
DefaultServiceManager manager = new DefaultServiceManager( m_manager );
@@ -338,8 +357,14 @@
throw new NullPointerException( "profile" );
}
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "create: " + profile.getName() );
+ }
+
try
{
+
DefaultAppliance appliance = new DefaultAppliance();
appliance.enableLogging(
@@ -354,14 +379,11 @@
{
context = new DefaultContext( map, m_context );
}
-
- context.put( "assembly:appliance.profile", profile );
- context.put( "assembly:appliance.enabled", new Boolean( enabled ) );
- context.put( "assembly:appliance.activation", new Boolean( activation )
);
- context.put( "assembly:appliance.classloader", m_classloader );
- context.put( "assembly:logger", m_logger );
+ context.put( "urn:assembly:appliance.profile", profile );
+ context.put( "urn:assembly:appliance.enabled", new Boolean( enabled ) );
+ context.put( "urn:assembly:appliance.activation", new Boolean(
activation ) );
+ context.put( "urn:assembly:appliance.classloader", m_classloader );
context.makeReadOnly();
-
appliance.contextualize( context );
appliance.service( m_manager );
@@ -542,6 +564,11 @@
*/
private LifestyleService bootstrapLifestyleService( ServiceManager manager )
throws Exception
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "bootstrap lifestyle" );
+ }
+
DefaultLifestyleService lifestyle = new DefaultLifestyleService();
lifestyle.enableLogging( getLogger().getChildLogger( "lifestyle" ) );
lifestyle.service( manager );
@@ -555,13 +582,27 @@
* @param manager a service manager
* @return the bootstrap assembly service
*/
- private AssemblyService bootstrapAssemblyService( ServiceManager manager )
throws ServiceException
+ private AssemblyService bootstrapAssemblyService() throws ServiceException
{
+ if( getLogger() == null )
+ {
+ throw new IllegalStateException( "logger" );
+ }
+ if( m_manager == null )
+ {
+ throw new IllegalStateException( "service" );
+ }
+
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "bootstrap assembly" );
+ }
+
try
{
DefaultAssemblyService assembly = new DefaultAssemblyService();
assembly.enableLogging( getLogger().getChildLogger( "assembly" ) );
- assembly.service( manager );
+ assembly.service( m_manager );
assembly.contextualize( m_context );
assembly.initialize();
return assembly;
1.2 +2 -2
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceSelector.java
Index: DefaultApplianceSelector.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultApplianceSelector.java 29 Nov 2002 13:17:16 -0000 1.1
+++ DefaultApplianceSelector.java 3 Dec 2002 06:57:25 -0000 1.2
@@ -59,7 +59,7 @@
* implementing the selector interface may be activated during the selection of
* candidate service providers during assembly. A component author may declare a
* selection class explicitly via a service dependency attribute with the attribute
- * name of <code>avalon:appliance.selector</code>.
+ * name of <code>urn:avalon:appliance.selector</code>.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development
Team</a>
* @version $Revision$ $Date$
1.2 +50 -11
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAssemblyService.java
Index: DefaultAssemblyService.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAssemblyService.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultAssemblyService.java 29 Nov 2002 13:17:16 -0000 1.1
+++ DefaultAssemblyService.java 3 Dec 2002 06:57:25 -0000 1.2
@@ -77,6 +77,12 @@
public class DefaultAssemblyService extends AbstractLogEnabled implements
AssemblyService, Contextualizable, Serviceable, Initializable
{
//==============================================================
+ // static
+ //==============================================================
+
+ private static final String ENGINE_KEY = "urn:assembly:engine";
+
+ //==============================================================
// state
//==============================================================
@@ -103,7 +109,7 @@
* <td>key</td><td>type</td><td>default</td>
* </tr>
* <tr>
- * <td>assembly:dependency-map</td>
+ * <td>urn:assembly:dependency-map</td>
* <td>org.apache.avalon.assembly.appliance.DepedendencyGraph</td>
* <td>The depedency graph.</td>
* </tr>
@@ -114,7 +120,7 @@
{
try
{
- m_map = (DependencyGraph) context.get( "assembly:dependency-map" );
+ m_map = (DependencyGraph) context.get( "urn:assembly:dependency-map" );
}
catch( ContextException e )
{
@@ -133,7 +139,14 @@
*/
public void service( ServiceManager manager ) throws ServiceException
{
- m_engine = (Engine) manager.lookup( "assembly:engine" );
+ if( manager.hasService( ENGINE_KEY ) )
+ {
+ m_manager = manager;
+ }
+ else
+ {
+ throw new ServiceException( ENGINE_KEY );
+ }
}
//==============================================================
@@ -158,7 +171,7 @@
{
throw new IllegalStateException("contextaulize");
}
- if( m_engine == null )
+ if( m_manager == null )
{
throw new IllegalStateException("service");
}
@@ -184,6 +197,33 @@
assembleAppliance( m_map, appliance, m_visited, "" );
}
+ /**
+ * Utility to get the engine from the service manager. This operation
+ * should not be invoked before completion of initialization.
+ * @return the engine
+ * @exception IllegalStateException if invoked during or prior to
+ * component initialization
+ */
+ protected Engine getEngine() throws IllegalStateException
+ {
+ if( m_engine == null )
+ {
+ if( !m_initialized )
+ {
+ throw new IllegalStateException("initialization");
+ }
+ try
+ {
+ m_engine = (Engine) m_manager.lookup( ENGINE_KEY );
+ }
+ catch( ServiceException e )
+ {
+ throw new IllegalStateException("engine");
+ }
+ }
+ return m_engine;
+ }
+
/**
* Assemble a single appliance.
* @param map the current depedency map to populate
@@ -193,7 +233,6 @@
* @param pad used in formatting log messages
* @exception AssemblyException if an assembly related error occurs
*/
-
private void assembleAppliance(
DependencyGraph map, Appliance appliance, List visited, String pad )
throws AssemblyException
@@ -203,7 +242,7 @@
String pad2 = pad + " ";
//
- // for all of the declared depedencies - make sure the
+ // for all of the declared dependencies - make sure the
// dependency is satisfied
//
@@ -227,7 +266,7 @@
try
{
- supplier = m_engine.resolve( dependency );
+ supplier = getEngine().resolve( dependency );
}
catch( Throwable e )
{
@@ -283,7 +322,7 @@
try
{
- supplier = m_engine.resolve( stage );
+ supplier = getEngine().resolve( stage );
}
catch( Throwable e )
{
@@ -331,7 +370,7 @@
Appliance provider;
try
{
- provider = m_engine.resolve( stage );
+ provider = getEngine().resolve( stage );
}
catch( Throwable e )
{
@@ -357,7 +396,7 @@
Appliance provider;
try
{
- provider = m_engine.resolve( dependency );
+ provider = getEngine().resolve( dependency );
}
catch( Throwable e )
{
1.4 +160 -56
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/DefaultEngine.java
Index: DefaultEngine.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/DefaultEngine.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultEngine.java 30 Nov 2002 21:46:39 -0000 1.3
+++ DefaultEngine.java 3 Dec 2002 06:57:26 -0000 1.4
@@ -57,11 +57,17 @@
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.logger.Logger;
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.DefaultContext;
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.DefaultServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.meta.info.DependencyDescriptor;
import org.apache.avalon.meta.info.StageDescriptor;
@@ -78,6 +84,7 @@
import org.apache.avalon.assembly.lifestyle.LifestyleException;
import org.apache.avalon.assembly.lifestyle.LifestyleService;
import org.apache.avalon.assembly.lifestyle.DefaultLifestyleService;
+import org.apache.avalon.assembly.logging.LoggingManager;
import org.apache.excalibur.mpool.DefaultPoolManager;
import org.apache.excalibur.mpool.PoolManager;
import org.apache.excalibur.event.command.CommandManager;
@@ -89,7 +96,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development
Team</a>
* @version $Revision$ $Date$
*/
-public class DefaultEngine extends AbstractLogEnabled implements Engine,
Contextualizable, Initializable
+public class DefaultEngine extends AbstractLogEnabled implements Engine,
Configurable, Contextualizable, Serviceable, Initializable
{
//==============================================================
// static
@@ -108,6 +115,12 @@
//==============================================================
/**
+ * The supplied configuration. The configuration may be empty
+ * as defaults are provided for all values.
+ */
+ private Configuration m_config;
+
+ /**
* The system wide context where system refers to the context that
* will be propergated by this engine to compoents under it
* supervision.
@@ -146,15 +159,32 @@
/**
* A map of custom context entries that suppliment the standard system
- * context at the scope of this engine. The map ius supplied by a client
+ * context at the scope of this engine. The map is supplied by a client
* at the time of engine establishment via the engine context.
*/
private Map m_map;
/**
- * The logging channel for system level functions.
+ * The default logging manager. The manager is supplied under contextualization
+ * phase.
+ */
+ private LoggingManager m_logging;
+
+ //==============================================================
+ // Configurable
+ //==============================================================
+
+ /**
+ * Supply of the static configuration for the deployment service.
+ * @param config the static configuration
*/
- private Logger m_logger;
+ public void configure( Configuration config ) throws ConfigurationException
+ {
+ if( config == null )
+ {
+ throw new NullPointerException( "config" );
+ }
+ }
//==============================================================
// Contextualizable
@@ -170,7 +200,7 @@
{
try
{
- m_classloader = (ClassLoader) context.get( "assembly:classloader" );
+ m_classloader = (ClassLoader) context.get( "urn:assembly:classloader" );
}
catch( ContextException ce )
{
@@ -179,7 +209,7 @@
try
{
- m_types = (TypeManager) context.get( "assembly:type-manager" );
+ m_types = (TypeManager) context.get( "urn:assembly:type-manager" );
}
catch( ContextException ce )
{
@@ -188,7 +218,7 @@
try
{
- m_profiles = (ProfileManager) context.get( "assembly:profile-manager" );
+ m_profiles = (ProfileManager) context.get(
"urn:assembly:profile-manager" );
}
catch( ContextException ce )
{
@@ -197,7 +227,7 @@
try
{
- m_appliances = (ApplianceManager) context.get(
"assembly:appliance-manager" );
+ m_appliances = (ApplianceManager) context.get(
"urn:assembly:appliance-manager" );
}
catch( ContextException ce )
{
@@ -206,7 +236,7 @@
try
{
- m_map = (Map) context.get( "assembly:system-map" );
+ m_map = (Map) context.get( "urn:assembly:system-map" );
}
catch( ContextException ce )
{
@@ -215,18 +245,57 @@
}
//==============================================================
+ // Serviceable
+ //==============================================================
+
+ /**
+ * <p>Application of a supporting service to the engine.</p>
+ * <table>
+ * <tr>
+ * <td>key</td><td>type</td><td>description</td>
+ * </tr>
+ * <tr>
+ * <td>urn:assembly:logging.manager</td>
+ * <td>{@link org.apache.assembly.logging.LoggingManager}</td>
+ * <td>A logging manager.</td>
+ * </tr>
+ * </table>
+ * @param manager the service manager
+ */
+ public void service( ServiceManager manager ) throws ServiceException
+ {
+ if( manager == null )
+ {
+ throw new NullPointerException( "manager" );
+ }
+
+ String key = "urn:assembly:logging.manager";
+ m_logging = (LoggingManager) manager.lookup( key );
+ }
+
+ //==============================================================
// Initializable
//==============================================================
+ /**
+ * Initialization of the engine.
+ * @exception if an initialization error occurs
+ */
public void initialize() throws Exception
{
if( getLogger() == null )
{
throw new IllegalStateException("logger");
}
- else
+
+ if( m_logging == null )
{
- m_logger = getLogger().getChildLogger( SYSTEM_LOG_CATEGORY );
+ throw new IllegalStateException("service");
+ }
+
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "initialization" );
}
if( m_classloader == null )
@@ -236,17 +305,17 @@
if( m_types == null )
{
- m_types = createTypeManager( m_classloader, m_logger );
+ m_types = createTypeManager( );
}
if( m_profiles == null )
{
- m_profiles = createProfileManager( m_classloader, m_logger );
+ m_profiles = createProfileManager();
}
if( m_appliances == null )
{
- m_appliances = createApplianceManager( m_classloader, m_logger );
+ m_appliances = createApplianceManager();
}
}
@@ -261,6 +330,11 @@
*/
public void register( String path ) throws EngineRuntimeException
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "register:" + path );
+ }
+
try
{
Type type = m_types.createType( path );
@@ -285,6 +359,11 @@
*/
public Appliance resolve( DependencyDescriptor dependency ) throws Exception
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "resolve: " + dependency );
+ }
+
Appliance appliance = m_appliances.getAppliance( dependency );
if( appliance == null )
{
@@ -312,6 +391,11 @@
*/
public Appliance resolve( StageDescriptor stage ) throws Exception
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "resolve: " + stage );
+ }
+
Appliance appliance = m_appliances.getAppliance( stage );
if( appliance == null )
{
@@ -378,56 +462,71 @@
{
try
{
- return (ClassLoader) context.get( "assembly:classloader" );
+ return (ClassLoader) context.get( "urn:assembly:classloader" );
}
catch( ContextException ce )
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "assigning context classloader" );
+ }
+
return Thread.currentThread().getContextClassLoader();
}
}
- private TypeManager createTypeManager( ClassLoader classloader, Logger logger )
throws Exception
+ private TypeManager createTypeManager( ) throws Exception
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "bootstrap type manager" );
+ }
DefaultTypeManager manager = new DefaultTypeManager();
- manager.enableLogging( logger.getChildLogger("types") );
+ manager.enableLogging( getLogger().getChildLogger( "types" ) );
DefaultContext context = new DefaultContext();
- context.put( "assembly:classloader", classloader );
+ context.put( "urn:assembly:classloader", m_classloader );
context.makeReadOnly();
manager.contextualize( context );
manager.initialize();
return manager;
}
- private ProfileManager createProfileManager( ClassLoader classloader, Logger
logger ) throws Exception
+ private ProfileManager createProfileManager( ) throws Exception
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "bootstrap profile manager" );
+ }
DefaultProfileManager manager = new DefaultProfileManager();
- manager.enableLogging( logger.getChildLogger("profiles") );
+ manager.enableLogging( getLogger().getChildLogger( "profiles" ) );
DefaultContext context = new DefaultContext();
- context.put( "assembly:classloader", classloader );
+ context.put( "urn:assembly:classloader", m_classloader );
context.makeReadOnly();
manager.contextualize( context );
manager.initialize();
return manager;
}
- private ApplianceManager createApplianceManager( ClassLoader classloader,
Logger logger ) throws Exception
+ private ApplianceManager createApplianceManager() throws Exception
{
- DefaultApplianceManager manager = new DefaultApplianceManager();
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "bootstrap appliance manager" );
+ }
- manager.enableLogging( logger );
+ DefaultApplianceManager manager = new DefaultApplianceManager();
+ manager.enableLogging( getLogger() );
DefaultContext context = new DefaultContext( getSystemContext() );
- context.put( "assembly:classloader", classloader );
- context.put( "assembly:pool-manager", getPoolManager( logger ) );
- context.put( "assembly:logger", getLogger() );
+ context.put( "urn:assembly:classloader", m_classloader );
+ context.put( "urn:assembly:pool-manager", getPoolManager( ) );
context.makeReadOnly();
manager.contextualize( context );
-
DefaultServiceManager services = new DefaultServiceManager();
- services.put( "assembly:engine", this );
+ services.put( "urn:assembly:engine", this );
+ services.put( "urn:assembly:logging.manager", m_logging );
services.makeReadOnly();
manager.service( services );
-
manager.initialize();
return manager;
@@ -435,35 +534,40 @@
private Context getSystemContext()
{
- if( m_context == null )
+ if( getLogger().isDebugEnabled() )
{
- DefaultContext context;
- if( m_map != null )
- {
- context = new DefaultContext( m_map );
- }
- else
- {
- context = new DefaultContext();
- }
+ getLogger().debug( "bootstrap system context" );
+ }
- try
- {
- context.get( "avalon:home" );
- }
- catch( ContextException ce )
- {
- final File home = new File( System.getProperty( "user.dir" ) );
- context.put( "avalon:home", home );
- }
-
- m_context = context;
+ DefaultContext context;
+ if( m_map != null )
+ {
+ context = new DefaultContext( m_map );
}
- return m_context;
+ else
+ {
+ context = new DefaultContext();
+ }
+
+ try
+ {
+ context.get( "urn:avalon:home" );
+ }
+ catch( ContextException ce )
+ {
+ final File home = new File( System.getProperty( "user.dir" ) );
+ context.put( "urn:avalon:home", home );
+ }
+ return context;
}
- private PoolManager getPoolManager( Logger logger )
+ private PoolManager getPoolManager( )
{
+ if( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "bootstrap pool manager" );
+ }
+
try
{
//
@@ -471,7 +575,7 @@
//
TPCThreadManager threadManager = new TPCThreadManager();
- threadManager.enableLogging( logger.getChildLogger( "threads" ) );
+ threadManager.enableLogging( getLogger().getChildLogger( "threads" ) );
Parameters params = new Parameters();
params.setParameter( "threads-per-processor", "2" );
params.setParameter( "sleep-time", "1000" );
@@ -497,7 +601,7 @@
catch( Throwable e )
{
final String error =
- "Internel error during establishment of the default pool manager.";
+ "Internal error during establishment of the default pool manager.";
throw new EngineRuntimeException( error, e );
}
}
1.2 +2 -2
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/ContextHandler.java
Index: ContextHandler.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/ContextHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ContextHandler.java 30 Nov 2002 14:47:51 -0000 1.1
+++ ContextHandler.java 3 Dec 2002 06:57:26 -0000 1.2
@@ -100,7 +100,7 @@
public void contextualize( Context context ) throws ContextException
{
m_context = context;
- m_classloader = (ClassLoader) context.get( "assembly:classloader" );
+ m_classloader = (ClassLoader) context.get( "urn:assembly:classloader" );
}
//==============================================================
1.3 +20 -18
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/DefaultDeploymentService.java
Index: DefaultDeploymentService.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/DefaultDeploymentService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DefaultDeploymentService.java 30 Nov 2002 21:46:39 -0000 1.2
+++ DefaultDeploymentService.java 3 Dec 2002 06:57:26 -0000 1.3
@@ -58,6 +58,7 @@
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.DefaultServiceManager;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.component.Composable;
@@ -83,6 +84,7 @@
import org.apache.avalon.assembly.lifecycle.disposal.DisposalService;
import org.apache.avalon.assembly.lifecycle.disposal.DefaultDisposalService;
import org.apache.avalon.assembly.lifecycle.disposal.ExtendedDisposalService;
+import org.apache.avalon.assembly.logging.LoggingManager;
/**
* A deployment service is responsible for the deployment of a component
@@ -130,7 +132,6 @@
config.getChild("extensions").getAttributeAsBoolean( "enabled", true );
}
-
//==============================================================
// Contextualizable
//==============================================================
@@ -161,7 +162,7 @@
* <td>key</td><td>type</td><td>description</td>
* </tr>
* <tr>
- * <td>assembly:lifecycle.logging</td>
+ * <td>urn:assembly:lifecycle.logging</td>
* <td>{@link org.apache.avalon.assembly.logging.LoggingService}</td>
* <td>The logging service to use for the creation of auxiliary logging
channels.</td>
* </tr>
@@ -177,49 +178,49 @@
m_manager = manager;
- String key = "assembly:lifecycle.logging";
+ String key = "urn:assembly:lifecycle.logging";
if( manager.hasService( key ) )
{
m_logging = (LoggingService) manager.lookup( key );
}
- key = "assembly:lifecycle.configuration";
+ key = "urn:assembly:lifecycle.configuration";
if( manager.hasService( key ) )
{
m_configuration = (ConfigurationService) manager.lookup( key );
}
- key = "assembly:lifecycle.parameters";
+ key = "urn:assembly:lifecycle.parameters";
if( manager.hasService( key ) )
{
m_parameters = (ParameterizationService) manager.lookup( key );
}
- key = "assembly:lifecycle.context";
+ key = "urn:assembly:lifecycle.context";
if( manager.hasService( key ) )
{
m_contextualization = (ContextualizationService) manager.lookup( key );
}
- key = "assembly:lifecycle.assembly";
+ key = "urn:assembly:lifecycle.assembly";
if( manager.hasService( key ) )
{
m_composition = (CompositionService) manager.lookup( key );
}
- key = "assembly:lifecycle.initialization";
+ key = "urn:assembly:lifecycle.initialization";
if( manager.hasService( key ) )
{
m_initialization = (InitializationService) manager.lookup( key );
}
- key = "assembly:lifecycle.startup";
+ key = "urn:assembly:lifecycle.startup";
if( manager.hasService( key ) )
{
m_startup = (StartupService) manager.lookup( key );
}
- key = "assembly:lifecycle.disposal";
+ key = "urn:assembly:lifecycle.disposal";
if( manager.hasService( key ) )
{
m_disposal = (DisposalService) manager.lookup( key );
@@ -287,11 +288,10 @@
* containment context.
* @param classloader the classloader to use
* @param appliance the appliance to deploy
- * @param logger the base logging channel to assign to the component
* @param context the containment context
* @return the deployed component
*/
- public Object deploy( Appliance appliance, ClassLoader classloader, Logger
logger, Context context )
+ public Object deploy( Appliance appliance, ClassLoader classloader, Context
context )
throws DeploymentException
{
if( !m_initialized )
@@ -307,10 +307,6 @@
{
throw new NullPointerException( "classloader" );
}
- if( logger == null )
- {
- throw new NullPointerException( "logger" );
- }
if( context == null )
{
throw new NullPointerException( "context" );
@@ -335,7 +331,7 @@
try
{
- m_logging.enableLogging( appliance, instance, logger );
+ m_logging.enableLogging( appliance, instance );
m_configuration.configure( appliance, instance );
m_parameters.parameterize( appliance, instance );
m_contextualization.contextualize( appliance, instance, context );
@@ -384,6 +380,12 @@
{
DefaultLoggingService service = new DefaultLoggingService();
service.enableLogging( getLogger().getChildLogger( "logging" ) );
+ LoggingManager logging =
+ (LoggingManager) m_manager.lookup( "urn:assembly:logging.manager" );
+ DefaultServiceManager manager = new DefaultServiceManager();
+ manager.put( "urn:assembly:logging.manager", logging );
+ service.service( manager );
+ service.initialize();
return service;
}
catch( Throwable e )
1.2 +2 -2
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/DeploymentService.java
Index: DeploymentService.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/DeploymentService.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DeploymentService.java 29 Nov 2002 13:19:09 -0000 1.1
+++ DeploymentService.java 3 Dec 2002 06:57:26 -0000 1.2
@@ -80,7 +80,7 @@
* @param context the containment context
* @return the deployed component
*/
- Object deploy( Appliance appliance, ClassLoader classloader, Logger logger,
Context context )
+ Object deploy( Appliance appliance, ClassLoader classloader, Context context )
throws DeploymentException;
/**
1.4 +97 -8
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/logging/DefaultLoggingService.java
Index: DefaultLoggingService.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/logging/DefaultLoggingService.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultLoggingService.java 30 Nov 2002 21:46:39 -0000 1.3
+++ DefaultLoggingService.java 3 Dec 2002 06:57:26 -0000 1.4
@@ -50,10 +50,21 @@
package org.apache.avalon.assembly.lifecycle.logging;
+import java.util.ArrayList;
+
+import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.assembly.appliance.Appliance;
+import org.apache.avalon.assembly.logging.LoggingManager;
+import org.apache.avalon.meta.info.LoggerDescriptor;
+import org.apache.avalon.meta.model.Profile;
+import org.apache.avalon.meta.model.LoggingDirective;
+import org.apache.avalon.meta.model.Category;
/**
* Service that handles the assignment of logging channels to a component.
@@ -61,15 +72,54 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development
Team</a>
* @version $Revision$ $Date$
*/
-public class DefaultLoggingService extends AbstractLogEnabled implements
LoggingService
+public class DefaultLoggingService extends AbstractLogEnabled implements
Serviceable, Initializable, LoggingService
{
+ //==============================================================
+ // state
+ //==============================================================
+
+ private LoggingManager m_manager;
+
+ //==============================================================
+ // Serviceable
+ //==============================================================
+
+ /**
+ * <p>Application of a logging manager to this service.</p>
+ * @param manager the service manager
+ */
+ public void service( ServiceManager manager ) throws ServiceException
+ {
+ m_manager = (LoggingManager) manager.lookup( "urn:assembly:logging.manager"
);
+ }
+
+ //==============================================================
+ // Initializable
+ //==============================================================
+
+ /**
+ * Initialization of the logging service.
+ * @exception Exception if an initialization error occurs
+ */
+ public void initialize() throws Exception
+ {
+ if( m_manager == null )
+ {
+ throw new IllegalStateException("service");
+ }
+ }
+
+ //==============================================================
+ // LoggingService
+ //==============================================================
+
/**
- * Applies logging base logging channel; from which a componet logger shall be
derived
+ * Applies primary and subsidiary logging channels to the component.
* @param appliance the appliace
* @param object the object to which logging channels will be assigned
- * @param the base logging channel
+ * @param path the absolute logging category path
*/
- public void enableLogging( Appliance appliance, Object object, Logger logger )
+ public void enableLogging( Appliance appliance, Object object )
throws Exception
{
if( appliance == null )
@@ -89,11 +139,50 @@
final String message = "[" + name + "]";
getLogger().debug( message );
}
- if( logger == null )
+
+ String path = appliance.getPath();
+
+ LoggingDirective logging = buildLoggingCategories(
appliance.getProfile() );
+ m_manager.addCategories( path, logging );
+
+ Logger logger = m_manager.getLoggerForCategory( path );
+ ((LogEnabled)object).enableLogging( logger );
+ }
+ }
+
+ /**
+ * Create a categories descriptor that takes into account both type logging
+ * category declarations and the profile level logging category definitions
+ * under a single <code>LoggingDirective</code> instance.
+ *
+ * @param profile the profile defining the type and profile level category
+ * information
+ * @return a new fully populated <code>LoggingDirective</code>
+ */
+ private LoggingDirective buildLoggingCategories( Profile profile )
+ {
+ LoggingDirective categories = profile.getCategories();
+ LoggerDescriptor[] loggers = profile.getType().getLoggers();
+ ArrayList list = new ArrayList();
+ for( int i = 0; i < loggers.length; i++ )
+ {
+ String name = loggers[ i ].getName();
+ Category category = categories.getCategory( name );
+ if( category != null )
{
- throw new NullPointerException( "logger" );
+ list.add( category );
+ }
+ else
+ {
+ list.add( new Category( name ) );
}
- ((LogEnabled)object).enableLogging( logger.getChildLogger( name ) );
}
+
+ return new LoggingDirective(
+ categories.getName(),
+ categories.getPriority(),
+ categories.getTarget(),
+ (Category[])list.toArray( new Category[ 0 ] ));
}
+
}
1.2 +2 -2
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/logging/LoggingService.java
Index: LoggingService.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/logging/LoggingService.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LoggingService.java 29 Nov 2002 13:04:55 -0000 1.1
+++ LoggingService.java 3 Dec 2002 06:57:26 -0000 1.2
@@ -68,6 +68,6 @@
* @param appliance the appliace
* @param object the object to which logging channels will be assigned
*/
- void enableLogging( Appliance appliance, Object object, Logger logger )
+ void enableLogging( Appliance appliance, Object object )
throws Exception;
}
1.6 +8 -14
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/AbstractLifestyleHandler.java
Index: AbstractLifestyleHandler.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/AbstractLifestyleHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AbstractLifestyleHandler.java 30 Nov 2002 18:12:06 -0000 1.5
+++ AbstractLifestyleHandler.java 3 Dec 2002 06:57:26 -0000 1.6
@@ -98,11 +98,6 @@
private ClassLoader m_classloader;
/**
- * The logging channel to assign to instance creeated by this handler.
- */
- private Logger m_logger;
-
- /**
* The deplyment service to handle lifecycle processing of
* component implementations established by this handler.
*/
@@ -133,7 +128,7 @@
* <td>key</td><td>type</td><td>description</td>
* </tr>
* <tr>
- * <td>assembly:appliance.target</td>
+ * <td>urn:assembly:appliance.target</td>
* <td>{@link org.apache.avalon.appliance.Appliance}</td>
* <td>The appliance that this manager is managing.</td>
* </tr>
@@ -143,12 +138,11 @@
public void contextualize( Context context ) throws ContextException
{
super.contextualize( context );
- m_logger = (Logger) context.get( "avalon:logger" );
- m_classloader = (ClassLoader) context.get( "avalon:classloader" );
- m_appliance = (Appliance) context.get( "assembly:appliance.target" );
+ m_classloader = (ClassLoader) context.get( "urn:avalon:classloader" );
+ m_appliance = (Appliance) context.get( "urn:assembly:appliance.target" );
try
{
- m_context = (Context) context.get( "assembly:deployment.context" );
+ m_context = (Context) context.get( "urn:assembly:deployment.context" );
}
catch( ContextException ce )
{
@@ -167,7 +161,7 @@
* <td>key</td><td>type</td><td>description</td>
* </tr>
* <tr>
- * <td>assembly:lifestyle.deployment</td>
+ * <td>urn:assembly:lifestyle.deployment</td>
* <td>{@link org.apache.avalon.assembly.lifecycle.DeploymentService}</td>
* <td>The deplyment service that will handle deployment and decommissioning
* of instances derived from the appliance.</td>
@@ -177,7 +171,7 @@
*/
public void service( ServiceManager manager ) throws ServiceException
{
- m_deployment = (DeploymentService) manager.lookup(
"assembly:deployment-service" );
+ m_deployment = (DeploymentService) manager.lookup(
"urn:assembly:deployment-service" );
}
//==============================================================
@@ -270,7 +264,7 @@
{
try
{
- return m_deployment.deploy( m_appliance, m_classloader, m_logger,
m_context );
+ return m_deployment.deploy( m_appliance, m_classloader, m_context );
}
catch( Throwable e )
{
1.3 +7 -18
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/DefaultLifestyleService.java
Index: DefaultLifestyleService.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/DefaultLifestyleService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DefaultLifestyleService.java 30 Nov 2002 21:46:39 -0000 1.2
+++ DefaultLifestyleService.java 3 Dec 2002 06:57:26 -0000 1.3
@@ -177,7 +177,7 @@
throw new IllegalStateException("manager");
}
- String key = "assembly:deployment-service";
+ String key = "urn:assembly:deployment-service";
if( !m_manager.hasService( key ) )
{
DefaultServiceManager manager = new DefaultServiceManager( m_manager );
@@ -197,12 +197,10 @@
* Creation of a new lifestyle handler.
* @param appliance the appliance that the handler will manage
* @param classloader the classloader to assign to the handler
- * @param logger the logging channel to be assigned to new
- * instances of the appliance
* @param context a deployment context
*/
public LifestyleHandler createHandler(
- Appliance appliance, ClassLoader classloader, Logger system, Logger logger,
Context deploymentContext )
+ Appliance appliance, ClassLoader classloader, Context deploymentContext )
{
if( !m_initialized )
{
@@ -217,14 +215,6 @@
{
throw new NullPointerException("classloader");
}
- if( system == null )
- {
- throw new NullPointerException("system");
- }
- if( logger == null )
- {
- throw new NullPointerException("logger");
- }
//
// create the deployment context to be supplied to the handler
@@ -233,11 +223,10 @@
DefaultContext context = new DefaultContext( m_context );
if( deploymentContext != null )
{
- context.put( "assembly:deployment.context", deploymentContext );
+ context.put( "urn:assembly:deployment.context", deploymentContext );
}
- context.put( "assembly:appliance.target", appliance );
- context.put( "avalon:classloader", classloader );
- context.put( "avalon:logger", logger );
+ context.put( "urn:assembly:appliance.target", appliance );
+ context.put( "urn:avalon:classloader", classloader );
context.makeReadOnly();
//
@@ -247,7 +236,7 @@
final String policy =
appliance.getProfile().getType().getInfo().getAttribute(
- "avalon:lifestyle", "singleton" );
+ "urn:avalon:lifestyle", "singleton" );
if( policy.equalsIgnoreCase( "singleton" ) )
{
1.3 +2 -4
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/LifestyleService.java
Index: LifestyleService.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/LifestyleService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LifestyleService.java 30 Nov 2002 21:46:39 -0000 1.2
+++ LifestyleService.java 3 Dec 2002 06:57:26 -0000 1.3
@@ -68,10 +68,8 @@
* @param appliance the appliance that the handler will manage
* @param classloader the classloader to assign to the handler
* @param system the logging channel for the handler
- * @param logger the logging channel to be assigned to new
- * instances of the appliance
* @param context a deployment context
*/
LifestyleHandler createHandler(
- Appliance appliance, ClassLoader classloader, Logger system, Logger logger,
Context context );
+ Appliance appliance, ClassLoader classloader, Context context );
}
1.3 +4 -4
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/PooledLifestyleHandler.java
Index: PooledLifestyleHandler.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/PooledLifestyleHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PooledLifestyleHandler.java 29 Nov 2002 17:37:30 -0000 1.2
+++ PooledLifestyleHandler.java 3 Dec 2002 06:57:26 -0000 1.3
@@ -153,7 +153,7 @@
public void contextualize( Context context ) throws ContextException
{
super.contextualize( context );
- m_poolManager = (PoolManager) context.get( "assembly:pool-manager" );
+ m_poolManager = (PoolManager) context.get( "urn:assembly:pool-manager" );
m_context = context;
}
@@ -170,8 +170,8 @@
{
super.initialize();
m_pool = m_poolManager.getManagedPool( this, m_size );
- m_appliance = (Appliance) m_context.get( "assembly:appliance.target" );
- ClassLoader classloader = (ClassLoader) m_context.get( "avalon:classloader"
);
+ m_appliance = (Appliance) m_context.get( "urn:assembly:appliance.target" );
+ ClassLoader classloader = (ClassLoader) m_context.get(
"urn:avalon:classloader" );
m_class = classloader.loadClass(
m_appliance.getProfile().getType().getInfo().getClassname() );
}
1.2 +101 -44
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/logging/DefaultLoggingManager.java
Index: DefaultLoggingManager.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/logging/DefaultLoggingManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultLoggingManager.java 29 Nov 2002 13:22:20 -0000 1.1
+++ DefaultLoggingManager.java 3 Dec 2002 06:57:26 -0000 1.2
@@ -61,6 +61,10 @@
import org.apache.log.output.io.FileTarget;
import org.apache.log.output.io.StreamTarget;
+import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.logger.AvalonFormatter;
import org.apache.avalon.framework.logger.LogKitLogger;
import org.apache.avalon.excalibur.i18n.ResourceManager;
@@ -76,8 +80,11 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development
Team</a>
*/
public class DefaultLoggingManager
- implements LoggingManager
+ implements LoggingManager, Initializable, Contextualizable
{
+ //===============================================================
+ // static
+ //===============================================================
/**
* The default logging priority value.
@@ -95,71 +102,94 @@
private static final String DEFAULT_FORMAT =
"[%7.7{priority}] (%{category}): %{message}\\n%{throwable}";
+ //===============================================================
+ // state
+ //===============================================================
+
/**
* Base directory of file targets.
*/
private File m_baseDirectory;
/**
- * log hierarchy.
+ * The list of logging targets.
+ */
+ private LoggingDescriptor m_descriptor;
+
+ /**
+ * The implementation log hierarchy.
*/
private Hierarchy m_logHierarchy;
/**
- * default logger
+ * The efault logging channel.
*/
private org.apache.avalon.framework.logger.Logger m_logger;
/**
- * default logger target
+ * The default fallback log target.
*/
- private StreamTarget m_stream;
+ private StreamTarget m_stream =
+ new StreamTarget( System.out, new AvalonFormatter( DEFAULT_FORMAT ) );
+ /**
+ * The list of logging targets.
+ */
private final HashMap m_targets = new HashMap();
- private DefaultLoggingManager m_parent;
-
- private String m_category;
+ //==============================================================
+ // Contextualizable
+ //==============================================================
- //===============================================================
- // constructor
- //===============================================================
-
- /**
- * Creation of a new LoggerManager.
- * @param base the base directory
- * @exception Exception is an error occurs
- */
- public DefaultLoggingManager( File base ) throws Exception
+ /**
+ * <p>Application of a runtime context to the lifestyle service.
+ * The context value will be passed directly to lifestyle handlers
+ * established by this service.
+ * @param context the runtime context
+ */
+ public void contextualize( Context context ) throws ContextException
{
- this(
- new LoggingDescriptor(
+ m_baseDirectory = (File) context.get( "urn:avalon:home" );
+
+ try
+ {
+ m_descriptor = (LoggingDescriptor) context.get(
"urn:assembly:logging.descriptor" );
+ }
+ catch( ContextException ce )
+ {
+ m_descriptor =
+ new LoggingDescriptor(
"", null, null, new TargetDescriptor[ 0 ],
- new Category( "logging", "DEBUG", null ) ), base );
+ new Category( "logging", "DEBUG", null ) );
+ }
}
+ //===============================================================
+ // Initilizable
+ //===============================================================
+
/**
- * Creation of a new LoggerManager.
- * @param descriptor the logging system description
- * @param base the base directory
- * @exception Exception is an error occurs
+ * Logging manager initialization.
+ * @exception Exception is an initializate stage error occurs
*/
- public DefaultLoggingManager( final LoggingDescriptor descriptor, File base )
throws Exception
+ public void initialize() throws Exception
{
+ if( m_baseDirectory == null )
+ {
+ throw new IllegalStateException( "context" );
+ }
//
// setup the hierarchy, default logging target, and default priority
//
- m_stream = new StreamTarget( System.out, new AvalonFormatter(
DEFAULT_FORMAT ) );
- m_baseDirectory = base;
m_logHierarchy = new Hierarchy();
getHierarchy().setDefaultLogTarget( m_stream );
m_targets.put( DEFAULT_TARGET, m_stream );
- if( descriptor.getPriority() != null )
+ if( m_descriptor.getPriority() != null )
{
getHierarchy().setDefaultPriority(
- Priority.getPriorityForName( descriptor.getPriority() )
+ Priority.getPriorityForName( m_descriptor.getPriority() )
);
}
else
@@ -173,16 +203,16 @@
// setup the bootstrap logging category
//
- Category bootstrap = descriptor.getBootstrapCategory();
+ Category bootstrap = m_descriptor.getBootstrapCategory();
+
m_logger = new LogKitLogger(
- addCategory(
- bootstrap.getName(), bootstrap.getPriority(),
bootstrap.getTarget(), false ) );
+ addCategory( bootstrap.getName(), bootstrap.getPriority(),
bootstrap.getTarget(), false ) );
//
// build targets based on the information contained in the descriptor
//
- TargetDescriptor[] targets = descriptor.getTargetDescriptors();
+ TargetDescriptor[] targets = m_descriptor.getTargetDescriptors();
for( int i = 0; i < targets.length; i++ )
{
addTarget( targets[ i ] );
@@ -192,7 +222,7 @@
// set the default target
//
- String name = descriptor.getTarget();
+ String name = m_descriptor.getTarget();
if( name != null )
{
LogTarget target = (LogTarget)m_targets.get( name );
@@ -203,7 +233,8 @@
else
{
throw new LoggerException(
- "Supplied default logging target: '" + name + "' does not
exist." );
+ "Supplied default logging target: '"
+ + name + "' does not exist." );
}
}
}
@@ -244,6 +275,7 @@
}
}
+
/**
* Create a logging channel configured with the supplied category path,
* priority and target.
@@ -298,7 +330,7 @@
}
else
{
- String cat;
+ String cat = filter( category );
if( category.indexOf( "/" ) > -1 )
{
cat = category.replace( '/', '.' );
@@ -311,7 +343,14 @@
{
cat = category;
}
- return new LogKitLogger( getHierarchy().getLoggerFor( cat ) );
+ try
+ {
+ return new LogKitLogger( getHierarchy().getLoggerFor( cat ) );
+ }
+ catch( Throwable e )
+ {
+ throw new RuntimeException( "Bad category: " + category + " or
trans: " + cat );
+ }
}
}
@@ -348,7 +387,18 @@
private Logger addCategory( String path, String priority, String target,
boolean notify )
{
- final Logger logger = getHierarchy().getLoggerFor( path );
+ final String name = filter( path );
+ final Logger logger;
+
+ try
+ {
+ logger = getHierarchy().getLoggerFor( name );
+ }
+ catch( Throwable e )
+ {
+ throw new RuntimeException( "Bad category: " + path + " or trans: " +
name );
+ }
+
if( priority != null )
{
final Priority priorityValue = Priority.getPriorityForName( priority );
@@ -375,13 +425,24 @@
if( notify && getLogger().isInfoEnabled() )
{
final String message =
- REZ.getString( "category-create", path, target,
logger.getPriority() );
+ REZ.getString( "category-create", name, target,
logger.getPriority() );
getLogger().info( message );
}
return logger;
}
+ private String filter( String name )
+ {
+ String path = name.replace('/','.');
+ if( path.startsWith(".") )
+ {
+ path = path.substring( 1 );
+ return filter( path );
+ }
+ return path;
+ }
+
private void addTarget( TargetDescriptor target ) throws Exception
{
final String name = target.getName();
@@ -422,10 +483,6 @@
private Hierarchy getHierarchy()
{
- if( m_parent != null )
- {
- return m_parent.getHierarchy();
- }
return m_logHierarchy;
}
1.1
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/logging/Resources.properties
Index: Resources.properties
===================================================================
builder.redundent-role.notice=Warning: Type for class {0} redundently specifies role
name "{1}" in dependency when it is identical to the name of service. It is recomended
that the <role/> section be elided.
builder.creating-info.notice=Creating a Type for class "{0}".
builder.created-info.notice=Constructed Type object for class {0}. Type contains {1}
services, {2} dependencies, {3} context entrys and {4} loggers.
builder.bad-toplevel-element.error=Error the component implemented by "{0}" has an
invalid element at top level of component info descriptor. Expected: "component-info".
Actual: "{1}"
builder.missing-info.error=Unable to locate resource from which to load info for
component implemented by class "{0}".
builder.missing-xml-creator.error=Unable to create XMLTypeCreator, usually due to
not having XML classes on Classpath. Thus unable to lookup XML descriptor for
component type "{0}".
builder.creating-profile.notice=Creating Profiles for class "{0}".
target.nocreate=Error creating LogTarget named "{0}" for file {0}. (Reason: {2}).
unknown-priority=Unknown priority "{0}" for Logger named "{1}".
category-create=Creating a log category named "{0}" that writes to "{1}" target at
priority "{2}".
missing.extension=Unable to locate an extension that is required by application.\n
Extension Name: {0}\n Specification Vendor: {1}\n Specification Version: {2}\n
Implementation Vendor: {3}\n Implementation Vendor-Id: {4}\n Implementation Version:
{5}\n Implementation URL: {6}
unsatisfied.extensions=Missing {0} extensions and thus can not build ClassLoader for
application.
bad-classpath-entry=There is a bad entry ("{0}") on classpath that made it
impossible to load a manifest.
available-extensions=Available extensions: {0}
required-extensions=The list of required extensions for application includes: {0}
optional-packages-added=The list of "Optional Packages" added to the application
include: {0}
classpath-entries=The list of classpath entrys for the application include: {0}
1.4 +5 -5
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/DefaultProfileManager.java
Index: DefaultProfileManager.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/DefaultProfileManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultProfileManager.java 29 Nov 2002 13:04:56 -0000 1.3
+++ DefaultProfileManager.java 3 Dec 2002 06:57:26 -0000 1.4
@@ -137,12 +137,12 @@
* <td>key</td><td>type</td><td>default</td>
* </tr>
* <tr>
- * <td>avalon:type.classloader</td>
+ * <td>urn:avalon:type.classloader</td>
* <td>java.lang.ClassLoader</td>
* <td>The context classloader will be used by default if not value is
supplied.</td>
* </tr>
* <tr>
- * <td>assembly:parent</td>
+ * <td>urn:assembly:parent</td>
* <td>{@link org.apache.avalon.assembly.profile.ProfileManager}</td>
* <td>In no value suppled, this manager will be considered as root.</td>
* </tr>
@@ -153,7 +153,7 @@
{
try
{
- m_parent = (ProfileManager) context.get( "assembly:parent" );
+ m_parent = (ProfileManager) context.get( "urn:assembly:parent" );
}
catch( ContextException e )
{
@@ -162,7 +162,7 @@
try
{
- m_classloader = (ClassLoader) context.get( "assembly:classloader" );
+ m_classloader = (ClassLoader) context.get( "urn:assembly:classloader" );
}
catch( ContextException e )
{
1.2 +2 -2
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/ProfileSelector.java
Index: ProfileSelector.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/profile/ProfileSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProfileSelector.java 24 Nov 2002 12:50:45 -0000 1.1
+++ ProfileSelector.java 3 Dec 2002 06:57:26 -0000 1.2
@@ -60,7 +60,7 @@
* candidate service providers in an autom assembly process. A selector my be
* declared via inclusion a implemetation class nameed
<code><service-type>Selector</code>.
* Alternatively, a component author may declare a selection class explicitly via a
- * service dependency attribute with the attribute name of
<code>avalon:service.selector</code>.
+ * service dependency attribute with the attribute name of
<code>urn:avalon:service.selector</code>.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development
Team</a>
* @version $Revision$ $Date$
1.2 +5 -5
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/service/DefaultServiceManager.java
Index: DefaultServiceManager.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/service/DefaultServiceManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultServiceManager.java 24 Nov 2002 12:50:45 -0000 1.1
+++ DefaultServiceManager.java 3 Dec 2002 06:57:26 -0000 1.2
@@ -118,12 +118,12 @@
* <td>key</td><td>type</td><td>default</td>
* </tr>
* <tr>
- * <td>avalon:type.classloader</td>
+ * <td>urn:avalon:type.classloader</td>
* <td>java.lang.ClassLoader</td>
* <td>The context classloader will be used by default if not value is
supplied.</td>
* </tr>
* <tr>
- * <td>assembly:parent</td>
+ * <td>urn:assembly:parent</td>
* <td>org.apache.avalon.assembly.service.ServiceManager</td>
* <td>In no value suppled, this service manager will be considered as a
root manager.</td>
* </tr>
@@ -139,7 +139,7 @@
try
{
- m_parent = (ServiceManager) context.get( "assembly:parent" );
+ m_parent = (ServiceManager) context.get( "urn:assembly:parent" );
}
catch( ContextException e )
{
@@ -148,7 +148,7 @@
try
{
- m_classloader = (ClassLoader) context.get( "assembly:classloader" );
+ m_classloader = (ClassLoader) context.get( "urn:assembly:classloader" );
}
catch( ContextException e )
{
1.2 +7 -7
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/type/DefaultTypeManager.java
Index: DefaultTypeManager.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/type/DefaultTypeManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultTypeManager.java 24 Nov 2002 12:50:46 -0000 1.1
+++ DefaultTypeManager.java 3 Dec 2002 06:57:26 -0000 1.2
@@ -128,12 +128,12 @@
* <td>key</td><td>type</td><td>default</td>
* </tr>
* <tr>
- * <td>avalon:type.classloader</td>
+ * <td>urn:avalon:type.classloader</td>
* <td>java.lang.ClassLoader</td>
* <td>The context classloader will be used by default if not value is
supplied.</td>
* </tr>
* <tr>
- * <td>assembly:parent</td>
+ * <td>urn:assembly:parent</td>
* <td>{@link org.apache.avalon.assembly.type.TypeManager}</td>
* <td>In no value suppled, this type manager will be considered as a root
manager.</td>
* </tr>
@@ -144,7 +144,7 @@
{
try
{
- m_parent = (TypeManager) context.get( "assembly:parent" );
+ m_parent = (TypeManager) context.get( "urn:assembly:parent" );
}
catch( ContextException e )
{
@@ -153,7 +153,7 @@
try
{
- m_classloader = (ClassLoader) context.get( "assembly:classloader" );
+ m_classloader = (ClassLoader) context.get( "urn:assembly:classloader" );
}
catch( ContextException e )
{
@@ -467,8 +467,8 @@
{
ServiceDescriptor service = services[ i ];
if( ( service.getAttribute(
- "avalon:service.protocol", "native" ).equals( "native" ) )
- && ( service.getAttribute( "avalon:service.accessor", null ) == null
) )
+ "urn:avalon:service.protocol", "native" ).equals( "native" ) )
+ && ( service.getAttribute( "urn:avalon:service.accessor", null ) ==
null ) )
{
list.add( getServiceClass( services[ i ] ) );
}
1.3 +18 -3
avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/TestCaseBase.java
Index: TestCaseBase.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/TestCaseBase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestCaseBase.java 29 Nov 2002 13:04:56 -0000 1.2
+++ TestCaseBase.java 3 Dec 2002 06:57:27 -0000 1.3
@@ -14,7 +14,10 @@
import org.apache.avalon.assembly.logging.TargetDescriptor;
import org.apache.avalon.assembly.logging.LoggingDescriptor;
import org.apache.avalon.assembly.logging.DefaultLoggingManager;
-import org.apache.avalon.framework.logger.*;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.meta.model.Category;
/**
@@ -36,11 +39,23 @@
protected void setUp() throws Exception
{
m_loader = Thread.currentThread().getContextClassLoader();
+
final File base = new File( System.getProperty( "user.dir" ) );
LoggingDescriptor logging =
new LoggingDescriptor(
- "", "DEBUG", null, new TargetDescriptor[ 0 ], new Category( "logging"
) );
- m_logManager = new DefaultLoggingManager( logging, base );
+ "", "DEBUG", null,
+ new TargetDescriptor[ 0 ],
+ new Category( "logging" ) );
+
+ DefaultContext context = new DefaultContext();
+ context.put( "urn:avalon:home", base );
+ context.put( "urn:assembly:logging.descriptor", logging );
+
+ DefaultLoggingManager manager = new DefaultLoggingManager();
+ manager.contextualize( context );
+ manager.initialize();
+
+ m_logManager = manager;
}
protected Logger getLogger()
1.3 +12 -5
avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/engine/EngineTestCase.java
Index: EngineTestCase.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/engine/EngineTestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- EngineTestCase.java 30 Nov 2002 14:47:51 -0000 1.2
+++ EngineTestCase.java 3 Dec 2002 06:57:27 -0000 1.3
@@ -11,13 +11,15 @@
import java.io.File;
import junit.framework.TestCase;
import org.apache.avalon.framework.Version;
-import org.apache.avalon.framework.context.*;
-import org.apache.avalon.framework.logger.*;
-import org.apache.avalon.assembly.service.*;
-import org.apache.avalon.assembly.type.*;
+import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.avalon.framework.service.DefaultServiceManager;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.assembly.type.TypeManager;
+import org.apache.avalon.assembly.type.DefaultTypeManager;
import org.apache.avalon.meta.info.*;
import org.apache.avalon.assembly.TestCaseBase;
-import org.apache.avalon.assembly.engine.*;
+import org.apache.avalon.assembly.engine.Engine;
+import org.apache.avalon.assembly.engine.DefaultEngine;
import org.apache.avalon.assembly.appliance.*;
import org.apache.avalon.assembly.util.ExceptionHelper;
@@ -46,6 +48,11 @@
super.setUp();
DefaultEngine engine = new DefaultEngine();
engine.enableLogging( getLogger() );
+ DefaultServiceManager manager = new DefaultServiceManager();
+ manager.put( "urn:assembly:logging.manager", m_logManager );
+ manager.makeReadOnly();
+ engine.service( manager );
+ engine.contextualize( new DefaultContext() );
engine.initialize();
m_engine = engine;
}
1.5 +2 -2
avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/profile/ProfileManagerTestCase.java
Index: ProfileManagerTestCase.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/profile/ProfileManagerTestCase.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ProfileManagerTestCase.java 26 Nov 2002 18:04:22 -0000 1.4
+++ ProfileManagerTestCase.java 3 Dec 2002 06:57:27 -0000 1.5
@@ -199,7 +199,7 @@
DefaultTypeManager manager = new DefaultTypeManager();
manager.enableLogging( getLogger().getChildLogger("types") );
DefaultContext context = new DefaultContext();
- context.put( "assembly:classloader", m_loader );
+ context.put( "urn:assembly:classloader", m_loader );
context.makeReadOnly();
manager.contextualize( context );
manager.initialize();
@@ -211,7 +211,7 @@
DefaultProfileManager manager = new DefaultProfileManager();
manager.enableLogging( getLogger().getChildLogger("profiles") );
DefaultContext context = new DefaultContext();
- context.put( "assembly:classloader", m_loader );
+ context.put( "urn:assembly:classloader", m_loader );
context.makeReadOnly();
manager.contextualize( context );
manager.initialize();
1.2 +1 -1
avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/service/DefaultServiceManagerTestCase.java
Index: DefaultServiceManagerTestCase.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/service/DefaultServiceManagerTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultServiceManagerTestCase.java 24 Nov 2002 12:50:46 -0000 1.1
+++ DefaultServiceManagerTestCase.java 3 Dec 2002 06:57:27 -0000 1.2
@@ -44,7 +44,7 @@
DefaultServiceManager manager = new DefaultServiceManager();
manager.enableLogging( getLogger().getChildLogger("services") );
DefaultContext context = new DefaultContext();
- context.put( "assembly:classloader", m_loader );
+ context.put( "urn:assembly:classloader", m_loader );
context.makeReadOnly();
manager.contextualize( context );
manager.initialize();
1.2 +1 -1
avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/type/TypeManagerTestCase.java
Index: TypeManagerTestCase.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/assembly/type/TypeManagerTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TypeManagerTestCase.java 24 Nov 2002 12:50:46 -0000 1.1
+++ TypeManagerTestCase.java 3 Dec 2002 06:57:27 -0000 1.2
@@ -43,7 +43,7 @@
DefaultTypeManager manager = new DefaultTypeManager();
manager.enableLogging( getLogger().getChildLogger("types") );
DefaultContext context = new DefaultContext();
- context.put( "assembly:classloader", m_loader );
+ context.put( "urn:assembly:classloader", m_loader );
context.makeReadOnly();
manager.contextualize( context );
manager.initialize();
1.2 +1 -1
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/BasicComponent.xprofile
Index: BasicComponent.xprofile
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/BasicComponent.xprofile,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BasicComponent.xprofile 24 Nov 2002 12:50:46 -0000 1.1
+++ BasicComponent.xprofile 3 Dec 2002 06:57:27 -0000 1.2
@@ -21,7 +21,7 @@
<component name="basic">
<context class="org.apache.avalon.playground.BasicContext">
- <import key="home" name="avalon:home"/>
+ <import key="home" name="urn:avalon:home"/>
<entry key="location">Paris</entry>
</context>
</component>
1.3 +2 -2
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/BasicService.xservice
Index: BasicService.xservice
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/BasicService.xservice,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BasicService.xservice 29 Nov 2002 16:12:02 -0000 1.2
+++ BasicService.xservice 3 Dec 2002 06:57:27 -0000 1.3
@@ -16,8 +16,8 @@
<service>
<version>1.1</version>
<attributes>
- <attribute key="avalon:service.name" value="basic"/>
- <attribute key="avalon:service.description">
+ <attribute key="urn:avalon:service.name" value="basic"/>
+ <attribute key="urn:avalon:service.description">
A demonstration service used within the scope of the
Avalon playground package for educational and unit
testing purposes.
1.2 +1 -1
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/DemoManager.xinfo
Index: DemoManager.xinfo
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/DemoManager.xinfo,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DemoManager.xinfo 24 Nov 2002 12:50:46 -0000 1.1
+++ DemoManager.xinfo 3 Dec 2002 06:57:27 -0000 1.2
@@ -23,7 +23,7 @@
<info>
<name>demonstratable</name>
<attributes>
- <attribute key="avalon:lifestyle" value="thread"/>
+ <attribute key="urn:avalon:lifestyle" value="thread"/>
</attributes>
</info>
1.2 +1 -1
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/SimpleComponent.xinfo
Index: SimpleComponent.xinfo
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/SimpleComponent.xinfo,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SimpleComponent.xinfo 24 Nov 2002 12:50:46 -0000 1.1
+++ SimpleComponent.xinfo 3 Dec 2002 06:57:27 -0000 1.2
@@ -22,7 +22,7 @@
<services>
<service>
<attributes>
- <attribute key="avalon:service.servlet"
+ <attribute key="urn:avalon:service.servlet"
value="simple.jsp"/>
</attributes>
<reference type="org.apache.avalon.playground.SimpleService"/>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>