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 2014/03/30 13:51:00 UTC

[2/2] git commit: CAMEL-7334: Added events for route added/removed to event notifier.

CAMEL-7334: Added events for route added/removed to event notifier.


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

Branch: refs/heads/camel-2.13.x
Commit: 39744db54ca529af59f5a1c785f495245c0374bb
Parents: c96bad2
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Mar 30 13:53:47 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Mar 30 13:54:12 2014 +0200

----------------------------------------------------------------------
 .../org/apache/camel/impl/RouteService.java     |  5 ++
 .../management/event/DefaultEventFactory.java   |  8 ++
 .../camel/management/event/RouteAddedEvent.java | 44 ++++++++++
 .../management/event/RouteRemovedEvent.java     | 44 ++++++++++
 .../java/org/apache/camel/spi/EventFactory.java | 16 ++++
 .../camel/spi/RuntimeEndpointRegistry.java      |  7 +-
 .../java/org/apache/camel/util/EventHelper.java | 56 +++++++++++++
 .../management/EventNotifierEventsTest.java     | 84 +++++++++++---------
 .../EventNotifierFailureHandledEventsTest.java  | 51 ++++++------
 .../MultipleEventNotifierEventsTest.java        | 62 +++++++++------
 .../management/RemoveEventNotifierTest.java     |  4 +-
 11 files changed, 290 insertions(+), 91 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
index 3df2829..0986a71 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
@@ -156,6 +156,9 @@ public class RouteService extends ChildServiceSupport {
                     }
                 }
                 startChildService(route, childServices);
+
+                // fire event
+                EventHelper.notifyRouteAdded(camelContext, route);
             }
 
             // ensure lifecycle strategy is invoked which among others enlist the route in JMX
@@ -273,6 +276,8 @@ public class RouteService extends ChildServiceSupport {
                     routePolicy.onRemove(route);
                 }
             }
+            // fire event
+            EventHelper.notifyRouteRemoved(camelContext, route);
         }
 
         // need to call onRoutesRemove when the CamelContext is shutting down or Route is shutdown

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java b/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
index fabe071..6019b72 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
@@ -72,6 +72,14 @@ public class DefaultEventFactory implements EventFactory {
         return new RouteStoppedEvent(route);
     }
 
+    public EventObject createRouteAddedEvent(Route route) {
+        return new RouteAddedEvent(route);
+    }
+
+    public EventObject createRouteRemovedEvent(Route route) {
+        return new RouteRemovedEvent(route);
+    }
+
     public EventObject createExchangeCreatedEvent(Exchange exchange) {
         return new ExchangeCreatedEvent(exchange);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
new file mode 100644
index 0000000..8e19394
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.management.event;
+
+import java.util.EventObject;
+
+import org.apache.camel.Route;
+
+/**
+ * @version 
+ */
+public class RouteAddedEvent extends EventObject {
+
+    private static final long serialVersionUID = 9155960708789798708L;
+    private final Route route;
+
+    public RouteAddedEvent(Route source) {
+        super(source);
+        this.route = source;
+    }
+
+    public Route getRoute() {
+        return route;
+    }
+
+    @Override
+    public String toString() {
+        return "Added route: " + route.getId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
new file mode 100644
index 0000000..d08a6b3
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.management.event;
+
+import java.util.EventObject;
+
+import org.apache.camel.Route;
+
+/**
+ * @version 
+ */
+public class RouteRemovedEvent extends EventObject {
+
+    private static final long serialVersionUID = 7966471393751298719L;
+    private final Route route;
+
+    public RouteRemovedEvent(Route source) {
+        super(source);
+        this.route = source;
+    }
+
+    public Route getRoute() {
+        return route;
+    }
+
+    @Override
+    public String toString() {
+        return "Removed route: " + route.getId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java b/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
index c4f889f..feeb9d1 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
@@ -120,6 +120,22 @@ public interface EventFactory {
     EventObject createRouteStoppedEvent(Route route);
 
     /**
+     * Creates an {@link EventObject} for {@link Route} has been added successfully.
+     *
+     * @param route the route
+     * @return the created event
+     */
+    EventObject createRouteAddedEvent(Route route);
+
+    /**
+     * Creates an {@link EventObject} for {@link Route} has been removed successfully.
+     *
+     * @param route the route
+     * @return the created event
+     */
+    EventObject createRouteRemovedEvent(Route route);
+
+    /**
      * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has been created
      *
      * @param exchange the exchange

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
index 55be054..dcec8a0 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
@@ -53,20 +53,21 @@ public interface RuntimeEndpointRegistry extends Service {
     void reset();
 
     /**
-     * Number of endpoints in the cache.
+     * Number of endpoints currently in the cache.
      */
     int size();
 
     /**
-     * Gets all the endpoint uris captured during runtime that are in-use.
+     * Gets all the endpoint uris captured during runtime routing that are in-use of the routes.
      *
      * @param includeInputs whether to include route inputs
      */
     List<String> getAllEndpoints(boolean includeInputs);
 
     /**
-     * Gets all the endpoint uris from the given route captured during runtime that are in-use.
+     * Gets all the endpoint uris captured from the given route during runtime routing that are in-use of the routes.
      *
+     * @param routeId       the route id
      * @param includeInputs whether to include route inputs
      */
     List<String> getEndpointsPerRoute(String routeId, boolean includeInputs);

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/main/java/org/apache/camel/util/EventHelper.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/EventHelper.java b/camel-core/src/main/java/org/apache/camel/util/EventHelper.java
index c5206af..a15247c 100644
--- a/camel-core/src/main/java/org/apache/camel/util/EventHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/EventHelper.java
@@ -323,6 +323,62 @@ public final class EventHelper {
         }
     }
 
+    public static void notifyRouteAdded(CamelContext context, Route route) {
+        ManagementStrategy management = context.getManagementStrategy();
+        if (management == null) {
+            return;
+        }
+
+        List<EventNotifier> notifiers = management.getEventNotifiers();
+        if (notifiers == null || notifiers.isEmpty()) {
+            return;
+        }
+
+        for (EventNotifier notifier : notifiers) {
+            if (notifier.isIgnoreRouteEvents()) {
+                continue;
+            }
+
+            EventFactory factory = management.getEventFactory();
+            if (factory == null) {
+                return;
+            }
+            EventObject event = factory.createRouteAddedEvent(route);
+            if (event == null) {
+                return;
+            }
+            doNotifyEvent(notifier, event);
+        }
+    }
+
+    public static void notifyRouteRemoved(CamelContext context, Route route) {
+        ManagementStrategy management = context.getManagementStrategy();
+        if (management == null) {
+            return;
+        }
+
+        List<EventNotifier> notifiers = management.getEventNotifiers();
+        if (notifiers == null || notifiers.isEmpty()) {
+            return;
+        }
+
+        for (EventNotifier notifier : notifiers) {
+            if (notifier.isIgnoreRouteEvents()) {
+                continue;
+            }
+
+            EventFactory factory = management.getEventFactory();
+            if (factory == null) {
+                return;
+            }
+            EventObject event = factory.createRouteRemovedEvent(route);
+            if (event == null) {
+                return;
+            }
+            doNotifyEvent(notifier, event);
+        }
+    }
+
     public static void notifyExchangeCreated(CamelContext context, Exchange exchange) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
             // do not generate events for an notify event

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
index 58f6638..e9d3b42 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
@@ -37,6 +37,8 @@ import org.apache.camel.management.event.ExchangeCreatedEvent;
 import org.apache.camel.management.event.ExchangeFailedEvent;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.management.event.RouteAddedEvent;
+import org.apache.camel.management.event.RouteRemovedEvent;
 import org.apache.camel.management.event.RouteStartedEvent;
 import org.apache.camel.management.event.RouteStoppedEvent;
 import org.apache.camel.support.EventNotifierSupport;
@@ -84,26 +86,30 @@ public class EventNotifierEventsTest extends ContextTestSupport {
 
         assertMockEndpointsSatisfied();
 
-        assertEquals(12, events.size());
+        assertEquals(14, events.size());
         assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
-        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
-        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(5));
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(1));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(2));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(3));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(4));
+        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(5));
+        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(7));
         assertIsInstanceOf(ExchangeSentEvent.class, events.get(9));
-        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(10));
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(11));
+        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(12));
 
         // this is the sent using the produce template to start the test
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(11));
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(13));
 
         context.stop();
 
-        assertEquals(16, events.size());
-        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(12));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(13));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(14));
-        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(15));
+        assertEquals(20, events.size());
+        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(14));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(15));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(16));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(17));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(18));
+        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(19));
     }
 
     public void testExchangeFailed() throws Exception {
@@ -115,45 +121,51 @@ public class EventNotifierEventsTest extends ContextTestSupport {
             assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
         }
 
-        assertEquals(8, events.size());
+        assertEquals(10, events.size());
         assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
-        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
-        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(4));
-        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(5));
-        assertIsInstanceOf(ExchangeFailedEvent.class, events.get(6));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(1));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(2));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(3));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(4));
+        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(5));
+        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(6));
+        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(7));
+        assertIsInstanceOf(ExchangeFailedEvent.class, events.get(8));
         // this is the sent using the produce template to start the test
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(9));
 
         context.stop();
 
-        assertEquals(12, events.size());
-        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(8));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(9));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(10));
-        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(11));
+        assertEquals(16, events.size());
+        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(10));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(11));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(12));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(13));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(14));
+        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(15));
     }
 
     public void testSuspendResume() throws Exception {
-        assertEquals(4, events.size());
+        assertEquals(6, events.size());
         assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
-        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(1));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(2));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(3));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(4));
+        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(5));
 
         context.suspend();
 
-        assertEquals(6, events.size());
-        assertIsInstanceOf(CamelContextSuspendingEvent.class, events.get(4));
+        assertEquals(8, events.size());
+        assertIsInstanceOf(CamelContextSuspendingEvent.class, events.get(6));
         // notice direct component is not suspended (as they are internal)
-        assertIsInstanceOf(CamelContextSuspendedEvent.class, events.get(5));
+        assertIsInstanceOf(CamelContextSuspendedEvent.class, events.get(7));
 
         context.resume();
 
-        assertEquals(8, events.size());
-        assertIsInstanceOf(CamelContextResumingEvent.class, events.get(6));
-        assertIsInstanceOf(CamelContextResumedEvent.class, events.get(7));
+        assertEquals(10, events.size());
+        assertIsInstanceOf(CamelContextResumingEvent.class, events.get(8));
+        assertIsInstanceOf(CamelContextResumedEvent.class, events.get(9));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
index fe31f7d..5888018 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
@@ -31,6 +31,7 @@ import org.apache.camel.management.event.ExchangeCreatedEvent;
 import org.apache.camel.management.event.ExchangeFailureHandledEvent;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.management.event.RouteAddedEvent;
 import org.apache.camel.management.event.RouteStartedEvent;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.support.EventNotifierSupport;
@@ -91,25 +92,26 @@ public class EventNotifierFailureHandledEventsTest extends ContextTestSupport {
         template.sendBody("direct:start", "Hello World");
         assertMockEndpointsSatisfied();
 
-        assertEquals(10, events.size());
+        assertEquals(11, events.size());
         assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
-        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(2));
-        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(3));
-        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(4));
-        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(5));
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(6));
-
-        ExchangeFailureHandledEvent e = assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(7));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(1));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
+        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
+        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(4));
+        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(5));
+        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(6));
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+
+        ExchangeFailureHandledEvent e = assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(8));
         assertEquals("should be DLC", true, e.isDeadLetterChannel());
         SendProcessor send = assertIsInstanceOf(SendProcessor.class, e.getFailureHandler());
         assertEquals("mock://dead", send.getDestination().getEndpointUri());
 
         // dead letter channel will mark the exchange as completed
-        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(8));
+        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(9));
         // and the last event should be the direct:start
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(9));
-        ExchangeSentEvent sent = (ExchangeSentEvent) events.get(9);
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(10));
+        ExchangeSentEvent sent = (ExchangeSentEvent) events.get(10);
         assertEquals("direct://start", sent.getEndpoint().getEndpointUri());
     }
 
@@ -128,23 +130,24 @@ public class EventNotifierFailureHandledEventsTest extends ContextTestSupport {
         template.sendBody("direct:start", "Hello World");
         assertMockEndpointsSatisfied();
 
-        assertEquals(10, events.size());
+        assertEquals(11, events.size());
         assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
-        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(2));
-        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(3));
-        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(4));
-        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(5));
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(6));
-
-        ExchangeFailureHandledEvent e = assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(7));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(1));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
+        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
+        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(4));
+        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(5));
+        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(6));
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+
+        ExchangeFailureHandledEvent e = assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(8));
         assertEquals("should NOT be DLC", false, e.isDeadLetterChannel());
 
         // onException will handle the exception
-        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(8));
+        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(9));
         // and the last event should be the direct:start
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(9));
-        ExchangeSentEvent sent = (ExchangeSentEvent) events.get(9);
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(10));
+        ExchangeSentEvent sent = (ExchangeSentEvent) events.get(10);
         assertEquals("direct://start", sent.getEndpoint().getEndpointUri());
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
index a081f4e..21709e2 100644
--- a/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
@@ -33,6 +33,8 @@ import org.apache.camel.management.event.ExchangeCreatedEvent;
 import org.apache.camel.management.event.ExchangeFailedEvent;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.management.event.RouteAddedEvent;
+import org.apache.camel.management.event.RouteRemovedEvent;
 import org.apache.camel.management.event.RouteStartedEvent;
 import org.apache.camel.management.event.RouteStoppedEvent;
 import org.apache.camel.support.EventNotifierSupport;
@@ -107,19 +109,21 @@ public class MultipleEventNotifierEventsTest extends ContextTestSupport {
 
         assertMockEndpointsSatisfied();
 
-        assertEquals(12, events.size());
+        assertEquals(14, events.size());
         assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
-        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
-        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(4));
-        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(5));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(1));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(2));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(3));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(4));
+        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(5));
         assertIsInstanceOf(ExchangeSendingEvent.class, events.get(6));
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(7));
         assertIsInstanceOf(ExchangeSendingEvent.class, events.get(8));
         assertIsInstanceOf(ExchangeSentEvent.class, events.get(9));
-        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(10));
+        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(10));
         assertIsInstanceOf(ExchangeSentEvent.class, events.get(11));
+        assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(12));
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(13));
 
         assertEquals(8, events2.size());
         assertIsInstanceOf(ExchangeSendingEvent.class, events2.get(0));
@@ -133,11 +137,13 @@ public class MultipleEventNotifierEventsTest extends ContextTestSupport {
 
         context.stop();
 
-        assertEquals(16, events.size());
-        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(12));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(13));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(14));
-        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(15));
+        assertEquals(20, events.size());
+        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(14));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(15));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(16));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(17));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(18));
+        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(19));
 
         assertEquals(8, events2.size());
     }
@@ -151,15 +157,17 @@ public class MultipleEventNotifierEventsTest extends ContextTestSupport {
             assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
         }
 
-        assertEquals(8, events.size());
+        assertEquals(10, events.size());
         assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
-        assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
-        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
-        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(4));
-        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(5));
-        assertIsInstanceOf(ExchangeFailedEvent.class, events.get(6));
-        assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(1));
+        assertIsInstanceOf(RouteAddedEvent.class, events.get(2));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(3));
+        assertIsInstanceOf(RouteStartedEvent.class, events.get(4));
+        assertIsInstanceOf(CamelContextStartedEvent.class, events.get(5));
+        assertIsInstanceOf(ExchangeSendingEvent.class, events.get(6));
+        assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(7));
+        assertIsInstanceOf(ExchangeFailedEvent.class, events.get(8));
+        assertIsInstanceOf(ExchangeSentEvent.class, events.get(9));
 
         assertEquals(4, events2.size());
 
@@ -169,11 +177,13 @@ public class MultipleEventNotifierEventsTest extends ContextTestSupport {
         assertIsInstanceOf(ExchangeFailedEvent.class, events2.get(2));
         assertIsInstanceOf(ExchangeSentEvent.class, events2.get(3));
 
-        assertEquals(12, events.size());
-        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(8));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(9));
-        assertIsInstanceOf(RouteStoppedEvent.class, events.get(10));
-        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(11));
+        assertEquals(16, events.size());
+        assertIsInstanceOf(CamelContextStoppingEvent.class, events.get(10));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(11));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(12));
+        assertIsInstanceOf(RouteStoppedEvent.class, events.get(13));
+        assertIsInstanceOf(RouteRemovedEvent.class, events.get(14));
+        assertIsInstanceOf(CamelContextStoppedEvent.class, events.get(15));
 
         assertEquals(4, events2.size());
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/39744db5/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
index 10729ff..576141e 100644
--- a/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
@@ -72,7 +72,7 @@ public class RemoveEventNotifierTest extends ContextTestSupport {
         template.sendBody("direct:start", "Hello World");
         assertMockEndpointsSatisfied();
 
-        assertEquals(11, events.size());
+        assertEquals(12, events.size());
 
         // remove and we should not get new events
         context.getManagementStrategy().removeEventNotifier(notifier);
@@ -82,7 +82,7 @@ public class RemoveEventNotifierTest extends ContextTestSupport {
         template.sendBody("direct:start", "Bye World");
         assertMockEndpointsSatisfied();
 
-        assertEquals(11, events.size());
+        assertEquals(12, events.size());
     }
 
     @Override