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 2012/09/27 17:31:45 UTC

svn commit: r1391058 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/impl/ main/java/org/apache/camel/management/ main/java/org/apache/camel/spi/ test/java/org/apache/camel/impl/

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);