Author: ningjiang
Date: Sat Dec 17 13:03:39 2011
New Revision: 1215482

URL: http://svn.apache.org/viewvc?rev=1215482&view=rev
Log:
CAMEL-4790 Using the CamelContext.stopRoute(routeId) should not remove the 
route from context

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RouteRemoveTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteService.java?rev=1215482&r1=1215481&r2=1215482&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteService.java 
(original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteService.java 
Sat Dec 17 13:03:39 2011
@@ -214,8 +214,9 @@ public class RouteService extends ChildS
             // fire event
             EventHelper.notifyRouteStopped(camelContext, route);
         }
-
-        camelContext.removeRouteCollection(routes);
+        if (isRemovingRoutes()) {
+            camelContext.removeRouteCollection(routes);
+        }
         // need to warm up again
         warmUpDone.set(false);
     }
@@ -238,7 +239,9 @@ public class RouteService extends ChildS
         for (LifecycleStrategy strategy : 
camelContext.getLifecycleStrategies()) {
             strategy.onRoutesRemove(routes);
         }
-
+        
+        camelContext.removeRouteCollection(routes);
+        
         // clear inputs on shutdown
         inputs.clear();
         warmUpDone.set(false);

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RouteRemoveTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RouteRemoveTest.java?rev=1215482&r1=1215481&r2=1215482&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RouteRemoveTest.java 
(original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RouteRemoveTest.java 
Sat Dec 17 13:03:39 2011
@@ -17,6 +17,7 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 
@@ -25,6 +26,17 @@ import org.apache.camel.component.mock.M
  */
 public class RouteRemoveTest extends ContextTestSupport {
 
+    public void testStopRouteOnContext() throws Exception {
+        assertEquals(ServiceStatus.Started, ((DefaultRoute) 
context.getRoute("foo")).getStatus());
+        assertEquals(ServiceStatus.Started, context.getRouteStatus("foo"));
+        
+        context.stopRoute("foo");
+        
+        assertEquals(ServiceStatus.Stopped, ((DefaultRoute) 
context.getRoute("foo")).getStatus());
+        assertEquals(ServiceStatus.Stopped, context.getRouteStatus("foo"));
+    }
+    
+
     public void testRemove() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedBodiesReceived("A");


Reply via email to