You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/02/27 08:58:43 UTC
svn commit: r1075001 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/component/properties/
camel-core/src/main/java/org/apache/camel/model/
camel-core/src/test/java/org/apache/camel/compon...
Author: davsclaus
Date: Sun Feb 27 07:58:42 2011
New Revision: 1075001
URL: http://svn.apache.org/viewvc?rev=1075001&view=rev
Log:
CAMEL-3722: ThreadPoolProfile and ThreadPool now accepts String types making them easy to use with property placeholders.
Added:
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.java (contents, props changed)
- copied, changed from r1074810, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.java
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.xml
- copied, changed from r1074810, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.xml
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/pool.properties
- copied, changed from r1074810, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/route.properties
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertiesDslInvalidSyntaxTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRegistryTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
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/builder/ThreadPoolBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java Sun Feb 27 07:58:42 2011
@@ -17,11 +17,13 @@
package org.apache.camel.builder;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelContext;
import org.apache.camel.ThreadPoolRejectedPolicy;
import org.apache.camel.model.ThreadPoolProfileDefinition;
+import org.apache.camel.util.CamelContextHelper;
/**
* A builder to create thread pools.
@@ -74,8 +76,9 @@ public final class ThreadPoolBuilder {
*
* @param name name which is appended to the thread name
* @return the created thread pool
+ * @throws Exception is thrown if error building the thread pool
*/
- public ExecutorService build(String name) {
+ public ExecutorService build(String name) throws Exception {
return build(null, name);
}
@@ -85,13 +88,18 @@ public final class ThreadPoolBuilder {
* @param source the source object, usually it should be <tt>this</tt> passed in as parameter
* @param name name which is appended to the thread name
* @return the created thread pool
+ * @throws Exception is thrown if error building the thread pool
*/
- public ExecutorService build(Object source, String name) {
- ExecutorService answer = camelContext.getExecutorServiceStrategy().newThreadPool(source, name,
- threadPoolDefinition.getPoolSize(), threadPoolDefinition.getMaxPoolSize(),
- threadPoolDefinition.getKeepAliveTime(), threadPoolDefinition.getTimeUnit(),
- threadPoolDefinition.getMaxQueueSize(), threadPoolDefinition.getRejectedExecutionHandler(), false);
+ public ExecutorService build(Object source, String name) throws Exception {
+ int size = CamelContextHelper.parseInteger(camelContext, threadPoolDefinition.getPoolSize());
+ int max = CamelContextHelper.parseInteger(camelContext, threadPoolDefinition.getMaxPoolSize());
+ long keepAlive = CamelContextHelper.parseLong(camelContext, threadPoolDefinition.getKeepAliveTime());
+ int queueSize = CamelContextHelper.parseInteger(camelContext, threadPoolDefinition.getMaxQueueSize());
+ TimeUnit unit = threadPoolDefinition.getTimeUnit();
+ RejectedExecutionHandler handler = threadPoolDefinition.getRejectedExecutionHandler();
+ ExecutorService answer = camelContext.getExecutorServiceStrategy().newThreadPool(source, name,
+ size, max, keepAlive, unit, queueSize, handler, true);
return answer;
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java Sun Feb 27 07:58:42 2011
@@ -45,7 +45,7 @@ public class DefaultPropertiesParser imp
// check the replaced with the visited to avoid circular reference
for (String replace : replaced) {
if (visited.contains(replace)) {
- throw new IllegalArgumentException("Circular reference detected with key [" + replace + "] in uri " + text);
+ throw new IllegalArgumentException("Circular reference detected with key [" + replace + "] from text: " + text);
}
}
// okay all okay so add the replaced as visited
@@ -78,13 +78,13 @@ public class DefaultPropertiesParser imp
pivot = idx + prefixToken.length();
int endIdx = uri.indexOf(suffixToken, pivot);
if (endIdx < 0) {
- throw new IllegalArgumentException("Expecting " + suffixToken + " but found end of string for uri: " + uri);
+ throw new IllegalArgumentException("Expecting " + suffixToken + " but found end of string from text: " + uri);
}
String key = uri.substring(pivot, endIdx);
String part = createPlaceholderPart(key, properties, replaced);
if (part == null) {
- throw new IllegalArgumentException("Property with key [" + key + "] not found in properties for uri: " + uri);
+ throw new IllegalArgumentException("Property with key [" + key + "] not found in properties from text: " + uri);
}
sb.append(part);
pivot = endIdx + suffixToken.length();
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java Sun Feb 27 07:58:42 2011
@@ -24,9 +24,13 @@ import javax.xml.bind.annotation.XmlAttr
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.camel.CamelContext;
import org.apache.camel.ThreadPoolRejectedPolicy;
import org.apache.camel.builder.xml.TimeUnitAdapter;
+import org.apache.camel.impl.ThreadPoolProfileSupport;
import org.apache.camel.spi.ThreadPoolProfile;
+import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.ObjectHelper;
/**
* Represents an XML <threadPoolProfile/> element
@@ -35,19 +39,19 @@ import org.apache.camel.spi.ThreadPoolPr
*/
@XmlRootElement(name = "threadPoolProfile")
@XmlAccessorType(XmlAccessType.FIELD)
-public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition implements ThreadPoolProfile {
+public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition {
@XmlAttribute
private Boolean defaultProfile;
@XmlAttribute
- private Integer poolSize;
+ private String poolSize;
@XmlAttribute
- private Integer maxPoolSize;
+ private String maxPoolSize;
@XmlAttribute
- private Long keepAliveTime;
+ private String keepAliveTime;
@XmlJavaTypeAdapter(TimeUnitAdapter.class)
private TimeUnit timeUnit;
@XmlAttribute
- private Integer maxQueueSize;
+ private String maxQueueSize;
@XmlAttribute
private ThreadPoolRejectedPolicy rejectedPolicy;
@@ -56,26 +60,38 @@ public class ThreadPoolProfileDefinition
public ThreadPoolProfileDefinition(ThreadPoolProfile threadPoolProfile) {
setDefaultProfile(threadPoolProfile.isDefaultProfile());
- setPoolSize(threadPoolProfile.getPoolSize());
- setMaxPoolSize(threadPoolProfile.getMaxPoolSize());
- setKeepAliveTime(threadPoolProfile.getKeepAliveTime());
+ setPoolSize("" + threadPoolProfile.getPoolSize());
+ setMaxPoolSize("" + threadPoolProfile.getMaxPoolSize());
+ setKeepAliveTime("" + threadPoolProfile.getKeepAliveTime());
setTimeUnit(threadPoolProfile.getTimeUnit());
- setMaxQueueSize(threadPoolProfile.getMaxQueueSize());
+ setMaxQueueSize("" + threadPoolProfile.getMaxQueueSize());
setRejectedPolicy(threadPoolProfile.getRejectedPolicy());
}
public ThreadPoolProfileDefinition poolSize(int poolSize) {
+ return poolSize("" + poolSize);
+ }
+
+ public ThreadPoolProfileDefinition poolSize(String poolSize) {
setPoolSize(poolSize);
return this;
}
public ThreadPoolProfileDefinition maxPoolSize(int maxPoolSize) {
- setMaxPoolSize(maxPoolSize);
+ return maxPoolSize("" + maxQueueSize);
+ }
+
+ public ThreadPoolProfileDefinition maxPoolSize(String maxPoolSize) {
+ setMaxPoolSize("" + maxPoolSize);
return this;
}
public ThreadPoolProfileDefinition keepAliveTime(long keepAliveTime) {
- setKeepAliveTime(keepAliveTime);
+ return keepAliveTime("" + keepAliveTime);
+ }
+
+ public ThreadPoolProfileDefinition keepAliveTime(String keepAliveTime) {
+ setKeepAliveTime("" + keepAliveTime);
return this;
}
@@ -85,7 +101,11 @@ public class ThreadPoolProfileDefinition
}
public ThreadPoolProfileDefinition maxQueueSize(int maxQueueSize) {
- setMaxQueueSize(maxQueueSize);
+ return maxQueueSize("" + maxQueueSize);
+ }
+
+ public ThreadPoolProfileDefinition maxQueueSize(String maxQueueSize) {
+ setMaxQueueSize("" + maxQueueSize);
return this;
}
@@ -106,44 +126,44 @@ public class ThreadPoolProfileDefinition
return defaultProfile != null && defaultProfile;
}
- public Integer getPoolSize() {
+ public String getPoolSize() {
return poolSize;
}
- public void setPoolSize(Integer poolSize) {
+ public void setPoolSize(String poolSize) {
this.poolSize = poolSize;
}
- public Integer getMaxPoolSize() {
+ public String getMaxPoolSize() {
return maxPoolSize;
}
- public void setMaxPoolSize(Integer maxPoolSize) {
+ public void setMaxPoolSize(String maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
- public Long getKeepAliveTime() {
+ public String getKeepAliveTime() {
return keepAliveTime;
}
- public void setKeepAliveTime(Long keepAliveTime) {
+ public void setKeepAliveTime(String keepAliveTime) {
this.keepAliveTime = keepAliveTime;
}
- public TimeUnit getTimeUnit() {
- return timeUnit;
+ public String getMaxQueueSize() {
+ return maxQueueSize;
}
- public void setTimeUnit(TimeUnit timeUnit) {
- this.timeUnit = timeUnit;
+ public void setMaxQueueSize(String maxQueueSize) {
+ this.maxQueueSize = maxQueueSize;
}
- public Integer getMaxQueueSize() {
- return maxQueueSize;
+ public TimeUnit getTimeUnit() {
+ return timeUnit;
}
- public void setMaxQueueSize(Integer maxQueueSize) {
- this.maxQueueSize = maxQueueSize;
+ public void setTimeUnit(TimeUnit timeUnit) {
+ this.timeUnit = timeUnit;
}
public ThreadPoolRejectedPolicy getRejectedPolicy() {
@@ -160,4 +180,25 @@ public class ThreadPoolProfileDefinition
public void setRejectedPolicy(ThreadPoolRejectedPolicy rejectedPolicy) {
this.rejectedPolicy = rejectedPolicy;
}
+
+ /**
+ * Creates a {@link ThreadPoolProfile} instance based on this definition.
+ *
+ * @param context the camel context
+ * @return the profile
+ * @throws Exception is thrown if error creating the profile
+ */
+ public ThreadPoolProfile asThreadPoolProfile(CamelContext context) throws Exception {
+ ObjectHelper.notNull(context, "CamelContext", this);
+
+ ThreadPoolProfileSupport answer = new ThreadPoolProfileSupport(getId());
+ answer.setDefaultProfile(getDefaultProfile());
+ answer.setPoolSize(CamelContextHelper.parseInteger(context, getPoolSize()));
+ answer.setMaxPoolSize(CamelContextHelper.parseInteger(context, getMaxPoolSize()));
+ answer.setKeepAliveTime(CamelContextHelper.parseLong(context, getKeepAliveTime()));
+ answer.setMaxQueueSize(CamelContextHelper.parseInteger(context, getMaxQueueSize()));
+ answer.setRejectedPolicy(getRejectedPolicy());
+ answer.setTimeUnit(getTimeUnit());
+ return answer;
+ }
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertiesDslInvalidSyntaxTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertiesDslInvalidSyntaxTest.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertiesDslInvalidSyntaxTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertiesDslInvalidSyntaxTest.java Sun Feb 27 07:58:42 2011
@@ -40,7 +40,7 @@ public class OptionalPropertiesDslInvali
fail("Should have thrown exception");
} catch (FailedToCreateRouteException e) {
IllegalArgumentException cause = assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
- assertEquals("Property with key [xxx] not found in properties for uri: {{xxx}}", cause.getMessage());
+ assertEquals("Property with key [xxx] not found in properties from text: {{xxx}}", cause.getMessage());
}
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRegistryTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRegistryTest.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRegistryTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRegistryTest.java Sun Feb 27 07:58:42 2011
@@ -78,7 +78,7 @@ public class PropertiesComponentRegistry
fail("Should have thrown exception");
} catch (RuntimeCamelException e) {
IllegalArgumentException cause = assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
- assertEquals("Property with key [bean.unknown] not found in properties for uri: {{bean.unknown}}", cause.getMessage());
+ assertEquals("Property with key [bean.unknown] not found in properties from text: {{bean.unknown}}", cause.getMessage());
}
}
@@ -93,7 +93,7 @@ public class PropertiesComponentRegistry
fail("Should have thrown exception");
} catch (RuntimeCamelException e) {
IllegalArgumentException cause = assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
- assertEquals("Property with key [bean.unknown] not found in properties for uri: {{bean.unknown}}", cause.getMessage());
+ assertEquals("Property with key [bean.unknown] not found in properties from text: {{bean.unknown}}", cause.getMessage());
}
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java Sun Feb 27 07:58:42 2011
@@ -145,7 +145,7 @@ public class PropertiesComponentTest ext
} catch (FailedToCreateRouteException e) {
ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
IllegalArgumentException iae = assertIsInstanceOf(IllegalArgumentException.class, cause.getCause());
- assertEquals("Property with key [foo.unknown] not found in properties for uri: {{foo.unknown}}", iae.getMessage());
+ assertEquals("Property with key [foo.unknown] not found in properties from text: {{foo.unknown}}", iae.getMessage());
}
}
@@ -162,7 +162,7 @@ public class PropertiesComponentTest ext
} catch (FailedToCreateRouteException e) {
ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
IllegalArgumentException iae = assertIsInstanceOf(IllegalArgumentException.class, cause.getCause());
- assertEquals("Circular reference detected with key [cool.a] in uri {{cool.a}}", iae.getMessage());
+ assertEquals("Circular reference detected with key [cool.a] from text: {{cool.a}}", iae.getMessage());
}
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java Sun Feb 27 07:58:42 2011
@@ -136,8 +136,6 @@ public class URISupportTest extends Cont
map.put("bar", "123,456");
map.put("name", "S\u00F8ren"); // danish letter
- System.out.println(map.get("name"));
-
// create new uri with the parameters
URI out = URISupport.createRemainingURI(new URI(uri), map);
assertNotNull(out);
Modified: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java (original)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java Sun Feb 27 07:58:42 2011
@@ -519,7 +519,7 @@ public abstract class AbstractCamelConte
}
}
- protected void initThreadPoolProfiles(T context) {
+ protected void initThreadPoolProfiles(T context) throws Exception {
Set<String> defaultIds = new HashSet<String>();
// lookup and use custom profiles from the registry
@@ -543,10 +543,10 @@ public abstract class AbstractCamelConte
for (ThreadPoolProfileDefinition profile : getThreadPoolProfiles()) {
if (profile.isDefaultProfile()) {
LOG.info("Using custom default ThreadPoolProfile with id: " + profile.getId() + " and implementation: " + profile);
- context.getExecutorServiceStrategy().setDefaultThreadPoolProfile(profile);
+ context.getExecutorServiceStrategy().setDefaultThreadPoolProfile(profile.asThreadPoolProfile(context));
defaultIds.add(profile.getId());
} else {
- context.getExecutorServiceStrategy().registerThreadPoolProfile(profile);
+ context.getExecutorServiceStrategy().registerThreadPoolProfile(profile.asThreadPoolProfile(context));
}
}
}
Modified: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java?rev=1075001&r1=1075000&r2=1075001&view=diff
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java (original)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java Sun Feb 27 07:58:42 2011
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.adapter
import org.apache.camel.CamelContext;
import org.apache.camel.ThreadPoolRejectedPolicy;
import org.apache.camel.builder.xml.TimeUnitAdapter;
+import org.apache.camel.util.CamelContextHelper;
/**
* A factory which instantiates {@link java.util.concurrent.ExecutorService} objects
@@ -37,36 +38,49 @@ import org.apache.camel.builder.xml.Time
public abstract class AbstractCamelThreadPoolFactoryBean extends AbstractCamelFactoryBean<ExecutorService> {
@XmlAttribute(required = true)
- private Integer poolSize;
+ private String poolSize;
@XmlAttribute
- private Integer maxPoolSize;
+ private String maxPoolSize;
@XmlAttribute
- private Long keepAliveTime = 60L;
+ private String keepAliveTime;
@XmlAttribute
@XmlJavaTypeAdapter(TimeUnitAdapter.class)
private TimeUnit timeUnit = TimeUnit.SECONDS;
@XmlAttribute
- private Integer maxQueueSize = -1;
+ private String maxQueueSize;
@XmlAttribute
private ThreadPoolRejectedPolicy rejectedPolicy = ThreadPoolRejectedPolicy.CallerRuns;
@XmlAttribute(required = true)
private String threadName;
- @XmlAttribute
- private Boolean daemon = Boolean.TRUE;
public ExecutorService getObject() throws Exception {
- if (poolSize == null || poolSize <= 0) {
+ int size = CamelContextHelper.parseInteger(getCamelContext(), poolSize);
+ if (size <= 0) {
throw new IllegalArgumentException("PoolSize must be a positive number");
}
- int max = getMaxPoolSize() != null ? getMaxPoolSize() : getPoolSize();
+ int max = size;
+ if (maxPoolSize != null) {
+ max = CamelContextHelper.parseInteger(getCamelContext(), maxPoolSize);
+ }
+
RejectedExecutionHandler rejected = null;
if (rejectedPolicy != null) {
rejected = rejectedPolicy.asRejectedExecutionHandler();
}
- ExecutorService answer = getCamelContext().getExecutorServiceStrategy().newThreadPool(getId(), getThreadName(), getPoolSize(), max,
- getKeepAliveTime(), getTimeUnit(), getMaxQueueSize(), rejected, isDaemon());
+ long keepAlive = 60;
+ if (keepAliveTime != null) {
+ keepAlive = CamelContextHelper.parseLong(getCamelContext(), keepAliveTime);
+ }
+
+ int queueSize = -1;
+ if (maxQueueSize != null) {
+ queueSize = CamelContextHelper.parseInteger(getCamelContext(), keepAliveTime);
+ }
+
+ ExecutorService answer = getCamelContext().getExecutorServiceStrategy().newThreadPool(getId(), getThreadName(),
+ size, max, keepAlive, getTimeUnit(), queueSize, rejected, true);
return answer;
}
@@ -76,27 +90,27 @@ public abstract class AbstractCamelThrea
return ExecutorService.class;
}
- public Integer getPoolSize() {
+ public String getPoolSize() {
return poolSize;
}
- public void setPoolSize(Integer poolSize) {
+ public void setPoolSize(String poolSize) {
this.poolSize = poolSize;
}
- public Integer getMaxPoolSize() {
+ public String getMaxPoolSize() {
return maxPoolSize;
}
- public void setMaxPoolSize(Integer maxPoolSize) {
+ public void setMaxPoolSize(String maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
- public Long getKeepAliveTime() {
+ public String getKeepAliveTime() {
return keepAliveTime;
}
- public void setKeepAliveTime(Long keepAliveTime) {
+ public void setKeepAliveTime(String keepAliveTime) {
this.keepAliveTime = keepAliveTime;
}
@@ -108,11 +122,11 @@ public abstract class AbstractCamelThrea
this.timeUnit = timeUnit;
}
- public Integer getMaxQueueSize() {
+ public String getMaxQueueSize() {
return maxQueueSize;
}
- public void setMaxQueueSize(Integer maxQueueSize) {
+ public void setMaxQueueSize(String maxQueueSize) {
this.maxQueueSize = maxQueueSize;
}
@@ -132,12 +146,5 @@ public abstract class AbstractCamelThrea
this.threadName = threadName;
}
- public Boolean isDaemon() {
- return daemon;
- }
-
- public void setDaemon(Boolean daemon) {
- this.daemon = daemon;
- }
}
\ No newline at end of file
Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.java (from r1074810, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.java&r1=1074810&r2=1075001&rev=1075001&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.java Sun Feb 27 07:58:42 2011
@@ -16,61 +16,13 @@
*/
package org.apache.camel.spring.config;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ThreadPoolRejectedPolicy;
-import org.apache.camel.spi.ThreadPoolProfile;
-import org.apache.camel.spring.SpringTestSupport;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-public class SpringCamelContextThreadPoolProfilesTest extends SpringTestSupport {
+public class SpringCamelContextThreadPoolProfilesWithPlaceholderTest extends SpringCamelContextThreadPoolProfilesTest {
protected AbstractXmlApplicationContext createApplicationContext() {
- return new ClassPathXmlApplicationContext("org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.xml");
- }
-
- public void testLowProfile() throws Exception {
- CamelContext context = getMandatoryBean(CamelContext.class, "camel-C");
-
- ThreadPoolProfile profile = context.getExecutorServiceStrategy().getThreadPoolProfile("low");
- assertEquals(1, profile.getPoolSize().intValue());
- assertEquals(5, profile.getMaxPoolSize().intValue());
- assertEquals(null, profile.getKeepAliveTime());
- assertEquals(null, profile.getMaxQueueSize());
- assertEquals(null, profile.getRejectedPolicy());
-
- // create a thread pool from low
- ExecutorService executor = context.getExecutorServiceStrategy().newThreadPool(this, "MyLow", "low");
- ThreadPoolExecutor tp = assertIsInstanceOf(ThreadPoolExecutor.class, executor);
- assertEquals(1, tp.getCorePoolSize());
- assertEquals(5, tp.getMaximumPoolSize());
- // should inherit default options
- assertEquals(60, tp.getKeepAliveTime(TimeUnit.SECONDS));
- assertIsInstanceOf(ThreadPoolExecutor.CallerRunsPolicy.class, tp.getRejectedExecutionHandler());
- }
-
- public void testBigProfile() throws Exception {
- CamelContext context = getMandatoryBean(CamelContext.class, "camel-C");
-
- ThreadPoolProfile profile = context.getExecutorServiceStrategy().getThreadPoolProfile("big");
- assertEquals(50, profile.getPoolSize().intValue());
- assertEquals(100, profile.getMaxPoolSize().intValue());
- assertEquals(ThreadPoolRejectedPolicy.DiscardOldest, profile.getRejectedPolicy());
- assertEquals(null, profile.getKeepAliveTime());
- assertEquals(null, profile.getMaxQueueSize());
-
- // create a thread pool from big
- ExecutorService executor = context.getExecutorServiceStrategy().newThreadPool(this, "MyBig", "big");
- ThreadPoolExecutor tp = assertIsInstanceOf(ThreadPoolExecutor.class, executor);
- assertEquals(50, tp.getCorePoolSize());
- assertEquals(100, tp.getMaximumPoolSize());
- // should inherit default options
- assertEquals(60, tp.getKeepAliveTime(TimeUnit.SECONDS));
- assertIsInstanceOf(ThreadPoolExecutor.DiscardOldestPolicy.class, tp.getRejectedExecutionHandler());
+ return new ClassPathXmlApplicationContext("org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.xml");
}
}
\ No newline at end of file
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.xml (from r1074810, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.xml&r1=1074810&r2=1075001&rev=1075001&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/SpringCamelContextThreadPoolProfilesWithPlaceholderTest.xml Sun Feb 27 07:58:42 2011
@@ -24,15 +24,17 @@
<camelContext id="camel-C" xmlns="http://camel.apache.org/schema/spring">
+ <propertyPlaceholder id="properties" location="org/apache/camel/spring/config/pool.properties"/>
+
<!-- define a low profile -->
<threadPoolProfile id="low"
- poolSize="1"
- maxPoolSize="5"/>
+ poolSize="{{low.min}}"
+ maxPoolSize="{{low.max}}"/>
<!-- define a big profile with many threads -->
<threadPoolProfile id="big"
- poolSize="50"
- maxPoolSize="100" rejectedPolicy="DiscardOldest"/>
+ poolSize="{{big.min}}"
+ maxPoolSize="{{big.max}}" rejectedPolicy="DiscardOldest"/>
<route>
<from uri="direct:start"/>
Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/pool.properties (from r1074810, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/route.properties)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/pool.properties?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/pool.properties&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/route.properties&r1=1074810&r2=1075001&rev=1075001&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/route.properties (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/pool.properties Sun Feb 27 07:58:42 2011
@@ -15,5 +15,8 @@
## limitations under the License.
## ------------------------------------------------------------------------
-cool.foo.startup=false
-cool.bar.startup=true
+low.min=1
+low.max=5
+
+big.min=50
+big.max=100
\ No newline at end of file
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=1075001&r1=1075000&r2=1075001&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 Sun Feb 27 07:58:42 2011
@@ -32,7 +32,6 @@
keepAliveTime="30"
rejectedPolicy="DiscardOldest"
timeUnit="SECONDS"
- daemon="true"
xmlns="http://camel.apache.org/schema/spring"/>
<camelContext xmlns="http://camel.apache.org/schema/spring">