You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2007/01/09 10:17:24 UTC

svn commit: r494346 - in /cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread: DefaultRunnableManager.java DefaultThreadPool.java

Author: cziegeler
Date: Tue Jan  9 01:17:20 2007
New Revision: 494346

URL: http://svn.apache.org/viewvc?view=rev&rev=494346
Log:
Start removing dependencies to Avalon

Modified:
    cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
    cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultThreadPool.java

Modified: cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java?view=diff&rev=494346&r1=494345&r2=494346
==============================================================================
--- cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java (original)
+++ cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java Tue Jan  9 01:17:20 2007
@@ -27,9 +27,9 @@
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
 import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * The DefaultRunnableManager implements the {@link RunnableManager} interface
@@ -67,7 +67,6 @@
  * @version $Id$
  */
 public class DefaultRunnableManager
-    extends AbstractLogEnabled
     implements RunnableManager,
                Configurable,
                Disposable,
@@ -75,6 +74,9 @@
                Runnable,
                ThreadSafe {
     
+    /** By default we use the logger for this class. */
+    private Log logger = LogFactory.getLog(getClass());
+
     //~ Static fields/initializers ---------------------------------------------
 
     /** The default {@link ThreadFactory} */
@@ -127,6 +129,14 @@
 
     //~ Methods ----------------------------------------------------------------
 
+    public Log getLogger() {
+        return this.logger;
+    }
+
+    public void setLogger(Log l) {
+        this.logger = l;
+    }
+
     /**
      * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
      */
@@ -147,7 +157,7 @@
             config.getChild( "thread-pools" ).getChildren( "thread-pool" );
 
         for( int i = 0; i < threadpools.length; i++ ) {
-            final DefaultThreadPool pool = configThreadPool( threadpools[ i ] );
+            configThreadPool( threadpools[ i ] );
         }
 
         // Check if a "default" pool has been created
@@ -543,6 +553,62 @@
                            shutdownGraceful, shutdownWaitTime );
     }
 
+    private String getConfigValue( final Map    config,
+                                   final String key)
+    throws Exception {
+        final Object value = config.get(key);
+        if ( value == null ) {
+            throw new Exception("Required configuration value for key '" + key + "' is missing.");
+        }
+        return value.toString();
+    }
+
+    private String getConfigValue( final Map    config,
+                                   final String key,
+                                   final String defaultValue) {
+        final Object value = config.get(key);
+        if ( value == null ) {
+            return defaultValue;
+        }
+        return value.toString();
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param config DOCUMENT ME!
+     *
+     * @return DOCUMENT ME!
+     *
+     * @throws ConfigurationException DOCUMENT ME!
+     */
+    private DefaultThreadPool configThreadPool( final Map config )
+    throws Exception {
+        final String name = this.getConfigValue(config, "name");
+        final int queueSize = Integer.valueOf(this.getConfigValue(config, "queue-size", String.valueOf(DEFAULT_QUEUE_SIZE))).intValue();
+        final int maxPoolSize = Integer.valueOf(this.getConfigValue(config, "max-pool-size", String.valueOf(DEFAULT_MAX_POOL_SIZE))).intValue();
+        int minPoolSize = Integer.valueOf(this.getConfigValue(config, "min-pool-size", String.valueOf(DEFAULT_MIN_POOL_SIZE))).intValue();
+
+        // make sure we have enough threads for the default thread pool as we
+        // need one for ourself
+        if( DEFAULT_THREADPOOL_NAME.equals( name ) &&
+            ( ( minPoolSize > 0 ) && ( minPoolSize < DEFAULT_MIN_POOL_SIZE ) ) ) {
+            minPoolSize = DEFAULT_MIN_POOL_SIZE;
+        }
+
+        final String priority = this.getConfigValue(config, "priority", DEFAULT_THREAD_PRIORITY);
+        final boolean isDaemon = Boolean.valueOf(this.getConfigValue(config, "daemon", String.valueOf(DEFAULT_DAEMON_MODE))).booleanValue();
+        final long keepAliveTime = Long.valueOf(this.getConfigValue(config, "keep-alive-time-ms", String.valueOf(DEFAULT_KEEP_ALIVE_TIME))).longValue();
+        final String blockPolicy = this.getConfigValue(config, "block-policy", DefaultThreadPool.POLICY_DEFAULT );
+        final boolean shutdownGraceful = Boolean.valueOf(this.getConfigValue(config, "shutdown-graceful", String.valueOf(DEFAULT_SHUTDOWN_GRACEFUL))).booleanValue();
+        final int shutdownWaitTime = Integer.valueOf(this.getConfigValue(config, "shutdown-wait-time-ms", String.valueOf(DEFAULT_SHUTDOWN_WAIT_TIME))).intValue();
+
+        return createPool( new DefaultThreadPool(), name, queueSize,
+                           maxPoolSize, minPoolSize, getPriority( priority ),
+                           isDaemon, keepAliveTime, blockPolicy,
+                           shutdownGraceful, shutdownWaitTime );
+    }
+
     /**
      * Create a ThreadPool
      *
@@ -577,7 +643,7 @@
                                           final String blockPolicy,
                                           final boolean shutdownGraceful,
                                           final int shutdownWaitTime ) {
-        pool.enableLogging( getLogger().getChildLogger( name ) );
+        pool.setLogger( getLogger() );
         pool.setName( name );
 
         ThreadFactory factory = null;
@@ -670,7 +736,7 @@
         //~ Instance fields ----------------------------------------------------
 
         /** Our logger */
-        final Logger m_logger;
+        final Log m_logger;
 
         /** DOCUMENT ME! */
         final Runnable m_command;
@@ -702,7 +768,7 @@
                        final Runnable command,
                        final long delay,
                        final long interval,
-                       final Logger logger ) {
+                       final Log logger ) {
             m_pool = pool;
             m_command = command;
             m_delay = delay;

Modified: cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultThreadPool.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultThreadPool.java?view=diff&rev=494346&r1=494345&r2=494346
==============================================================================
--- cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultThreadPool.java (original)
+++ cocoon/trunk/core/cocoon-thread/cocoon-thread-impl/src/main/java/org/apache/cocoon/components/thread/DefaultThreadPool.java Tue Jan  9 01:17:20 2007
@@ -16,8 +16,8 @@
  */
 package org.apache.cocoon.components.thread;
 
-import org.apache.avalon.framework.logger.LogEnabled;
-import org.apache.avalon.framework.logger.Logger;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
 
@@ -31,7 +31,7 @@
  */
 public class DefaultThreadPool
     extends PooledExecutor
-    implements ThreadPool, LogEnabled {
+    implements ThreadPool {
 
     //~ Static fields/initializers ---------------------------------------------
 
@@ -43,8 +43,8 @@
     /** Wrapps a channel */
     private ChannelWrapper m_channelWrapper;
 
-    /** Our logger */
-    private Logger m_logger;
+    /** By default we use the logger for this class. */
+    private Log logger = LogFactory.getLog(getClass());
 
     /** The Queue */
     private Queue m_queue;
@@ -73,6 +73,14 @@
         this( new ChannelWrapper() );
     }
 
+    public Log getLogger() {
+        return this.logger;
+    }
+
+    public void setLogger(Log l) {
+        this.logger = l;
+    }
+
     /**
      * Create a new pool.
      *
@@ -156,17 +164,6 @@
     }
 
     /**
-     * Set the logger
-     *
-     * @param logger
-     *
-     * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
-     */
-    public void enableLogging( Logger logger ) {
-        m_logger = logger;
-    }
-
-    /**
      * Execute a command
      *
      * @param command The {@link Runnable} to execute
@@ -305,14 +302,5 @@
      */
     int getShutdownWaitTimeMs() {
         return m_shutdownWaitTimeMs;
-    }
-
-    /**
-     * Get our <code>Logger</code>
-     *
-     * @return our <code>Logger</code>
-     */
-    private Logger getLogger() {
-        return m_logger;
     }
 }