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 2016/01/15 13:29:14 UTC

[1/2] camel git commit: CAMEL-9330 : Main - enableHangupSupport should be default enabled

Repository: camel
Updated Branches:
  refs/heads/master 812417744 -> d3d75d287


CAMEL-9330 : Main - enableHangupSupport should be default enabled


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f56df5ee
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f56df5ee
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f56df5ee

Branch: refs/heads/master
Commit: f56df5eeaafc11c148c10ab67d21b1f1918e7c0f
Parents: 8124177
Author: lburgazzoli <lb...@gmail.com>
Authored: Wed Jan 13 17:34:59 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jan 15 13:27:33 2016 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/camel/main/Main.java   |  1 -
 .../java/org/apache/camel/main/MainSupport.java | 22 ++++++++---------
 .../java/org/apache/camel/main/MainExample.java |  2 --
 .../java/org/apache/camel/main/MainTest.java    | 25 ++++++++++++++++++++
 .../main/java/org/apache/camel/cdi/Main.java    |  1 -
 .../main/java/org/apache/camel/guice/Main.java  |  1 -
 .../component/mail/MapMailMessagesBugRoute.java |  1 -
 .../apache/camel/pgevent/IntegrationTest.java   |  1 -
 .../CamelSpringBootApplicationController.java   |  1 -
 .../apache/camel/spring/javaconfig/Main.java    |  1 -
 .../main/java/org/apache/camel/spring/Main.java |  1 -
 .../org/apache/camel/test/blueprint/Main.java   |  1 -
 .../camel/test/blueprint/MyMainAppTest.java     |  1 -
 .../camel/example/console/CamelConsoleMain.java |  2 --
 .../apache/camel/example/ftp/MyFtpClient.java   |  1 -
 .../apache/camel/example/ftp/MyFtpServer.java   |  1 -
 .../webservice/version/LoanBroker.java          |  1 -
 .../example/splunk/SplunkSavedSearchClient.java |  1 -
 .../example/splunk/SplunkSearchClient.java      |  1 -
 .../websocket/CamelTwitterWebSocketMain.java    |  3 ---
 .../apache/camel/example/widget/WidgetMain.java |  3 ---
 .../src/main/java/MainApp.java                  |  1 -
 .../src/main/java/MainApp.java                  |  1 -
 .../src/main/scala/MyRouteMain.scala            |  2 --
 24 files changed, 36 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/camel-core/src/main/java/org/apache/camel/main/Main.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/main/Main.java b/camel-core/src/main/java/org/apache/camel/main/Main.java
index 1a7d74f..5a3287a 100644
--- a/camel-core/src/main/java/org/apache/camel/main/Main.java
+++ b/camel-core/src/main/java/org/apache/camel/main/Main.java
@@ -42,7 +42,6 @@ public class Main extends MainSupport {
     public static void main(String... args) throws Exception {
         Main main = new Main();
         instance = main;
-        main.enableHangupSupport();
         main.run(args);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
index 8b42a03..2112444 100644
--- a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
@@ -50,6 +50,7 @@ public abstract class MainSupport extends ServiceSupport {
     protected final List<Option> options = new ArrayList<Option>();
     protected final CountDownLatch latch = new CountDownLatch(1);
     protected final AtomicBoolean completed = new AtomicBoolean(false);
+    protected final HangupInterceptor hangupInterceptor = new HangupInterceptor();
     protected long duration = -1;
     protected TimeUnit timeUnit = TimeUnit.MILLISECONDS;
     protected boolean trace;
@@ -61,19 +62,14 @@ public abstract class MainSupport extends ServiceSupport {
     /**
      * A class for intercepting the hang up signal and do a graceful shutdown of the Camel.
      */
-    private static final class HangupInterceptor extends Thread {
+    private final class HangupInterceptor extends Thread {
         Logger log = LoggerFactory.getLogger(this.getClass());
-        MainSupport mainInstance;
-
-        public HangupInterceptor(MainSupport main) {
-            mainInstance = main;
-        }
 
         @Override
         public void run() {
             log.info("Received hang up - stopping the main instance.");
             try {
-                mainInstance.stop();
+                MainSupport.this.stop();
             } catch (Exception ex) {
                 log.warn("Error during stopping the main instance.", ex);
             }
@@ -112,6 +108,8 @@ public abstract class MainSupport extends ServiceSupport {
                 enableTrace();
             }
         });
+
+        Runtime.getRuntime().addShutdownHook(hangupInterceptor);
     }
 
     /**
@@ -137,12 +135,14 @@ public abstract class MainSupport extends ServiceSupport {
     }
 
     /**
-     * Enables the hangup support. Gracefully stops by calling stop() on a
+     * Disable the hangup support. No graceful stop by calling stop() on a
      * Hangup signal.
      */
-    public void enableHangupSupport() {
-        HangupInterceptor interceptor = new HangupInterceptor(this);
-        Runtime.getRuntime().addShutdownHook(interceptor);
+    public void disableHangupSupport() {
+        boolean result = Runtime.getRuntime().removeShutdownHook(hangupInterceptor);
+        if (LOG.isDebugEnabled() && result) {
+            LOG.debug("HangupInterceptor ({}) successfully removed", hangupInterceptor);
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/camel-core/src/test/java/org/apache/camel/main/MainExample.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/main/MainExample.java b/camel-core/src/test/java/org/apache/camel/main/MainExample.java
index d5160a9..e4c7303 100644
--- a/camel-core/src/test/java/org/apache/camel/main/MainExample.java
+++ b/camel-core/src/test/java/org/apache/camel/main/MainExample.java
@@ -38,8 +38,6 @@ public class MainExample {
     public void boot() throws Exception {
         // create a Main instance
         main = new Main();
-        // enable hangup support so you can press ctrl + c to terminate the JVM
-        main.enableHangupSupport();
         // bind MyBean into the registry
         main.bind("foo", new MyBean());
         // add routes

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/camel-core/src/test/java/org/apache/camel/main/MainTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/main/MainTest.java b/camel-core/src/test/java/org/apache/camel/main/MainTest.java
index 132c5dc..b548efc 100644
--- a/camel-core/src/test/java/org/apache/camel/main/MainTest.java
+++ b/camel-core/src/test/java/org/apache/camel/main/MainTest.java
@@ -51,6 +51,31 @@ public class MainTest extends TestCase {
 
         main.stop();
     }
+
+    public void testDisableHangupSupport() throws Exception {
+        // lets make a simple route
+        Main main = new Main();
+        main.addRouteBuilder(new MyRouteBuilder());
+        main.disableHangupSupport();
+        main.enableTrace();
+        main.bind("foo", new Integer(31));
+        main.start();
+
+        List<CamelContext> contextList = main.getCamelContexts();
+        assertNotNull(contextList);
+        assertEquals("Did not get the expected count of Camel contexts", 1, contextList.size());
+        CamelContext camelContext = contextList.get(0);
+        assertEquals("Could not find the registry bound object", 31, camelContext.getRegistry().lookupByName("foo"));
+
+        MockEndpoint endpoint = camelContext.getEndpoint("mock:results", MockEndpoint.class);
+        endpoint.expectedMinimumMessageCount(1);
+
+        main.getCamelTemplate().sendBody("direct:start", "<message>1</message>");
+
+        endpoint.assertIsSatisfied();
+
+        main.stop();
+    }
     
     public void testLoadingRouteFromCommand() throws Exception {
         Main main = new Main();

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
index 61148ac..0532870 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
@@ -43,7 +43,6 @@ public abstract class Main extends MainSupport { // abstract to prevent cdi mana
     public static void main(String... args) throws Exception {
         Main main = new Main() { };
         instance = main;
-        main.enableHangupSupport();
         main.run(args);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java
----------------------------------------------------------------------
diff --git a/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java b/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java
index d336227..2f9d161 100644
--- a/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java
+++ b/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java
@@ -70,7 +70,6 @@ public class Main extends MainSupport {
     public static void main(String... args) throws Exception {
         Main main = new Main();
         instance = main;
-        main.enableHangupSupport();
         main.run(args);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-mail/src/test/java/org/apache/camel/component/mail/MapMailMessagesBugRoute.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MapMailMessagesBugRoute.java b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MapMailMessagesBugRoute.java
index b7d9c75..a2ba1af 100644
--- a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MapMailMessagesBugRoute.java
+++ b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MapMailMessagesBugRoute.java
@@ -30,7 +30,6 @@ public class MapMailMessagesBugRoute extends RouteBuilder {
 
     public static void main(String... args) throws Exception {
         Main main = new Main();
-        main.enableHangupSupport();
         main.addRouteBuilder(new MapMailMessagesBugRoute());
         main.run(args);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/IntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/IntegrationTest.java b/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/IntegrationTest.java
index 9e6f8d8..7f525ba 100644
--- a/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/IntegrationTest.java
+++ b/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/IntegrationTest.java
@@ -53,7 +53,6 @@ public class IntegrationTest {
         }
 
         main = new Main();
-        main.enableHangupSupport();
         main.bind("test", ds);
         main.addRouteBuilder(buildConsumer());
         main.addRouteBuilder(buildProducer());

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootApplicationController.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootApplicationController.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootApplicationController.java
index 067edc9..abafd8a 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootApplicationController.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootApplicationController.java
@@ -46,7 +46,6 @@ public class CamelSpringBootApplicationController {
 
     public void blockMainThread() {
         try {
-            mainSupport.enableHangupSupport();
             mainSupport.run();
         } catch (Exception e) {
             throw new RuntimeException(e);

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
index 6a73c1f..0d63c4e 100644
--- a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
+++ b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
@@ -54,7 +54,6 @@ public class Main extends org.apache.camel.spring.Main {
     public static void main(String... args) throws Exception {
         Main main = new Main();
         instance = main;
-        main.enableHangupSupport();
         main.run(args);
     }
     

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java b/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java
index a24e3f9..1b45e8d 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java
@@ -83,7 +83,6 @@ public class Main extends MainSupport {
     public static void main(String... args) throws Exception {
         Main main = new Main();
         instance = main;
-        main.enableHangupSupport();
         main.run(args);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/Main.java
----------------------------------------------------------------------
diff --git a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/Main.java b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/Main.java
index 15f16be..a0be881 100644
--- a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/Main.java
+++ b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/Main.java
@@ -76,7 +76,6 @@ public class Main extends MainSupport {
 
     public static void main(String... args) throws Exception {
         Main main = new Main();
-        main.enableHangupSupport();
         main.run(args);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/MyMainAppTest.java
----------------------------------------------------------------------
diff --git a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/MyMainAppTest.java b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/MyMainAppTest.java
index f417dd4..b3fe091 100644
--- a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/MyMainAppTest.java
+++ b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/MyMainAppTest.java
@@ -52,7 +52,6 @@ public class MyMainAppTest {
         main.setIncludeSelfAsBundle(true);
         // we support *.xml to find any blueprint xml files
         main.setDescriptors("org/apache/camel/test/blueprint/xpath/*.xml");
-        main.enableHangupSupport();
 
         // run for 1 second and then stop automatic
         main.setDuration(1000);

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-console/src/main/java/org/apache/camel/example/console/CamelConsoleMain.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-console/src/main/java/org/apache/camel/example/console/CamelConsoleMain.java b/examples/camel-example-console/src/main/java/org/apache/camel/example/console/CamelConsoleMain.java
index 527950a..98f6298 100644
--- a/examples/camel-example-console/src/main/java/org/apache/camel/example/console/CamelConsoleMain.java
+++ b/examples/camel-example-console/src/main/java/org/apache/camel/example/console/CamelConsoleMain.java
@@ -31,8 +31,6 @@ public final class CamelConsoleMain {
         Main main = new Main();
         // configure the location of the Spring XML file
         main.setApplicationContextUri("META-INF/spring/camel-context.xml");
-        // enable hangup support allows Camel to detect when the JVM is terminated
-        main.enableHangupSupport();
         // run and block until Camel is stopped (or JVM terminated)
         main.run();
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpClient.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpClient.java b/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpClient.java
index 41ffca9..5902d32 100644
--- a/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpClient.java
+++ b/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpClient.java
@@ -29,7 +29,6 @@ public final class MyFtpClient {
     public static void main(String[] args) throws Exception {
         Main main = new Main();
         main.addRouteBuilder(new MyFtpClientRouteBuilder());
-        main.enableHangupSupport();
         main.run();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpServer.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpServer.java b/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpServer.java
index 8ad29ed..976d1bc 100644
--- a/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpServer.java
+++ b/examples/camel-example-ftp/src/main/java/org/apache/camel/example/ftp/MyFtpServer.java
@@ -29,7 +29,6 @@ public final class MyFtpServer {
     public static void main(String[] args) throws Exception {
         Main main = new Main();
         main.addRouteBuilder(new MyFtpServerRouteBuilder());
-        main.enableHangupSupport();
         main.run();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/webservice/version/LoanBroker.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/webservice/version/LoanBroker.java b/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/webservice/version/LoanBroker.java
index e406ede..ac2cfd8 100644
--- a/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/webservice/version/LoanBroker.java
+++ b/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/webservice/version/LoanBroker.java
@@ -31,7 +31,6 @@ public final class LoanBroker {
         // create a new main which will boot the Spring XML file
         Main main = new Main();
         main.setApplicationContext(new ClassPathXmlApplicationContext("META-INF/spring/webServiceCamelContext.xml"));
-        main.enableHangupSupport();
         main.run();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSavedSearchClient.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSavedSearchClient.java b/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSavedSearchClient.java
index 8ad629d..9fe1ea2 100644
--- a/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSavedSearchClient.java
+++ b/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSavedSearchClient.java
@@ -30,7 +30,6 @@ public final class SplunkSavedSearchClient {
         LOG.info("About to run splunk-camel integration...");
         Main main = new Main();
         main.addRouteBuilder(new SplunkSavedSearchRouteBuilder());
-        main.enableHangupSupport();
         main.run();
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSearchClient.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSearchClient.java b/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSearchClient.java
index 763ea3d..c13c8e2 100644
--- a/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSearchClient.java
+++ b/examples/camel-example-splunk/src/main/java/org/apache/camel/example/splunk/SplunkSearchClient.java
@@ -30,7 +30,6 @@ public final class SplunkSearchClient {
         LOG.info("About to run splunk-camel integration...");
         Main main = new Main();
         main.addRouteBuilder(new SplunkSearchRouteBuilder());
-        main.enableHangupSupport();
         main.run();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java b/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
index 827a8e9..50b2e33 100644
--- a/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
+++ b/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
@@ -50,9 +50,6 @@ public final class CamelTwitterWebSocketMain {
         // create a new Camel Main so we can easily start Camel
         Main main = new Main();
 
-        // enable hangup support which mean we detect when the JVM terminates, and stop Camel graceful
-        main.enableHangupSupport();
-
         TwitterWebSocketRoute route = new TwitterWebSocketRoute();
 
         // setup twitter application authentication

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/examples/camel-example-widget-gadget-java/src/main/java/org/apache/camel/example/widget/WidgetMain.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-widget-gadget-java/src/main/java/org/apache/camel/example/widget/WidgetMain.java b/examples/camel-example-widget-gadget-java/src/main/java/org/apache/camel/example/widget/WidgetMain.java
index 02404ea..420e483 100644
--- a/examples/camel-example-widget-gadget-java/src/main/java/org/apache/camel/example/widget/WidgetMain.java
+++ b/examples/camel-example-widget-gadget-java/src/main/java/org/apache/camel/example/widget/WidgetMain.java
@@ -37,9 +37,6 @@ public class WidgetMain {
         // add a 2nd route that routes files from src/main/data to the order queue
         main.addRouteBuilder(new CreateOrderRoute());
 
-        // allow to graceful shutdown when the JVM is terminated
-        main.enableHangupSupport();
-
         // start and run Camel (block)
         main.run();
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/tooling/archetypes/camel-archetype-groovy/src/main/resources/archetype-resources/src/main/java/MainApp.java
----------------------------------------------------------------------
diff --git a/tooling/archetypes/camel-archetype-groovy/src/main/resources/archetype-resources/src/main/java/MainApp.java b/tooling/archetypes/camel-archetype-groovy/src/main/resources/archetype-resources/src/main/java/MainApp.java
index 8fa1a51..238b91c 100644
--- a/tooling/archetypes/camel-archetype-groovy/src/main/resources/archetype-resources/src/main/java/MainApp.java
+++ b/tooling/archetypes/camel-archetype-groovy/src/main/resources/archetype-resources/src/main/java/MainApp.java
@@ -36,7 +36,6 @@ public class MainApp {
         System.out.println("\n\n\n\n");
 
         Main main = new Main();
-        main.enableHangupSupport();
         main.addRouteBuilder(new MyRouteBuilder());
         main.run(args);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/tooling/archetypes/camel-archetype-java/src/main/resources/archetype-resources/src/main/java/MainApp.java
----------------------------------------------------------------------
diff --git a/tooling/archetypes/camel-archetype-java/src/main/resources/archetype-resources/src/main/java/MainApp.java b/tooling/archetypes/camel-archetype-java/src/main/resources/archetype-resources/src/main/java/MainApp.java
index 0df78da..45c54e2 100644
--- a/tooling/archetypes/camel-archetype-java/src/main/resources/archetype-resources/src/main/java/MainApp.java
+++ b/tooling/archetypes/camel-archetype-java/src/main/resources/archetype-resources/src/main/java/MainApp.java
@@ -28,7 +28,6 @@ public class MainApp {
      */
     public static void main(String... args) throws Exception {
         Main main = new Main();
-        main.enableHangupSupport();
         main.addRouteBuilder(new MyRouteBuilder());
         main.run(args);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/f56df5ee/tooling/archetypes/camel-archetype-scala/src/main/resources/archetype-resources/src/main/scala/MyRouteMain.scala
----------------------------------------------------------------------
diff --git a/tooling/archetypes/camel-archetype-scala/src/main/resources/archetype-resources/src/main/scala/MyRouteMain.scala b/tooling/archetypes/camel-archetype-scala/src/main/resources/archetype-resources/src/main/scala/MyRouteMain.scala
index 46c78c3..c872d49 100644
--- a/tooling/archetypes/camel-archetype-scala/src/main/resources/archetype-resources/src/main/scala/MyRouteMain.scala
+++ b/tooling/archetypes/camel-archetype-scala/src/main/resources/archetype-resources/src/main/scala/MyRouteMain.scala
@@ -26,8 +26,6 @@ object MyRouteMain extends RouteBuilderSupport {
 
   def main(args: Array[String]) {
     val main = new Main()
-    // enable hangup support so you need to use ctrl + c to stop the running app
-    main.enableHangupSupport()
     // create the CamelContext
     val context = main.getOrCreateCamelContext()
     // add our route using the created CamelContext


[2/2] camel git commit: CAMEL-9330 : Main - enableHangupSupport should be default enabled

Posted by da...@apache.org.
CAMEL-9330 : Main - enableHangupSupport should be default enabled


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d3d75d28
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d3d75d28
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d3d75d28

Branch: refs/heads/master
Commit: d3d75d287b8c185a7beaac84297bdfc8302a4302
Parents: f56df5e
Author: lburgazzoli <lb...@gmail.com>
Authored: Thu Jan 14 18:48:35 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jan 15 13:27:34 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/camel/main/MainSupport.java | 23 +++++++++++++-------
 1 file changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/d3d75d28/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
index 2112444..6ad6830 100644
--- a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
@@ -50,7 +50,6 @@ public abstract class MainSupport extends ServiceSupport {
     protected final List<Option> options = new ArrayList<Option>();
     protected final CountDownLatch latch = new CountDownLatch(1);
     protected final AtomicBoolean completed = new AtomicBoolean(false);
-    protected final HangupInterceptor hangupInterceptor = new HangupInterceptor();
     protected long duration = -1;
     protected TimeUnit timeUnit = TimeUnit.MILLISECONDS;
     protected boolean trace;
@@ -58,18 +57,24 @@ public abstract class MainSupport extends ServiceSupport {
     protected String routeBuilderClasses;
     protected final List<CamelContext> camelContexts = new ArrayList<CamelContext>();
     protected ProducerTemplate camelTemplate;
+    protected boolean hangupInterceptorEnabled = true;
 
     /**
      * A class for intercepting the hang up signal and do a graceful shutdown of the Camel.
      */
     private final class HangupInterceptor extends Thread {
         Logger log = LoggerFactory.getLogger(this.getClass());
+        final MainSupport mainInstance;
+
+        public HangupInterceptor(MainSupport main) {
+            mainInstance = main;
+        }
 
         @Override
         public void run() {
             log.info("Received hang up - stopping the main instance.");
             try {
-                MainSupport.this.stop();
+                mainInstance.stop();
             } catch (Exception ex) {
                 log.warn("Error during stopping the main instance.", ex);
             }
@@ -108,8 +113,6 @@ public abstract class MainSupport extends ServiceSupport {
                 enableTrace();
             }
         });
-
-        Runtime.getRuntime().addShutdownHook(hangupInterceptor);
     }
 
     /**
@@ -117,6 +120,7 @@ public abstract class MainSupport extends ServiceSupport {
      */
     public void run() throws Exception {
         if (!completed.get()) {
+            internalBeforeStart();
             // if we have an issue starting then propagate the exception to caller
             beforeStart();
             start();
@@ -139,10 +143,7 @@ public abstract class MainSupport extends ServiceSupport {
      * Hangup signal.
      */
     public void disableHangupSupport() {
-        boolean result = Runtime.getRuntime().removeShutdownHook(hangupInterceptor);
-        if (LOG.isDebugEnabled() && result) {
-            LOG.debug("HangupInterceptor ({}) successfully removed", hangupInterceptor);
-        }
+        hangupInterceptorEnabled = false;
     }
 
     /**
@@ -185,6 +186,12 @@ public abstract class MainSupport extends ServiceSupport {
         }
     }
 
+    private void internalBeforeStart() {
+        if (hangupInterceptorEnabled) {
+            Runtime.getRuntime().addShutdownHook(new HangupInterceptor(this));
+        }
+    }
+
     /**
      * Callback to run custom logic before CamelContext is being stopped.
      * <p/>