You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ra...@apache.org on 2013/02/06 00:40:17 UTC

svn commit: r1442800 - in /camel/branches/camel-2.10.x/components/camel-jms: ./ src/main/java/org/apache/camel/component/jms/ src/test/java/org/apache/camel/component/jms/

Author: raulk
Date: Tue Feb  5 23:40:17 2013
New Revision: 1442800

URL: http://svn.apache.org/viewvc?rev=1442800&view=rev
Log:
CAMEL-5974 Make defaultTaskExecutorType a read-only managed attribute; add a setter in JmsComponent; add a test for component-level defaultTaskExecutorType

Modified:
    camel/branches/camel-2.10.x/components/camel-jms/   (props changed)
    camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
    camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
    camel/branches/camel-2.10.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java

Propchange: camel/branches/camel-2.10.x/components/camel-jms/
------------------------------------------------------------------------------
  Merged /camel/trunk/components/camel-jms:r1442799
  Merged /camel/trunk:r1442799

Modified: camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?rev=1442800&r1=1442799&r2=1442800&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original)
+++ camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Tue Feb  5 23:40:17 2013
@@ -382,6 +382,10 @@ public class JmsComponent extends Defaul
     public void setIncludeSentJMSMessageID(boolean includeSentJMSMessageID) {
         getConfiguration().setIncludeSentJMSMessageID(includeSentJMSMessageID);
     }
+    
+    public void setDefaultTaskExecutorType(DefaultTaskExecutorType type) {
+        getConfiguration().setDefaultTaskExecutorType(type);
+    }
 
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         this.applicationContext = applicationContext;

Modified: camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java?rev=1442800&r1=1442799&r2=1442800&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java (original)
+++ camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java Tue Feb  5 23:40:17 2013
@@ -1063,6 +1063,7 @@ public class JmsEndpoint extends Default
         configuration.setIncludeSentJMSMessageID(includeSentJMSMessageID);
     }
 
+    @ManagedAttribute
     public DefaultTaskExecutorType getDefaultTaskExecutorType() {
         return configuration.getDefaultTaskExecutorType();
     }

Modified: camel/branches/camel-2.10.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java?rev=1442800&r1=1442799&r2=1442800&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java (original)
+++ camel/branches/camel-2.10.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java Tue Feb  5 23:40:17 2013
@@ -29,7 +29,9 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.camel.util.concurrent.ThreadHelper;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestName;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,6 +43,7 @@ import static org.apache.camel.component
 public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
 
     private static final Logger LOG = LoggerFactory.getLogger(JmsDefaultTaskExecutorTypeTest.class);
+    @Rule public TestName name = new TestName();
     
     @Test
     public void testThreadPoolTaskExecutor() throws Exception {
@@ -87,6 +90,23 @@ public class JmsDefaultTaskExecutorTypeT
                 + "800 with default behaviour", numberThreadsCreated >= 800);
     }
     
+    @Test
+    public void testDefaultTaskExecutorThreadPoolAtComponentConfig() throws Exception {
+        // the default behaviour changes in this test, see createCamelContext method below
+        // the behaviour is the same as with testThreadPoolTaskExecutor test method above
+        context.startRoute("default");
+        Long beforeThreadCount = currentThreadCount();
+        getMockEndpoint("mock:result.default").expectedMessageCount(1000);
+        doSendMessages("foo.default", 500, 5, DefaultTaskExecutorType.ThreadPool);
+        Thread.sleep(100);
+        doSendMessages("foo.default", 500, 5, DefaultTaskExecutorType.ThreadPool);
+        assertMockEndpointsSatisfied();
+        Long numberThreadsCreated = currentThreadCount() - beforeThreadCount;
+        LOG.info("Number of threads created, testDefaultTaskExecutorThreadPoolAtComponentConfig: " + numberThreadsCreated);
+        assertTrue("Number of threads created should be equal or lower than " 
+                + "100 with ThreadPoolTaskExecutor as a component default", numberThreadsCreated <= 100);
+    }
+    
     private Long currentThreadCount() throws NoSuchMethodException,
             IllegalAccessException, InvocationTargetException {
         Method m = ThreadHelper.class.getDeclaredMethod("nextThreadCounter", (Class<?>[]) null);
@@ -104,6 +124,9 @@ public class JmsDefaultTaskExecutorTypeT
         jmsComponent.getConfiguration().setConcurrentConsumers(3);
         jmsComponent.getConfiguration().setMaxConcurrentConsumers(10);
         jmsComponent.getConfiguration().setReceiveTimeout(50);
+        if ("testDefaultTaskExecutorThreadPoolAtComponentConfig".equals(testName.getMethodName())) {
+            jmsComponent.getConfiguration().setDefaultTaskExecutorType(DefaultTaskExecutorType.ThreadPool);
+        }
         camelContext.addComponent("activemq", jmsComponent);
         return camelContext;
     }