mcconnell 2003/01/26 23:11:57 Modified: assembly/src/etc project.mf assembly/src/java/org/apache/avalon/assembly/appliance DefaultApplianceFactory.java assembly/src/java/org/apache/avalon/assembly/engine EngineClassLoader.java assembly/src/test/org/apache/avalon/assembly/engine EngineTestCase.java lifecycle/src/etc project.mf merlin default.properties merlin/src/etc demo.mf project.mf merlin/src/java Merlin.java merlin/src/java/org/apache/avalon/merlin/kernel/impl DefaultKernel.java merlin/src/test/config demo.xml meta default.properties meta/src/etc project.mf Log: Updating version infromation declared in manifests and adding implementation vendor id tag to manifest. Revision Changes Path 1.5 +12 -4 avalon-sandbox/assembly/src/etc/project.mf Index: project.mf =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/etc/project.mf,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- project.mf 25 Jan 2003 01:06:54 -0000 1.4 +++ project.mf 27 Jan 2003 07:11:56 -0000 1.5 @@ -3,22 +3,30 @@ Extension-Name: avalon-assembly Specification-Vendor: Apache Software Foundation Specification-Version: 1.0 -Implementation-Vendor: Apache Software Foundation +Implementation-Vendor-Id: ASF Implementation-Version: 1.0 Extension-List: framework meta lifecycle configuration i18n logger +framework-Implementation-Vendor-Id: Apache Software Foundation framework-Extension-Name: avalon-framework framework-Specification-Version: 1.0 framework-Implementation-Version: 4.1.3 +meta-Implementation-Vendor-Id: ASF meta-Extension-Name: avalon-meta meta-Specification-Version: 1.0 +meta-Implementation-Version: 1.0 +lifecycle-Implementation-Vendor-Id: ASF lifecycle-Extension-Name: avalon-lifecycle lifecycle-Specification-Version: 1.0 +lifecycle-Implementation-Version: 1.0 configuration-Extension-Name: excalibur-configuration +configuration-Implementation-Vendor-Id: ASF configuration-Specification-Version: 1.0 +configuration-Implementation-Version: 1.0 i18n-Extension-Name: excalibur-i18n i18n-Specification-Version: 1.0 +i18n-Implementation-Vendor-Id: ASF +i18n-Implementation-Version: 1.0 logger-Extension-Name: excalibur-logger +logger-Implementation-Vendor-Id: ASF logger-Specification-Version: 1.0 - -Name: Avalon-Block -Block-Package: org.apache.avalon.assembly +logger-Implementation-Version: 1.0 1.6 +11 -7 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceFactory.java Index: DefaultApplianceFactory.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DefaultApplianceFactory.java 15 Jan 2003 09:09:23 -0000 1.5 +++ DefaultApplianceFactory.java 27 Jan 2003 07:11:56 -0000 1.6 @@ -211,11 +211,13 @@ appliance.enableLogging( logger ); + try { + PoolManager pool = (PoolManager) system.get( "urn:assembly:threads.manager" ); DefaultLocator locator = new DefaultLocator( context ); locator.put( "urn:assembly:engine", engine ); - locator.put( "urn:assembly:lifestyle.service", createLifestyleService( engine ) ); + locator.put( "urn:assembly:lifestyle.service", createLifestyleService( engine, pool ) ); locator.put( "urn:assembly:appliance.context", context ); locator.put( "urn:assembly:appliance.system", system ); locator.makeReadOnly(); @@ -261,16 +263,17 @@ /** * Utility to create the default lifestyle service. - * @param manager a service manager - * @return the bootstrap lifestyle service + * @param engine the engine classloader + * @param pool the pool manager + * @return the lifestyle service */ - private LifestyleService createLifestyleService( EngineClassLoader engine ) throws Exception + private LifestyleService createLifestyleService( EngineClassLoader engine, PoolManager pool ) throws Exception { DeploymentService deployment = createDeploymentService(); DefaultLifestyleService lifestyle = new DefaultLifestyleService(); lifestyle.enableLogging( getLogger().getChildLogger( "lifestyle" ) ); DefaultLocator context = new DefaultLocator(); - context.put( "urn:assembly:pool-manager", getPoolManager( ) ); + context.put( "urn:assembly:pool-manager", pool ); context.put( "urn:assembly:lifecycle.deployment", deployment ); context.put( "urn:assembly:engine.classloader", engine ); context.makeReadOnly(); @@ -301,7 +304,7 @@ } } - +/* private PoolManager getPoolManager( ) throws ApplianceException { try @@ -341,4 +344,5 @@ throw new ApplianceException( error, e ); } } +*/ } 1.28 +40 -11 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java Index: EngineClassLoader.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- EngineClassLoader.java 23 Jan 2003 11:40:35 -0000 1.27 +++ EngineClassLoader.java 27 Jan 2003 07:11:56 -0000 1.28 @@ -119,6 +119,7 @@ import org.apache.avalon.excalibur.packagemanager.impl.DefaultExtensionManager; import org.apache.avalon.excalibur.packagemanager.impl.DelegatingExtensionManager; import org.apache.avalon.excalibur.extension.Extension; +import org.apache.excalibur.mpool.PoolManager; /** * Default implementation of the service management engine. @@ -235,6 +236,11 @@ */ private ApplianceFactory m_factory; + /** + * The thread pool manager. + */ + private PoolManager m_pool; + //======================================================================= // constructor //======================================================================= @@ -348,6 +354,22 @@ String key = "urn:assembly:logging.manager"; m_logging = (LoggingManager) context.get( key ); } + + if( context.hasEntry( "urn:assembly:threads.manager" ) ) + { + m_pool = (PoolManager) context.get( "urn:assembly:threads.manager" ); + } + else + { + try + { + m_pool = getPoolManager(); + } + catch( IllegalStateException ise ) + { + throw new ContextException( "urn:assembly:threads.manager" ); + } + } } //============================================================== @@ -545,6 +567,22 @@ return m_logging; } + protected PoolManager getPoolManager() + { + if( m_pool == null ) + { + if( getParent() instanceof EngineClassLoader ) + { + m_pool = (( EngineClassLoader )getParent() ).getPoolManager(); + } + else + { + throw new IllegalStateException("pool"); + } + } + return m_pool; + } + protected ExtensionManager getExtensionManager() { return m_extensions; @@ -902,16 +940,6 @@ } Logger logger = getLogger(); - /* - if( nested ) - { - logger = getLogger().getChildLogger( context.getName() ); - } - else - { - logger = getLogger(); - } - */ String classname = context.getApplianceFactoryClassname(); ApplianceFactory factory; @@ -1065,6 +1093,7 @@ } context.put( "urn:assembly:logging", getLoggingManager() ); + context.put( "urn:assembly:threads.manager", getPoolManager() ); m_system = context; return m_system; } 1.14 +47 -0 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.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- EngineTestCase.java 15 Jan 2003 09:09:26 -0000 1.13 +++ EngineTestCase.java 27 Jan 2003 07:11:56 -0000 1.14 @@ -13,6 +13,7 @@ import java.util.Hashtable; import junit.framework.TestCase; import org.apache.avalon.framework.Version; +import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.assembly.locator.DefaultLocator; import org.apache.avalon.meta.info.*; import org.apache.avalon.meta.model.*; @@ -23,6 +24,10 @@ import org.apache.avalon.assembly.appliance.DefaultApplianceContext; import org.apache.avalon.assembly.appliance.DependencyGraph; import org.apache.avalon.assembly.util.ExceptionHelper; +import org.apache.excalibur.mpool.DefaultPoolManager; +import org.apache.excalibur.mpool.PoolManager; +import org.apache.excalibur.event.command.CommandManager; +import org.apache.excalibur.event.command.TPCThreadManager; /** * A testcase for the [EMAIL PROTECTED] DefaultEngine} implementation. @@ -61,6 +66,7 @@ DefaultLocator context = new DefaultLocator(); context.put( "urn:assembly:engine.bootstrap", "" + bootstrap ); context.put( "urn:assembly:logging.manager", m_logManager ); + context.put( "urn:assembly:threads.manager", getPoolManager() ); context.makeReadOnly(); engine.contextualize( context ); engine.initialize(); @@ -72,6 +78,47 @@ assertTrue( false ); } } + + private PoolManager getPoolManager( ) throws Exception + { + try + { + // + // Set up the ThreadManager that the CommandManager uses + // + + TPCThreadManager threadManager = new TPCThreadManager(); + threadManager.enableLogging( getLogger().getChildLogger( "threads" ) ); + Parameters params = new Parameters(); + params.setParameter( "threads-per-processor", "2" ); + params.setParameter( "sleep-time", "1000" ); + params.setParameter( "block-timeout", "250" ); + threadManager.parameterize( params ); + threadManager.initialize(); + + // + // Set up the CommandManager that the PoolManager uses. + // + + CommandManager commandManager = new CommandManager(); + threadManager.register( commandManager ); + + // + // Set up the PoolManager that the pooled lifecycle helper needs + // + + DefaultPoolManager poolManager = + new DefaultPoolManager( commandManager.getCommandSink() ); + return poolManager; + } + catch( Throwable e ) + { + final String error = + "Internal error during establishment of the default pool manager. Cause: "; + throw new Exception( error + e.toString() ); + } + } + /** * Test a component with custom context type and profile based import and 1.3 +8 -2 avalon-sandbox/lifecycle/src/etc/project.mf Index: project.mf =================================================================== RCS file: /home/cvs/avalon-sandbox/lifecycle/src/etc/project.mf,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- project.mf 11 Dec 2002 05:06:49 -0000 1.2 +++ project.mf 27 Jan 2003 07:11:56 -0000 1.3 @@ -2,6 +2,12 @@ Created-By: Apache Avalon Extension-Name: avalon-lifecycle Specification-Vendor: Apache Software Foundation -Specification-Version: 1.0 Implementation-Vendor: Apache Software Foundation -Implementation-Version: 0.9 +Implementation-Vendor-Id: ASF +Specification-Version: 1.0 +Implementation-Version: 1.0 +Extension-List: framework +framework-Extension-Name: avalon-framework +framework-Specification-Version: 1.0 +framework-Implementation-Version: 4.1.3 +framework-Implementation-Vendor-Id: ASF 1.12 +2 -2 avalon-sandbox/merlin/default.properties Index: default.properties =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/default.properties,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- default.properties 27 Jan 2003 03:27:45 -0000 1.11 +++ default.properties 27 Jan 2003 07:11:56 -0000 1.12 @@ -9,10 +9,10 @@ name=avalon-${codename} Name=Merlin Service Management System dir-name=merlin -version=1.0 +version=2.0 package-version=2.1 demo-version=1.0 -year=2002 +year=2002-2003 # -------------------------------------------------- 1.4 +2 -3 avalon-sandbox/merlin/src/etc/demo.mf Index: demo.mf =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/src/etc/demo.mf,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- demo.mf 27 Dec 2002 16:49:34 -0000 1.3 +++ demo.mf 27 Jan 2003 07:11:56 -0000 1.4 @@ -3,6 +3,5 @@ Extension-List: merlin merlin-Extension-Name: avalon-merlin merlin-Specification-Version: 2.0 - -Name: Avalon-Block -Block-Package: org.apache.avalon.merlin.playground +merlin-Implementation-Version: 2.1 +merlin-Implementation-Vendor-Id: ASF 1.8 +4 -18 avalon-sandbox/merlin/src/etc/project.mf Index: project.mf =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/src/etc/project.mf,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- project.mf 25 Jan 2003 01:07:09 -0000 1.7 +++ project.mf 27 Jan 2003 07:11:56 -0000 1.8 @@ -4,24 +4,10 @@ Specification-Vendor: Apache Software Foundation Specification-Version: 2.0 Implementation-Vendor: Apache Software Foundation +Implementation-Vendor-Id: ASF Implementation-Version: 2.1 -Extension-List: framework i18n logger configuration meta lifecycle assembly -framework-Extension-Name: avalon-framework -framework-Specification-Version: 1.0 -framework-Implementation-Version: 4.1.3 -i18n-Extension-Name: excalibur-i18n -i18n-Specification-Version: 1.0 -logger-Extension-Name: excalibur-logger -logger-Specification-Version: 1.0 -configuration-Extension-Name: excalibur-configuration -configuration-Specification-Version: 1.0 -meta-Extension-Name: avalon-meta -meta-Specification-Version: 1.0 -lifecycle-Extension-Name: avalon-lifecycle -lifecycle-Specification-Version: 1.0 +Extension-List: assembly assembly-Extension-Name: avalon-assembly assembly-Specification-Version: 1.0 -Main-Class: org.apache.avalon.merlin.Main - -Name: Avalon-Block -Block-Package: org.apache.avalon.merlin +assembly-Implementation-Version: 1.0 +assembly-Implementation-Vendor-Id: ASF 1.3 +1 -1 avalon-sandbox/merlin/src/java/Merlin.java Index: Merlin.java =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/src/java/Merlin.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Merlin.java 27 Jan 2003 03:39:41 -0000 1.2 +++ Merlin.java 27 Jan 2003 07:11:56 -0000 1.3 @@ -192,7 +192,7 @@ // // if we get this far we have a valid system, home and profile - // so we can not go ahead with bootdstrap classpath construction + // so we can not go ahead with bootstrap classpath construction // BASE = home; 1.4 +70 -23 avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.java Index: DefaultKernel.java =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DefaultKernel.java 27 Jan 2003 03:27:46 -0000 1.3 +++ DefaultKernel.java 27 Jan 2003 07:11:57 -0000 1.4 @@ -96,7 +96,7 @@ import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.ContextException; -import org.apache.avalon.framework.service.DefaultServiceManager; +import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.merlin.block.Block; import org.apache.avalon.merlin.block.BlockLoader; import org.apache.avalon.merlin.block.impl.DefaultBlockLoader; @@ -112,6 +112,10 @@ import org.apache.avalon.meta.model.Profile; import org.apache.avalon.meta.info.Type; import org.apache.excalibur.configuration.ConfigurationUtil; +import org.apache.excalibur.mpool.DefaultPoolManager; +import org.apache.excalibur.mpool.PoolManager; +import org.apache.excalibur.event.command.CommandManager; +import org.apache.excalibur.event.command.TPCThreadManager; /** * Default kernel implementation. The implementation provides support for @@ -147,6 +151,11 @@ */ private static LoggingManager LOGGING; + /** + * The pool manager. + */ + private static PoolManager POOL; + protected static final String BLOCK_XML_ENTRY = "BLOCK-INF/block.xml"; protected static final XMLContainerCreator CREATOR = new XMLContainerCreator(); @@ -285,25 +294,6 @@ } // - // load the blocks configuration - // - - /* - File blocksFile = new File( m_home, "blocks.xml" ); - try - { - m_configuration = getConfiguration( blocksFile ); - } - catch( Throwable e ) - { - final String error = - "Unable to load blocks configuration from file: " - + kernelFile; - throw new CascadingException( error, e ); - } - */ - - // // Setup the logging system // @@ -328,6 +318,16 @@ throw new CascadingException( error, e ); } + // + // setup the thread pool + // + + POOL = getPoolManager( m_kernelConfig.getChild( "pool" ) ); + + // + // setup the domain and service registry + // + String domain = m_kernelConfig.getChild( "system" ).getAttribute( "host", "localhost" ); m_registry = new DefaultRegistry( domain ); @@ -346,7 +346,7 @@ try { - m_engine = bootstrapEngine( LOGGING, m_kernelConfig.getChild( "engine" ) ); + m_engine = bootstrapEngine( LOGGING, POOL, m_kernelConfig.getChild( "engine" ) ); } catch( Throwable e ) { @@ -588,7 +588,7 @@ } private EngineClassLoader bootstrapEngine( - LoggingManager logging, Configuration config ) + LoggingManager logging, PoolManager pool, Configuration config ) throws Exception { if( m_home == null ) @@ -625,6 +625,7 @@ context.put( "urn:assembly:engine.extensions", extensions ); context.put( "urn:assembly:engine.classpath", classpath ); context.put( "urn:assembly:logging.manager", logging ); + context.put( "urn:assembly:threads.manager", pool ); context.makeReadOnly(); engine.contextualize( context ); engine.initialize(); @@ -683,4 +684,50 @@ throw new ConfigurationException( error, e ); } } + + private PoolManager getPoolManager( Configuration config ) throws Exception + { + try + { + + int count = config.getChild( "threads-per-processor" ).getValueAsInteger( 2 ); + int sleep = config.getChild( "sleep" ).getValueAsInteger( 1000 ); + int timeout = config.getChild( "timeout" ).getValueAsInteger( 250 ); + + // + // Set up the ThreadManager that the CommandManager uses + // + + TPCThreadManager threadManager = new TPCThreadManager(); + threadManager.enableLogging( getLogger().getChildLogger( "threads" ) ); + Parameters params = new Parameters(); + params.setParameter( "threads-per-processor", "" + count ); + params.setParameter( "sleep-time", "" + sleep ); + params.setParameter( "block-timeout", "" + timeout ); + threadManager.parameterize( params ); + threadManager.initialize(); + + // + // Set up the CommandManager that the PoolManager uses. + // + + CommandManager commandManager = new CommandManager(); + threadManager.register( commandManager ); + + // + // Set up the PoolManager that the pooled lifecycle helper needs + // + + DefaultPoolManager poolManager = + new DefaultPoolManager( commandManager.getCommandSink() ); + return poolManager; + } + catch( Throwable e ) + { + final String error = + "Internal error during establishment of the default pool manager. Cause: "; + throw new Exception( error + e.toString() ); + } + } + } 1.3 +14 -0 avalon-sandbox/merlin/src/test/config/demo.xml Index: demo.xml =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/src/test/config/demo.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- demo.xml 19 Jan 2003 18:18:50 -0000 1.2 +++ demo.xml 27 Jan 2003 07:11:57 -0000 1.3 @@ -7,6 +7,10 @@ <implementation> + <!-- + Setup the classloader. + --> + <engine> <classpath> <fileset dir="build/lib"> @@ -14,6 +18,16 @@ </fileset> </classpath> </engine> + + <!-- + Setup the thread, command and pool manager parameters. + --> + + <pool> + <threads-per-processor>2</threads-per-processor> + <sleep>1000</sleep> + <timeout>250</timeout> + </pool> <!-- an implementation may contain a single engine declaration, 1.3 +1 -1 avalon-sandbox/meta/default.properties Index: default.properties =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/default.properties,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- default.properties 24 Jan 2003 18:39:09 -0000 1.2 +++ default.properties 27 Jan 2003 07:11:57 -0000 1.3 @@ -10,7 +10,7 @@ dir-name=meta version=1.0 package-version=1.0 -year=2000-2002 +year=2000-2003 # -------------------------------------------------- # REQUIRED LIBRARIES 1.4 +8 -3 avalon-sandbox/meta/src/etc/project.mf Index: project.mf =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/src/etc/project.mf,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- project.mf 25 Jan 2003 01:14:13 -0000 1.3 +++ project.mf 27 Jan 2003 07:11:57 -0000 1.4 @@ -2,15 +2,20 @@ Created-By: Apache Avalon Extension-Name: avalon-meta Specification-Vendor: Apache Software Foundation -Specification-Version: 1.0 Implementation-Vendor: Apache Software Foundation -Implementation-Version: 0.1 +Implementation-Vendor-Id: ASF +Specification-Version: 1.0 +Implementation-Version: 1.0 Extension-List: framework i18n configuration framework-Extension-Name: avalon-framework +framework-Implementation-Vendor-Id: ASF framework-Specification-Version: 1.0 framework-Implementation-Version: 4.1.3 i18n-Extension-Name: excalibur-i18n +i18n-Implementation-Vendor-Id: ASF i18n-Specification-Version: 1.0 +i18n-Implementation-Version: 1.0 configuration-Extension-Name: excalibur-configuration +configuration-Implementation-Vendor-Id: ASF configuration-Specification-Version: 1.0 -Class-Path: logkit.jar +configuration-Implementation-Version: 1.0
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>