donaldp 2002/09/28 02:56:46 Modified: event build.xml default.properties event/src/java/org/apache/excalibur/event/command TPCThreadManager.java TPSPThreadManager.java Added: event/src/java/org/apache/excalibur/event/command EventThreadPool.java event/src/test/org/apache/excalibur/event/command/test EventThreadPoolTestCase.java Removed: event/src/java/org/apache/excalibur/thread ThreadControl.java ThreadPool.java event/src/java/org/apache/excalibur/thread/impl DefaultThreadControl.java DefaultThreadPool.java ExecutableRunnable.java WorkerThread.java event/src/test/org/apache/excalibur/thread/impl/test DefaultThreadPoolTestCase.java Log: Update Event to use new thread package. Revision Changes Path 1.35 +2 -2 jakarta-avalon-excalibur/event/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/event/build.xml,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- build.xml 25 Sep 2002 15:01:43 -0000 1.34 +++ build.xml 28 Sep 2002 09:56:45 -0000 1.35 @@ -14,7 +14,7 @@ <pathelement location="${build.classes}"/> <pathelement location="${excalibur-collections.jar}"/> <pathelement location="${excalibur-concurrent.jar}"/> - <pathelement location="${excalibur-threadcontext.jar}"/> + <pathelement location="${excalibur-thread.jar}"/> <pathelement location="${excalibur-scratchpad.jar}"/> <pathelement location="${avalon-framework.jar}"/> <pathelement location="${checkstyle.jar}"/> @@ -47,7 +47,7 @@ <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkCollections"/> <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkConcurrent"/> <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkFramework"/> - <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkThreadcontext"/> + <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkThread"/> </target> <target name="dependencies-test" depends="dist-jar, dependencies" 1.19 +1 -1 jakarta-avalon-excalibur/event/default.properties Index: default.properties =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/event/default.properties,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- default.properties 25 Sep 2002 15:01:43 -0000 1.18 +++ default.properties 28 Sep 2002 09:56:45 -0000 1.19 @@ -1 +1 @@ -# ------------------------------------------------------------------- # B U I L D P R O P E R T I E S # ------------------------------------------------------------------- # Specifies default property values # Overridden by ../default.properties and all ant.properties # Not user-editable; use ant.properties files instead name=excalibur-event Name=Excalibur Event dir-name=event version=1.0a package-version=0.99 year=2002 # -------------------------------------------------- # REQUIRED LIBRARIES # -------------------------------------------------- # ----- Excalibur util, version 1.0 or later ----- excalibur-util.home=${basedir}/../util/dist excalibur-util.lib=${excalibur-util.home} excalibur-util.jar=${excalibur-util.lib}/excalibur-util-1.0.jar # ----- Excalibur threadcontext, version 1.0 or later ----- excalibur-threadcontext.home=${basedir}/../threadcontext/dist excalibur-threadcontext.lib=${excalibur-threadcontext.home} excalibur-threadcontext.jar=${excalibur-threadcontext.lib}/excalibur-threadcontext-1.0.jar # ----- Excalibur Collections, version 1.0 or later ----- excalibur-collections.home=${basedir}/../collections/dist excalibur-collections.lib=${excalibur-collections.home} excalibur-collections.jar=${excalibur-collections.lib}/excalibur-collections-1.0.jar # ----- Excalibur Concurrent, version 1.0 or later ----- excalibur-concurrent.home=${basedir}/../concurrent/dist excalibur-concurrent.lib=${excalibur-concurrent.home} excalibur-concurrent.jar=${excalibur-concurrent.lib}/excalibur-concurrent-1.0.jar # ----- Excalibur Core ----- excalibur-core.home=${basedir}/../all excalibur-core.lib=${excalibur-core.home}/build/lib excalibur-core.jar=${excalibur-core.lib}/excalibur-core.jar # ----- Avalon Framework, version 4.1 or later ----- avalon-framework.home=${basedir}/../../jakarta-avalon avalon-framework.lib=${avalon-framework.home}/build/lib avalon-framework.jar=${avalon-framework.lib}/avalon-framework.jar # -------------------------------------------------- # REQUIRED LIBRARIES FOR UNIT TESTS # -------------------------------------------------- # For unit testing # ----- Excalibur Testcase, version 1.0 or later ----- excalibur-testcase.home=${basedir}/../testcase/dist excalibur-testcase.lib=${excalibur-testcase.home} excalibur-testcase.jar=${excalibur-testcase.lib}/excalibur-testcase-1.0.jar # ----- Excalibur Pool, version 1.0 or later ----- excalibur-pool.home=${basedir}/../pool/dist excalibur-pool.lib=${excalibur-pool.home} excalibur-pool.jar=${excalibur-pool.lib}/excalibur-pool-1.1.jar # ----- Logkit ----- logkit.home=${basedir}/../../jakarta-avalon-logkit logkit.lib=${logkit.home}/build/lib logkit.jar=${logkit.lib}/logkit.jar # ----- Excalibur instrument, version 1.0 or later ----- excalibur-instrument.home=${basedir}/../instrument/dist excalibur-instrument.lib=${excalibur-instrument.home} excalibur-instrument.jar=${excalibur-instrument.lib}/excalibur-instrument-0.3.jar # ----- Excalibur instrument-manager, version 1.0 or later ----- excalibur-instrument-manager.home=${basedir}/../instrument-manager/dist excalibur-instrument-manager.lib=${excalibur-instrument-manager.home} excalibur-instrument-manager.jar=${excalibur-instrument-manager.lib}/excalibur-instrument-manager-0.3.jar excalibur-instrument-manager-interfaces.jar=${excalibur-instrument-manager.lib}/excalibur-instrument-manager-interfaces-0.3.jar # -------------------------------------------------- # Settings used to configure compile environment build.debug = on build.optimize = off build.deprecation = off build.compress = false junit.failonerror = false # location of intermediate products build.dir = build build.testsrc = ${build.dir}/testsrc build.testclasses = ${build.dir}/testclasses build.lib = ${build.dir}/lib build.conf = ${build.dir}/conf build.classes = ${build.dir}/classes build.tests = ${build.dir}/tests build.reports = ${build.dir}/reports # Set the properties for source directories src.dir = src java.dir = ${src.dir}/java conf.dir = ${src.dir}/conf test.dir = ${src.dir}/test # needed by Cocoon build.context = ${build.dir}/documentation build.docs = ${build.dir}/docs build.xdocs = ${build.dir}/xdocs context.dir = ../../jakarta-avalon/src/documentation tools.dir = ../../jakarta-avalon/tools tools.jar = ${java.home}/../lib/tools.jar docs.dir = docs xdocs.dir = ${src.dir}/xdocs # Set the properties for distribution directories dist.dir = dist dist.javadocs = ${docs.dir}/api # name of .zip/.tar.gz/.bz2 files and their top-level directory dist.name = ${name}-${version} # name of jar file jar.name = ${name}-${version}.jar # property indicating directory where all distribution archives are placed dist.base = distributions depchecker.prefix=. \ No newline at end of file +# ------------------------------------------------------------------- # B U I L D P R O P E R T I E S # ------------------------------------------------------------------- # Specifies default property values # Overridden by ../default.properties and all ant.properties # Not user-editable; use ant.properties files instead name=excalibur-event Name=Excalibur Event dir-name=event version=1.0a package-version=0.99 year=2002 # -------------------------------------------------- # REQUIRED LIBRARIES # -------------------------------------------------- # ----- Excalibur util, version 1.0 or later ----- excalibur-util.home=${basedir}/../util/dist excalibur-util.lib=${excalibur-util.home} excalibur-util.jar=${excalibur-util.lib}/excalibur-util-1.0.jar # ----- Excalibur thread, version 1.0 or later ----- excalibur-thread.home=${basedir}/../thread/dist excalibur-thread.lib=${excalibur-thread.home} excalibur-thread.jar=${excalibur-thread.lib}/excalibur-thread-1.0.jar # ----- Excalibur Collections, version 1.0 or later ----- excalibur-collections.home=${basedir}/../collections/dist excalibur-collections.lib=${excalibur-collections.home} excalibur-collections.jar=${excalibur-collections.lib}/excalibur-collections-1.0.jar # ----- Excalibur Concurrent, version 1.0 or later ----- excalibur-concurrent.home=${basedir}/../concurrent/dist excalibur-concurrent.lib=${excalibur-concurrent.home} excalibur-concurrent.jar=${excalibur-concurrent.lib}/excalibur-concurrent-1.0.jar # ----- Excalibur Core ----- excalibur-core.home=${basedir}/../all excalibur-core.lib=${excalibur-core.home}/build/lib excalibur-core.jar=${excalibur-core.lib}/excalibur-core.jar # ----- Avalon Framework, version 4.1 or later ----- avalon-framework.home=${basedir}/../../jakarta-avalon avalon-framework.lib=${avalon-framework.home}/build/lib avalon-framework.jar=${avalon-framework.lib}/avalon-framework.jar # -------------------------------------------------- # REQUIRED LIBRARIES FOR UNIT TESTS # -------------------------------------------------- # For unit testing # ----- Excalibur Testcase, version 1.0 or later ----- excalibur-testcase.home=${basedir}/../testcase/dist excalibur-testcase.lib=${excalibur-testcase.home} excalibur-testcase.jar=${excalibur-testcase.lib}/excalibur-testcase-1.0.jar # ----- Excalibur Pool, version 1.0 or later ----- excalibur-pool.home=${basedir}/../pool/dist excalibur-pool.lib=${excalibur-pool.home} excalibur-pool.jar=${excalibur-pool.lib}/excalibur-pool-1.1.jar # ----- Logkit ----- logkit.home=${basedir}/../../jakarta-avalon-logkit logkit.lib=${logkit.home}/build/lib logkit.jar=${logkit.lib}/logkit.jar # ----- Excalibur instrument, version 1.0 or later ----- excalibur-instrument.home=${basedir}/../instrument/dist excalibur-instrument.lib=${excalibur-instrument.home} excalibur-instrument.jar=${excalibur-instrument.lib}/excalibur-instrument-0.3.jar # ----- Excalibur instrument-manager, version 1.0 or later ----- excalibur-instrument-manager.home=${basedir}/../instrument-manager/dist excalibur-instrument-manager.lib=${excalibur-instrument-manager.home} excalibur-instrument-manager.jar=${excalibur-instrument-manager.lib}/excalibur-instrument-manager-0.3.jar excalibur-instrument-manager-interfaces.jar=${excalibur-instrument-manager.lib}/excalibur-instrument-manager-interfaces-0.3.jar # -------------------------------------------------- # Settings used to configure compile environment build.debug = on build.optimize = off build.deprecation = off build.compress = false junit.failonerror = false # location of intermediate products build.dir = build build.testsrc = ${build.dir}/testsrc build.testclasses = ${build.dir}/testclasses build.lib = ${build.dir}/lib build.conf = ${build.dir}/conf build.classes = ${build.dir}/classes build.tests = ${build.dir}/tests build.reports = ${build.dir}/reports # Set the properties for source directories src.dir = src java.dir = ${src.dir}/java conf.dir = ${src.dir}/conf test.dir = ${src.dir}/test # needed by Cocoon build.context = ${build.dir}/documentation build.docs = ${build.dir}/docs build.xdocs = ${build.dir}/xdocs context.dir = ../../jakarta-avalon/src/documentation tools.dir = ../../jakarta-avalon/tools tools.jar = ${java.home}/../lib/tools.jar docs.dir = docs xdocs.dir = ${src.dir}/xdocs # Set the properties for distribution directories dist.dir = dist dist.javadocs = ${docs.dir}/api # name of .zip/.tar.gz/.bz2 files and their top-level directory dist.name = ${name}-${version} # name of jar file jar.name = ${name}-${version}.jar # property indicating directory where all distribution archives are placed dist.base = distributions depchecker.prefix=. \ No newline at end of file 1.30 +2 -5 jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/event/command/TPCThreadManager.java Index: TPCThreadManager.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/event/command/TPCThreadManager.java,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- TPCThreadManager.java 28 Sep 2002 09:42:32 -0000 1.29 +++ TPCThreadManager.java 28 Sep 2002 09:56:45 -0000 1.30 @@ -53,7 +53,6 @@ import org.apache.avalon.framework.parameters.ParameterException; import org.apache.avalon.framework.parameters.Parameterizable; import org.apache.avalon.framework.parameters.Parameters; -import org.apache.excalibur.thread.impl.DefaultThreadPool; import org.apache.excalibur.util.SystemUtil; /** @@ -67,7 +66,7 @@ */ public final class TPCThreadManager extends AbstractThreadManager implements Parameterizable { - private DefaultThreadPool m_tpool; + private EventThreadPool m_tpool; private long m_blockTimeout = 1000L; private int m_processors = -1; private int m_threadsPerProcessor = 1; @@ -128,15 +127,13 @@ throw new IllegalStateException( "ThreadManager is already initailized" ); } - m_tpool = new DefaultThreadPool( "TPCThreadManager", + m_tpool = new EventThreadPool( "TPCThreadManager", ( m_processors * m_threadsPerProcessor ) + 1, (int)m_blockTimeout ); if( null == getLogger() ) { this.enableLogging( new NullLogger() ); } - - m_tpool.enableLogging( getLogger() ); setThreadPool( m_tpool ); 1.15 +1 -2 jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/event/command/TPSPThreadManager.java Index: TPSPThreadManager.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/event/command/TPSPThreadManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- TPSPThreadManager.java 28 Sep 2002 09:42:32 -0000 1.14 +++ TPSPThreadManager.java 28 Sep 2002 09:56:45 -0000 1.15 @@ -56,7 +56,6 @@ import org.apache.excalibur.event.Source; import org.apache.excalibur.thread.ThreadControl; import org.apache.excalibur.thread.ThreadPool; -import org.apache.excalibur.thread.impl.DefaultThreadPool; /** * This is a <code>ThreadManager</code> which provides a threadpool per @@ -103,7 +102,7 @@ int processors = Math.max( numProcessors, 1 ); int threads = Math.max( threadsPerProcessor, 1 ); - m_threadPool = new DefaultThreadPool( "TPCThreadManager", + m_threadPool = new EventThreadPool( "TPCThreadManager", ( processors * threads ) + 1, (int) timeOut ); m_sleepTime = sleepTime; 1.1 jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/event/command/EventThreadPool.java Index: EventThreadPool.java =================================================================== /* ============================================================================ The Apache Software License, Version 1.1 ============================================================================ Copyright (C) @year@ The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [EMAIL PROTECTED] 5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see <http://www.apache.org/>. */ package org.apache.excalibur.event.command; import org.apache.avalon.framework.activity.Disposable; import org.apache.excalibur.mpool.BlockingFixedSizePool; import org.apache.excalibur.mpool.ObjectFactory; import org.apache.excalibur.thread.ThreadPool; import org.apache.excalibur.thread.impl.AbstractThreadPool; import org.apache.excalibur.thread.impl.WorkerThread; /** * This class is the public frontend for the thread pool code. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:peter at apache.org">Peter Donald</a> */ public class EventThreadPool extends AbstractThreadPool implements ObjectFactory, Disposable, ThreadPool { private BlockingFixedSizePool m_pool; public EventThreadPool( final int capacity ) throws Exception { this( "Worker Pool", capacity ); } public EventThreadPool( final String name, final int capacity ) throws Exception { this( name, capacity, 1000 ); } public EventThreadPool( final String name, final int capacity, final int timeout ) throws Exception { super( name, new ThreadGroup( name ) ); m_pool = new BlockingFixedSizePool( this, capacity, timeout ); m_pool.initialize(); } public void dispose() { m_pool.dispose(); m_pool = null; } public Object newInstance() { return createWorker(); } public void dispose( final Object object ) { if( object instanceof WorkerThread ) { destroyWorker( (WorkerThread) object ); } } public Class getCreatedClass() { return WorkerThread.class; } /** * Retrieve a worker thread from pool. * * @return the worker thread retrieved from pool */ protected WorkerThread getWorker() { final WorkerThread thread = (WorkerThread) m_pool.acquire(); if( null == thread ) { final String message = "Unable to access thread pool due to timeout exceeded"; throw new IllegalStateException( message ); } return thread; } protected void releaseWorker( final WorkerThread worker ) { m_pool.release( worker ); } } 1.1 jakarta-avalon-excalibur/event/src/test/org/apache/excalibur/event/command/test/EventThreadPoolTestCase.java Index: EventThreadPoolTestCase.java =================================================================== /* ============================================================================ The Apache Software License, Version 1.1 ============================================================================ Copyright (C) @year@ The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [EMAIL PROTECTED] 5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see <http://www.apache.org/>. */ package org.apache.excalibur.event.command.test; import junit.framework.TestCase; import org.apache.excalibur.event.command.EventThreadPool; /** * TestCase for EventThreadPool. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> * @author <a href="mailto:[EMAIL PROTECTED]">Eung-ju Park</a> */ public class EventThreadPoolTestCase extends TestCase { public EventThreadPoolTestCase( final String name ) { super( name ); } public void testWithThreadContext() throws Exception { final EventThreadPool pool = new EventThreadPool( "default", 10 ); pool.execute( new DummyRunnable() ); } public void testWithoutThreadContext() throws Exception { final EventThreadPool pool = new EventThreadPool( "default", 10 ); pool.execute( new DummyRunnable() ); } private static class DummyRunnable implements Runnable { public void run() { } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>