mcconnell 2002/08/12 22:12:29 Modified: assembly/src/java/org/apache/excalibur/merlin/assembly ContainerManager.java assembly/src/java/org/apache/excalibur/merlin/kernel DefaultKernel.java Log: Put in place establishment of a default lifestyle manager at kerenl level that can be overrided at root container level - also eliminated redundant creation of stardard manager at container level (because a kernel level manager will be accessible accross the hierachy). Revision Changes Path 1.17 +3 -2 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ContainerManager.java Index: ContainerManager.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ContainerManager.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- ContainerManager.java 13 Aug 2002 04:45:56 -0000 1.16 +++ ContainerManager.java 13 Aug 2002 05:12:29 -0000 1.17 @@ -497,7 +497,8 @@ ContainerManager loader = new ContainerManager( this, name ); DefaultContext context = new DefaultContext( m_context ); context.put( TypeManager.CLASSPATH_DESCRIPTOR_KEY, classpath ); - context.put( LIFESTYLES_KEY, lifestyles ); + if( lifestyles != null ) + context.put( LIFESTYLES_KEY, lifestyles ); context.makeReadOnly(); if( this instanceof KernelManager ) 1.37 +39 -21 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/kernel/DefaultKernel.java Index: DefaultKernel.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/kernel/DefaultKernel.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- DefaultKernel.java 13 Aug 2002 03:57:56 -0000 1.36 +++ DefaultKernel.java 13 Aug 2002 05:12:29 -0000 1.37 @@ -92,6 +92,7 @@ import org.apache.excalibur.merlin.container.StateEvent; import org.apache.excalibur.merlin.container.ContainerFactory; import org.apache.excalibur.merlin.resource.LifestyleManager; +import org.apache.excalibur.merlin.resource.DefaultLifestyleManager; /** * Default kernel implementation. @@ -321,6 +322,19 @@ m_localLogger = m_logger.getChildLogger("kernel"); // + // Independently of any declare lifestyle manager, make sure + // the default lifestyle manager is declared at the kernel + // level. Customized managers may appear at the root container + // level and override the derault. If not custom mananager is + // defined, then system defaults will apply + // + + DefaultLifestyleManager dlm = new DefaultLifestyleManager(); + dlm.enableLogging( getLogger().getChildLogger("lifestyle") ); + dlm.configure( m_config.getChild("lifestyles") ); + dlm.initialize(); + + // // Create the kernel type manager. // Create a context object container the logging manager and the // categories to be applied relative to the manager's path, include @@ -338,6 +352,7 @@ ctx.put( KernelManager.LOGGING_KEY, m_logging ); ctx.put( ContainerManager.EXTENSIONS_DESCRIPTOR_KEY, extensions ); ctx.put( ContainerManager.CLASSPATH_DESCRIPTOR_KEY, classpath ); + ctx.put( ContainerManager.LIFESTYLES_KEY, dlm ); m_manager.contextualize( ctx ); m_manager.initialize(); @@ -345,29 +360,32 @@ getLogger().info("kernel established: " + name ); // - // Create the lifestyle manager. + // Create a custom container level lifestyle manager if declared. // - LifestyleManager lifestyles; - try - { - Configuration lifestyleConfig = m_config.getChild("lifestyles"); - String lifestyleClassname = lifestyleConfig.getAttribute( - "class","org.apache.excalibur.merlin.resource.DefaultLifestyleManager"); - Class clazz = m_manager.loadClass( lifestyleClassname ); - lifestyles = (LifestyleManager) clazz.newInstance(); - if( lifestyles instanceof LogEnabled ) - ((LogEnabled)lifestyles).enableLogging( - getLogger().getChildLogger("lifestyles") ); - if( lifestyles instanceof Configurable ) - ((Configurable)lifestyles).configure( lifestyleConfig ); - if( lifestyles instanceof Initializable ) - ((Initializable)lifestyles).initialize(); - } - catch( Throwable e ) + LifestyleManager lifestyles = null; + Configuration lifestyleConfig = m_config.getChild("lifestyles", false ); + if( lifestyleConfig != null ) { - final String error = "Lifestyle manager establishment failure."; - throw new KernelException( error, e ); + try + { + String lifestyleClassname = lifestyleConfig.getAttribute( + "class","org.apache.excalibur.merlin.resource.DefaultLifestyleManager"); + Class clazz = m_manager.loadClass( lifestyleClassname ); + lifestyles = (LifestyleManager) clazz.newInstance(); + if( lifestyles instanceof LogEnabled ) + ((LogEnabled)lifestyles).enableLogging( + getLogger().getChildLogger("lifestyles") ); + if( lifestyles instanceof Configurable ) + ((Configurable)lifestyles).configure( lifestyleConfig ); + if( lifestyles instanceof Initializable ) + ((Initializable)lifestyles).initialize(); + } + catch( Throwable e ) + { + final String error = "Lifestyle manager establishment failure."; + throw new KernelException( error, e ); + } } //
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>