Author: davsclaus
Date: Tue Mar 16 13:24:47 2010
New Revision: 923730

URL: http://svn.apache.org/viewvc?rev=923730&view=rev
Log:
CAMEL-1588: Configuring a custom default thread pool profile. Added better 
debug logging for thread pool activity.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolKeepAliveTimeTest.java
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelThreadPoolFactoryBean.java
    
camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThreadsExternalThreadPoolFactoryBeanTest.xml

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java?rev=923730&r1=923729&r2=923730&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
 Tue Mar 16 13:24:47 2010
@@ -33,6 +33,7 @@ import org.apache.camel.builder.xml.Time
 import org.apache.camel.processor.ThreadsProcessor;
 import org.apache.camel.processor.UnitOfWorkProcessor;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.util.concurrent.ExecutorServiceHelper;
 
 /**
@@ -53,12 +54,12 @@ public class ThreadsDefinition extends O
     @XmlAttribute
     private Integer maxPoolSize;
     @XmlAttribute
-    private Integer keepAliveTime = 60;
+    private Integer keepAliveTime;
     @XmlAttribute
     @XmlJavaTypeAdapter(TimeUnitAdapter.class)
-    private TimeUnit units = TimeUnit.SECONDS;
+    private TimeUnit timeUnit;
     @XmlAttribute
-    private Integer maxQueueSize = -1;
+    private Integer maxQueueSize;
     @XmlTransient()
     private String threadName;
     @XmlAttribute
@@ -78,15 +79,21 @@ public class ThreadsDefinition extends O
                 // use the cached thread pool
                 executorService = 
routeContext.getCamelContext().getExecutorServiceStrategy().newDefaultThreadPool(this,
 name);
             } else {
+                ThreadPoolProfile profile = 
routeContext.getCamelContext().getExecutorServiceStrategy().getDefaultThreadPoolProfile();
+                // use the default thread pool profile as base and then 
override with values
                 // use a custom pool based on the settings
-                int max = getMaxPoolSize() != null ? getMaxPoolSize() : 
poolSize;
-                RejectedExecutionHandler rejected = null;
+                int max = getMaxPoolSize() != null ? getMaxPoolSize() : 
profile.getMaxPoolSize();
+                long keepAlive = getKeepAliveTime() != null ? 
getKeepAliveTime() : profile.getKeepAliveTime();
+                int maxQueue = getMaxQueueSize() != null ? getMaxQueueSize() : 
profile.getMaxQueueSize();
+                TimeUnit tu = getTimeUnit() != null ? getTimeUnit() : 
profile.getTimeUnit();
+                RejectedExecutionHandler rejected = 
profile.getRejectedExecutionHandler();
                 if (rejectedPolicy != null) {
                     rejected = rejectedPolicy.asRejectedExecutionHandler();
                 }
+
                 executorService = 
routeContext.getCamelContext().getExecutorServiceStrategy()
-                                        .newThreadPool(this, name, poolSize, 
max, getKeepAliveTime(), getUnits(),
-                                                       getMaxQueueSize(), 
rejected, true);
+                                        .newThreadPool(this, name, poolSize, 
max, keepAlive, tu,
+                                                       maxQueue, rejected, 
true);
             }
         }
         Processor childProcessor = routeContext.createProcessor(this);
@@ -164,8 +171,8 @@ public class ThreadsDefinition extends O
      * @param keepAliveTimeUnits time unit
      * @return the builder
      */
-    public ThreadsDefinition units(TimeUnit keepAliveTimeUnits) {
-        setUnits(keepAliveTimeUnits);
+    public ThreadsDefinition timeUnit(TimeUnit keepAliveTimeUnits) {
+        setTimeUnit(keepAliveTimeUnits);
         return this;
     }
 
@@ -265,12 +272,12 @@ public class ThreadsDefinition extends O
         this.keepAliveTime = keepAliveTime;
     }
 
-    public TimeUnit getUnits() {
-        return units;
+    public TimeUnit getTimeUnit() {
+        return timeUnit;
     }
 
-    public void setUnits(TimeUnit units) {
-        this.units = units;
+    public void setTimeUnit(TimeUnit timeUnit) {
+        this.timeUnit = timeUnit;
     }
 
     public Integer getMaxQueueSize() {

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java?rev=923730&r1=923729&r2=923730&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java
 Tue Mar 16 13:24:47 2010
@@ -57,7 +57,7 @@ public class CamelCustomDefaultThreadPoo
             @Override
             public void configure() throws Exception {
                 from("direct:start")
-                    .threads()
+                    .threads(25, 45)
                     .to("mock:result");
             }
         };

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolKeepAliveTimeTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolKeepAliveTimeTest.java?rev=923730&r1=923729&r2=923730&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolKeepAliveTimeTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolKeepAliveTimeTest.java
 Tue Mar 16 13:24:47 2010
@@ -41,7 +41,7 @@ public class ThreadsCoreAndMaxPoolKeepAl
             public void configure() throws Exception {
                 from("direct:start")
                     // will use a a custom thread pool with 5 in core and 10 
as max
-                    .threads(5, 10).keepAliveTime(10).units(TimeUnit.SECONDS)
+                    .threads(5, 
10).keepAliveTime(10).timeUnit(TimeUnit.SECONDS)
                     .to("mock:result");
             }
         };

Modified: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelThreadPoolFactoryBean.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelThreadPoolFactoryBean.java?rev=923730&r1=923729&r2=923730&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelThreadPoolFactoryBean.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelThreadPoolFactoryBean.java
 Tue Mar 16 13:24:47 2010
@@ -47,7 +47,7 @@ import static org.apache.camel.util.Obje
 @XmlAccessorType(XmlAccessType.FIELD)
 public class CamelThreadPoolFactoryBean extends IdentifiedType implements 
FactoryBean, CamelContextAware, ApplicationContextAware {
 
-    @XmlAttribute
+    @XmlAttribute(required = true)
     private Integer poolSize;
     @XmlAttribute
     private Integer maxPoolSize;
@@ -55,11 +55,11 @@ public class CamelThreadPoolFactoryBean 
     private Long keepAliveTime = 60L;
     @XmlAttribute
     @XmlJavaTypeAdapter(TimeUnitAdapter.class)
-    private TimeUnit units = TimeUnit.SECONDS;
+    private TimeUnit timeUnit = TimeUnit.SECONDS;
     @XmlAttribute
     private Integer maxQueueSize = -1;
     @XmlAttribute
-    private ThreadPoolRejectedPolicy rejectedPolicy;
+    private ThreadPoolRejectedPolicy rejectedPolicy = 
ThreadPoolRejectedPolicy.CallerRuns;
     @XmlAttribute
     private String threadName;
     @XmlAttribute
@@ -75,24 +75,22 @@ public class CamelThreadPoolFactoryBean 
         if (camelContext == null && camelContextId != null) {
             camelContext = 
CamelContextResolverHelper.getCamelContextWithId(applicationContext, 
camelContextId);
         }
+
         notNull(camelContext, "camelContext");
+        if (poolSize == null || poolSize <= 0) {
+            throw new IllegalArgumentException("PoolSize must be a positive 
number");
+        }
 
         String name = getThreadName() != null ? getThreadName() : getId();
 
-        ExecutorService answer;
-        if (getPoolSize() == null || getPoolSize() <= 0) {
-            // use the default profile
-            answer = 
camelContext.getExecutorServiceStrategy().newDefaultThreadPool(getId(), name);
-        } else {
-            // use a custom pool based on the settings
-            int max = getMaxPoolSize() != null ? getMaxPoolSize() : 
getPoolSize();
-            RejectedExecutionHandler rejected = null;
-            if (rejectedPolicy != null) {
-                rejected = rejectedPolicy.asRejectedExecutionHandler();
-            }
-            answer = 
camelContext.getExecutorServiceStrategy().newThreadPool(getId(), name, 
getPoolSize(), max,
-                    getKeepAliveTime(), getUnits(), getMaxQueueSize(), 
rejected, isDaemon());
+        int max = getMaxPoolSize() != null ? getMaxPoolSize() : getPoolSize();
+        RejectedExecutionHandler rejected = null;
+        if (rejectedPolicy != null) {
+            rejected = rejectedPolicy.asRejectedExecutionHandler();
         }
+
+        ExecutorService answer = 
camelContext.getExecutorServiceStrategy().newThreadPool(getId(), name, 
getPoolSize(), max,
+                    getKeepAliveTime(), getTimeUnit(), getMaxQueueSize(), 
rejected, isDaemon());
         return answer;
     }
 
@@ -128,12 +126,12 @@ public class CamelThreadPoolFactoryBean 
         this.keepAliveTime = keepAliveTime;
     }
 
-    public TimeUnit getUnits() {
-        return units;
+    public TimeUnit getTimeUnit() {
+        return timeUnit;
     }
 
-    public void setUnits(TimeUnit units) {
-        this.units = units;
+    public void setTimeUnit(TimeUnit timeUnit) {
+        this.timeUnit = timeUnit;
     }
 
     public Integer getMaxQueueSize() {

Modified: 
camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index?rev=923730&r1=923729&r2=923730&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index
 (original)
+++ 
camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index
 Tue Mar 16 13:24:47 2010
@@ -18,9 +18,9 @@ CamelBeanPostProcessor
 CamelConsumerTemplateFactoryBean
 CamelContextFactoryBean
 CamelEndpointFactoryBean
-CamelExecutorServiceFactoryBean
 CamelJMXAgentDefinition
 CamelProducerTemplateFactoryBean
 CamelPropertyPlaceholderDefinition
 CamelProxyFactoryDefinition
 CamelServiceExporterDefinition
+CamelThreadPoolFactoryBean

Modified: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThreadsExternalThreadPoolFactoryBeanTest.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThreadsExternalThreadPoolFactoryBeanTest.xml?rev=923730&r1=923729&r2=923730&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThreadsExternalThreadPoolFactoryBeanTest.xml
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThreadsExternalThreadPoolFactoryBeanTest.xml
 Tue Mar 16 13:24:47 2010
@@ -31,7 +31,7 @@
                 threadName="myPool"
                 keepAliveTime="30"
                 rejectedPolicy="DiscardOldest"
-                units="SECONDS"
+                timeUnit="SECONDS"
                 daemon="true"
                 xmlns="http://camel.apache.org/schema/spring"/>
 


Reply via email to