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/09/20 14:13:37 UTC

svn commit: r1173106 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/impl/DefaultCamelContext.java test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java

Author: davsclaus
Date: Tue Sep 20 12:13:37 2011
New Revision: 1173106

URL: http://svn.apache.org/viewvc?rev=1173106&view=rev
Log:
CAMEL-4467: LifecycleStrategy should be started/stopped when CamelContext is starting/stopping

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java
      - copied, changed from r1172982, camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=1173106&r1=1173105&r2=1173106&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Tue Sep 20 12:13:37 2011
@@ -1415,6 +1415,7 @@ public class DefaultCamelContext extends
         getManagementStrategy().start();
 
         // start lifecycle strategies
+        ServiceHelper.startServices(lifecycleStrategies);
         Iterator<LifecycleStrategy> it = lifecycleStrategies.iterator();
         while (it.hasNext()) {
             LifecycleStrategy strategy = it.next();
@@ -1526,6 +1527,8 @@ public class DefaultCamelContext extends
 
         // shutdown management as the last one
         shutdownServices(managementStrategy);
+        shutdownServices(lifecycleStrategies);
+        lifecycleStrategies.clear();
 
         // stop the lazy created so they can be re-created on restart
         forceStopLazyInitialization();

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java (from r1172982, camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java&r1=1172982&r2=1173106&rev=1173106&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java Tue Sep 20 12:13:37 2011
@@ -17,13 +17,14 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Service;
 import org.apache.camel.TestSupport;
 import org.apache.camel.util.jndi.JndiContext;
 
 /**
  * @version 
  */
-public class LifecycleStrategyFailOnStartupTest extends TestSupport {
+public class LifecycleStrategyServiceTest extends TestSupport {
 
     private MyLifecycleStrategy dummy1 = new MyLifecycleStrategy();
 
@@ -33,21 +34,32 @@ public class LifecycleStrategyFailOnStar
         return context;
     }
 
-    public void testLifecycleStrategyFailOnStartup() throws Exception {
+    public void testLifecycleStrategyService() throws Exception {
+        assertEquals(false, dummy1.isStarted());
+
         CamelContext context = createCamelContext();
-        try {
-            context.start();
-            fail("Should have thrown exception");
-        } catch (IllegalArgumentException e) {
-            assertEquals("Forced", e.getMessage());
-        }
+        context.start();
+        assertEquals(true, dummy1.isStarted());
+        context.stop();
+        assertEquals(false, dummy1.isStarted());
     }
 
-    private static class MyLifecycleStrategy extends DummyLifecycleStrategy {
+    private static class MyLifecycleStrategy extends DummyLifecycleStrategy implements Service {
+
+        private volatile boolean started;
+
+        @Override
+        public void start() throws Exception {
+            started = true;
+        }
 
         @Override
-        public void onContextStart(CamelContext context) {
-            throw new IllegalArgumentException("Forced");
+        public void stop() throws Exception {
+            started = false;
+        }
+
+        public boolean isStarted() {
+            return started;
         }
     }