donaldp 2002/11/07 16:48:31
Modified: fortress/src/java/org/apache/excalibur/fortress
DefaultContainerManager.java
Log:
Reworked to use ContainerUtil more gratuitously and to reduce the complexit of the
code. Remove the validator as it would always pass anyways.
Revision Changes Path
1.30 +70 -117
jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/DefaultContainerManager.java
Index: DefaultContainerManager.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/DefaultContainerManager.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- DefaultContainerManager.java 7 Nov 2002 06:56:59 -0000 1.29
+++ DefaultContainerManager.java 8 Nov 2002 00:48:30 -0000 1.30
@@ -50,24 +50,15 @@
package org.apache.excalibur.fortress;
import org.apache.avalon.excalibur.logger.LoggerManager;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.container.ContainerUtil;
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.ConsoleLogger;
-import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.excalibur.fortress.util.ComponentStateValidator;
import org.apache.excalibur.fortress.util.ContextManager;
/**
@@ -93,26 +84,27 @@
private final ContextManager m_contextManager;
private Logger m_logger;
private Object m_containerInstance;
- private ComponentStateValidator m_validator;
- public DefaultContainerManager( ContextManager contextManager )
+ public DefaultContainerManager( final ContextManager contextManager )
{
this( contextManager, null );
}
- public DefaultContainerManager( ContextManager contextManager, Logger logger )
+ public DefaultContainerManager( final ContextManager contextManager,
+ final Logger logger )
{
m_contextManager = contextManager;
m_logger = ( logger == null ?
createLoggerFromContext( m_contextManager.getContainerManagerContext()
) : logger );
}
- public DefaultContainerManager( Context initParameters )
+ public DefaultContainerManager( final Context initParameters )
{
this( initParameters, null );
}
- public DefaultContainerManager( Context initParameters, Logger logger )
+ public DefaultContainerManager( final Context initParameters,
+ final Logger logger )
{
this( getInitializedContextManager( initParameters, logger ), logger );
}
@@ -122,7 +114,7 @@
* This is necessary so that these operations can complete before the
* super constructor has been executed.
*/
- private static ContextManager getInitializedContextManager( Context
initParameters,
+ private static ContextManager getInitializedContextManager( final Context
initParameters,
Logger logger )
{
// The context manager will use an internal coonsole logger if logger is
null.
@@ -155,7 +147,7 @@
}
catch( ContextException ce )
{
- Logger consoleLogger = new ConsoleLogger();
+ final Logger consoleLogger = new ConsoleLogger();
consoleLogger.error( "ContainerManager could not obtain logger manager
from context "
+ "(this should not happen). Using console
instead." );
return consoleLogger;
@@ -174,103 +166,75 @@
{
if( null == m_containerInstance )
{
- Object instance = null;
-
- try
- {
- instance = ( (Class)m_contextManager.getContainerManagerContext().
- get( CONTAINER_CLASS ) ).newInstance();
- }
- catch( Exception e )
- {
- instance = null;
+ createContainer();
+ }
+ }
- throw new InitializationException(
- "Cannot set up container. Unable to create container class", e
);
- }
+ private void createContainer()
+ throws InitializationException
+ {
+ final Context managerContext =
+ m_contextManager.getContainerManagerContext();
+ Object instance = null;
+ try
+ {
+ final Class clazz = (Class)managerContext.get( CONTAINER_CLASS );
+ instance = clazz.newInstance();
+ }
+ catch( Exception e )
+ {
+ final String message =
+ "Cannot set up container. Unable to create container class";
+ throw new InitializationException( message, e );
+ }
- m_validator = new ComponentStateValidator( instance );
+ try
+ {
+ ContainerUtil.enableLogging( instance, m_logger );
+ ContainerUtil.contextualize( instance, managerContext );
- try
+ if( instance instanceof Composable )
{
- if( instance instanceof LogEnabled )
- {
- m_validator.checkLogEnabled();
- ContainerUtil.enableLogging( instance, m_logger );
- }
-
- final Context managerContext =
- m_contextManager.getContainerManagerContext();
- if( instance instanceof Contextualizable )
- {
- m_validator.checkContextualized();
- ContainerUtil.contextualize( instance, managerContext );
- }
-
- if( instance instanceof Composable )
- {
- throw new InitializationException( "Composable containers are
not supported" );
- }
-
- if( instance instanceof Serviceable )
- {
- m_validator.checkServiced();
- final ServiceManager smanager = getServiceManager(
managerContext );
- ContainerUtil.service( instance, smanager );
- }
-
- if( instance instanceof Configurable )
- {
- m_validator.checkConfigured();
- final Configuration config =
- (Configuration)managerContext.get( CONFIGURATION );
- ContainerUtil.configure( instance, config );
- }
+ throw new InitializationException( "Composable containers are not
supported" );
+ }
- if( instance instanceof Parameterizable )
- {
- m_validator.checkParameterized();
- final Parameters parameters = (Parameters) managerContext.get(
PARAMETERS );
- ContainerUtil.parameterize( instance, parameters );
+ final ServiceManager smanager =
+ (ServiceManager)getContextEntry( managerContext, SERVICE_MANAGER );
+ ContainerUtil.service( instance, smanager );
- }
+ final Configuration config =
+ (Configuration)getContextEntry( managerContext, CONFIGURATION );
+ ContainerUtil.configure( instance, config );
- if( instance instanceof Initializable )
- {
- m_validator.checkInitialized();
- ContainerUtil.initialize( instance );
- }
-
- if( instance instanceof Startable )
- {
- m_validator.checkStarted();
- ContainerUtil.start( instance );
- }
- }
- catch( Exception e )
- {
- instance = null;
+ final Parameters parameters =
+ (Parameters)getContextEntry( managerContext, PARAMETERS );
+ ContainerUtil.parameterize( instance, parameters );
- final String message =
- "Cannot set up container. Startup lifecycle failure";
- throw new InitializationException( message, e );
- }
+ ContainerUtil.initialize( instance );
+ ContainerUtil.start( instance );
m_containerInstance = instance;
}
+ catch( Exception e )
+ {
+ final String message =
+ "Cannot set up container. Startup lifecycle failure";
+ throw new InitializationException( message, e );
+ }
}
/**
- * Helper method to get an SM out of the given context, if existing
+ * Retrieve an entry from context if it exists, else return null.
*
- * @param context a <code>Context</code> instance
- * @return a <code>ServiceManager</code> instance or null if none
+ * @param context the context
+ * @param key the key
+ * @return the entry
*/
- private ServiceManager getServiceManager( Context context )
+ private Object getContextEntry( final Context context, final String key )
{
try
{
- return (ServiceManager)context.get( SERVICE_MANAGER );
+ return context.get( key );
}
catch( ContextException e )
{
@@ -282,30 +246,20 @@
{
if( null != m_containerInstance )
{
- if( m_containerInstance instanceof Startable )
+ try
{
- try
- {
- m_validator.checkStopped();
- ( (Startable)m_containerInstance ).stop();
- }
- catch( Exception e )
- {
- if( getLogger().isWarnEnabled() )
- {
- getLogger().warn( "Caught an exception when stopping the
Container, "
- + "continuing with shutdown", e );
- }
- }
+ ContainerUtil.stop( m_containerInstance );
}
-
- if( m_containerInstance instanceof Disposable )
+ catch( Exception e )
{
- m_validator.checkDisposed();
- ( (Disposable)m_containerInstance ).dispose();
+ if( getLogger().isWarnEnabled() )
+ {
+ getLogger().warn( "Caught an exception when stopping the
Container, "
+ + "continuing with shutdown", e );
+ }
}
- m_validator = null;
+ ContainerUtil.dispose( m_containerInstance );
m_containerInstance = null;
}
}
@@ -332,5 +286,4 @@
{
return m_logger;
}
-}
-
+}
\ No newline at end of file
--
To unsubscribe, e-mail: <mailto:avalon-cvs-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@;jakarta.apache.org>