Author: davsclaus Date: Thu Sep 27 15:31:44 2012 New Revision: 1391058 URL: http://svn.apache.org/viewvc?rev=1391058&view=rev Log: CAMEL-5658: Added newThread method to executor serivce manager so we can get a thread without a thread pool if needed.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceManagerTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java?rev=1391058&r1=1391057&r2=1391058&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java Thu Sep 27 15:31:44 2012 @@ -146,6 +146,12 @@ public class DefaultExecutorServiceManag } @Override + public Thread newThread(String name, Runnable runnable) { + ThreadFactory factory = createThreadFactory(name, true); + return factory.newThread(runnable); + } + + @Override public ExecutorService newDefaultThreadPool(Object source, String name) { return newThreadPool(source, name, getDefaultThreadPoolProfile()); } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java?rev=1391058&r1=1391057&r2=1391058&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java Thu Sep 27 15:31:44 2012 @@ -405,7 +405,8 @@ public class DefaultManagementAgent exte // use async thread for starting the JMX Connector // (no need to use a thread pool or enlist in JMX as this thread is terminated when the JMX connector has been started) - Thread thread = new Thread(new Runnable() { + String threadName = camelContext.getExecutorServiceManager().resolveThreadName("JMXConnector: " + url); + Thread thread = getCamelContext().getExecutorServiceManager().newThread(threadName, new Runnable() { public void run() { try { LOG.debug("Staring JMX Connector thread to listen at: {}", url); @@ -416,9 +417,6 @@ public class DefaultManagementAgent exte } } }); - thread.setDaemon(true); - String threadName = camelContext.getExecutorServiceManager().resolveThreadName("JMXConnector: " + url); - thread.setName(threadName); thread.start(); } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java?rev=1391058&r1=1391057&r2=1391058&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java Thu Sep 27 15:31:44 2012 @@ -19,6 +19,7 @@ package org.apache.camel.spi; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; import org.apache.camel.ShutdownableService; @@ -146,6 +147,15 @@ public interface ExecutorServiceManager long getShutdownAwaitTermination(); /** + * Creates a new daemon thread with the given name. + * + * @param name name which is appended to the thread name + * @param runnable a runnable to be executed by new thread instance + * @return the created thread + */ + Thread newThread(String name, Runnable runnable); + + /** * Creates a new thread pool using the default thread pool profile. * * @param source the source object, usually it should be <tt>this</tt> passed in as parameter Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceManagerTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceManagerTest.java?rev=1391058&r1=1391057&r2=1391058&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceManagerTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceManagerTest.java Thu Sep 27 15:31:44 2012 @@ -457,6 +457,19 @@ public class DefaultExecutorServiceManag assertTrue(tp.isShutdown()); } + public void testNewThread() throws Exception { + Thread thread = context.getExecutorServiceManager().newThread("Cool", new Runnable() { + @Override + public void run() { + // noop + } + }); + + assertNotNull(thread); + assertTrue(thread.isDaemon()); + assertTrue(thread.getName().contains("Cool")); + } + // this is a manual test, by looking at the logs public void xxxTestLongShutdownOfThreadPool() throws Exception { final CountDownLatch latch = new CountDownLatch(1);