CAMEL-11346: Optimize EventNotifier to indicate if event was notified or not.
This allows us to know if timing via StopWatch is needed which we can then
optimize and not do.


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

Branch: refs/heads/master
Commit: fdfd57d47684ef575f2dc15b9309978aa071890c
Parents: be41ff6
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sat May 27 13:39:14 2017 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sat May 27 13:39:14 2017 +0200

----------------------------------------------------------------------
 .../camel/impl/EventNotifierCallback.java       |  15 +-
 .../org/apache/camel/impl/ProducerCache.java    |  18 +-
 .../org/apache/camel/processor/Enricher.java    |  14 +-
 .../camel/processor/MulticastProcessor.java     |  28 +-
 .../apache/camel/processor/SendProcessor.java   |  20 +-
 .../java/org/apache/camel/util/EventHelper.java | 374 +++++++++++--------
 6 files changed, 276 insertions(+), 193 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fdfd57d4/camel-core/src/main/java/org/apache/camel/impl/EventNotifierCallback.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/EventNotifierCallback.java 
b/camel-core/src/main/java/org/apache/camel/impl/EventNotifierCallback.java
index e186d9a..4732ce0 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EventNotifierCallback.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EventNotifierCallback.java
@@ -30,20 +30,27 @@ public class EventNotifierCallback implements AsyncCallback 
{
     private final StopWatch watch;
     private final Exchange exchange;
     private final Endpoint endpoint;
+    private final boolean sending;
 
     public EventNotifierCallback(AsyncCallback originalCallback, Exchange 
exchange,
             Endpoint endpoint) {
         this.originalCallback = originalCallback;
-        this.watch = new StopWatch();
         this.exchange = exchange;
         this.endpoint = endpoint;
-        EventHelper.notifyExchangeSending(exchange.getContext(), exchange, 
endpoint);
+        this.sending = 
EventHelper.notifyExchangeSending(exchange.getContext(), exchange, endpoint);
+        if (this.sending) {
+            this.watch = new StopWatch();
+        } else {
+            this.watch = null;
+        }
     }
 
     @Override
     public void done(boolean doneSync) {
-        long timeTaken = watch.stop();
-        EventHelper.notifyExchangeSent(exchange.getContext(), exchange, 
endpoint, timeTaken);
+        if (watch != null) {
+            long timeTaken = watch.stop();
+            EventHelper.notifyExchangeSent(exchange.getContext(), exchange, 
endpoint, timeTaken);
+        }
         originalCallback.done(doneSync);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/fdfd57d4/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java 
b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
index faa0f72..a5cdcbf 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
@@ -424,13 +424,19 @@ public class ProducerCache extends ServiceSupport {
 
         final Producer producer = target;
 
-        // record timing for sending the exchange using the producer
-        final StopWatch watch = eventNotifierEnabled && exchange != null ? new 
StopWatch() : null;
 
         try {
+            StopWatch sw = null;
             if (eventNotifierEnabled && exchange != null) {
-                EventHelper.notifyExchangeSending(exchange.getContext(), 
exchange, endpoint);
+                boolean sending = 
EventHelper.notifyExchangeSending(exchange.getContext(), exchange, endpoint);
+                if (sending) {
+                    sw = new StopWatch();
+                }
             }
+
+            // record timing for sending the exchange using the producer
+            final StopWatch watch = sw;
+
             // invoke the callback
             AsyncProcessor asyncProcessor = 
AsyncProcessorConverterHelper.convert(producer);
             return producerCallback.doInAsyncProducer(producer, 
asyncProcessor, exchange, pattern, doneSync -> {
@@ -521,8 +527,10 @@ public class ProducerCache extends ServiceSupport {
                 StopWatch watch = null;
                 try {
                     if (eventNotifierEnabled) {
-                        watch = new StopWatch();
-                        
EventHelper.notifyExchangeSending(exchange.getContext(), exchange, endpoint);
+                        boolean sending = 
EventHelper.notifyExchangeSending(exchange.getContext(), exchange, endpoint);
+                        if (sending) {
+                            watch = new StopWatch();
+                        }
                     }
 
                     CamelInternalProcessor internal = 
prepareInternalProcessor(producer, resultProcessor);

http://git-wip-us.apache.org/repos/asf/camel/blob/fdfd57d4/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java 
b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
index eef072f..d68aa4b 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
@@ -180,9 +180,13 @@ public class Enricher extends ServiceSupport implements 
AsyncProcessor, IdAware,
         final Exchange resourceExchange = createResourceExchange(exchange, 
ExchangePattern.InOut);
         final Endpoint destination = producer.getEndpoint();
 
-        EventHelper.notifyExchangeSending(exchange.getContext(), 
resourceExchange, destination);
+        StopWatch sw = null;
+        boolean sending = 
EventHelper.notifyExchangeSending(exchange.getContext(), resourceExchange, 
destination);
+        if (sending) {
+            sw = new StopWatch();
+        }
         // record timing for sending the exchange using the producer
-        final StopWatch watch = new StopWatch();
+        final StopWatch watch = sw;
         AsyncProcessor ap = AsyncProcessorConverterHelper.convert(producer);
         boolean sync = ap.process(resourceExchange, new AsyncCallback() {
             public void done(boolean doneSync) {
@@ -192,8 +196,10 @@ public class Enricher extends ServiceSupport implements 
AsyncProcessor, IdAware,
                 }
 
                 // emit event that the exchange was sent to the endpoint
-                long timeTaken = watch.stop();
-                EventHelper.notifyExchangeSent(resourceExchange.getContext(), 
resourceExchange, destination, timeTaken);
+                if (watch != null) {
+                    long timeTaken = watch.stop();
+                    
EventHelper.notifyExchangeSent(resourceExchange.getContext(), resourceExchange, 
destination, timeTaken);
+                }
                 
                 if (!isAggregateOnException() && resourceExchange.isFailed()) {
                     // copy resource exchange onto original exchange 
(preserving pattern)

http://git-wip-us.apache.org/repos/asf/camel/blob/fdfd57d4/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java 
b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index b0def97..1085192 100644
--- 
a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ 
b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -677,18 +677,23 @@ public class MulticastProcessor extends ServiceSupport 
implements AsyncProcessor
 
         TracedRouteNodes traced = exchange.getUnitOfWork() != null ? 
exchange.getUnitOfWork().getTracedRouteNodes() : null;
 
-        // compute time taken if sending to another endpoint
-        final StopWatch watch = producer != null ? new StopWatch() : null;
-
         try {
             // prepare tracing starting from a new block
             if (traced != null) {
                 traced.pushBlock();
             }
 
+            StopWatch sw = null;
             if (producer != null) {
-                EventHelper.notifyExchangeSending(exchange.getContext(), 
exchange, producer.getEndpoint());
+                boolean sending = 
EventHelper.notifyExchangeSending(exchange.getContext(), exchange, 
producer.getEndpoint());
+                if (sending) {
+                    sw = new StopWatch();
+                }
             }
+
+            // compute time taken if sending to another endpoint
+            final StopWatch watch = sw;
+
             // let the prepared process it, remember to begin the exchange pair
             AsyncProcessor async = 
AsyncProcessorConverterHelper.convert(processor);
             pair.begin();
@@ -698,7 +703,7 @@ public class MulticastProcessor extends ServiceSupport 
implements AsyncProcessor
                     pair.done();
 
                     // okay we are done, so notify the exchange was sent
-                    if (producer != null) {
+                    if (producer != null && watch != null) {
                         long timeTaken = watch.stop();
                         Endpoint endpoint = producer.getEndpoint();
                         // emit event that the exchange was sent to the 
endpoint
@@ -821,10 +826,6 @@ public class MulticastProcessor extends ServiceSupport 
implements AsyncProcessor
 
         // compute time taken if sending to another endpoint
         StopWatch watch = null;
-        if (producer != null) {
-            watch = new StopWatch();
-        }
-
         try {
             // prepare tracing starting from a new block
             if (traced != null) {
@@ -832,7 +833,10 @@ public class MulticastProcessor extends ServiceSupport 
implements AsyncProcessor
             }
 
             if (producer != null) {
-                EventHelper.notifyExchangeSending(exchange.getContext(), 
exchange, producer.getEndpoint());
+                boolean sending = 
EventHelper.notifyExchangeSending(exchange.getContext(), exchange, 
producer.getEndpoint());
+                if (sending) {
+                    watch = new StopWatch();
+                }
             }
             // let the prepared process it, remember to begin the exchange pair
             AsyncProcessor async = 
AsyncProcessorConverterHelper.convert(processor);
@@ -845,9 +849,9 @@ public class MulticastProcessor extends ServiceSupport 
implements AsyncProcessor
             if (traced != null) {
                 traced.popBlock();
             }
-            if (producer != null) {
-                long timeTaken = watch.stop();
+            if (producer != null && watch != null) {
                 Endpoint endpoint = producer.getEndpoint();
+                long timeTaken = watch.stop();
                 // emit event that the exchange was sent to the endpoint
                 // this is okay to do here in the finally block, as the 
processing is not using the async routing engine
                 //( we invoke it synchronously as parallel async routing is 
too hard)

http://git-wip-us.apache.org/repos/asf/camel/blob/fdfd57d4/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java 
b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
index 8aa1a02..497fb74 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -132,16 +132,20 @@ public class SendProcessor extends ServiceSupport 
implements AsyncProcessor, Tra
         // if we have a producer then use that as its optimized
         if (producer != null) {
 
-            // record timing for sending the exchange using the producer
-            final StopWatch watch = new StopWatch();
-
             final Exchange target = configureExchange(exchange, pattern);
 
-            EventHelper.notifyExchangeSending(exchange.getContext(), target, 
destination);
-            LOG.debug(">>>> {} {}", destination, exchange);
+            final boolean sending = 
EventHelper.notifyExchangeSending(exchange.getContext(), target, destination);
+            StopWatch sw = null;
+            if (sending) {
+                sw = new StopWatch();
+            }
+
+            // record timing for sending the exchange using the producer
+            final StopWatch watch = sw;
 
             boolean sync = true;
             try {
+                LOG.debug(">>>> {} {}", destination, exchange);
                 sync = producer.process(exchange, new AsyncCallback() {
                     @Override
                     public void done(boolean doneSync) {
@@ -149,8 +153,10 @@ public class SendProcessor extends ServiceSupport 
implements AsyncProcessor, Tra
                             // restore previous MEP
                             target.setPattern(existingPattern);
                             // emit event that the exchange was sent to the 
endpoint
-                            long timeTaken = watch.stop();
-                            
EventHelper.notifyExchangeSent(target.getContext(), target, destination, 
timeTaken);
+                            if (watch != null) {
+                                long timeTaken = watch.stop();
+                                
EventHelper.notifyExchangeSent(target.getContext(), target, destination, 
timeTaken);
+                            }
                         } finally {
                             callback.done(doneSync);
                         }

http://git-wip-us.apache.org/repos/asf/camel/blob/fdfd57d4/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 c0f6fee..71458ca 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
@@ -43,22 +43,23 @@ public final class EventHelper {
     private EventHelper() {
     }
 
-    public static void notifyCamelContextStarting(CamelContext context) {
+    public static boolean notifyCamelContextStarting(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -70,29 +71,31 @@ public final class EventHelper {
                 event = factory.createCamelContextStartingEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextStarted(CamelContext context) {
+    public static boolean notifyCamelContextStarted(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -104,29 +107,31 @@ public final class EventHelper {
                 event = factory.createCamelContextStartedEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextStartupFailed(CamelContext context, 
Throwable cause) {
+    public static boolean notifyCamelContextStartupFailed(CamelContext 
context, Throwable cause) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -138,29 +143,31 @@ public final class EventHelper {
                 event = factory.createCamelContextStartupFailureEvent(context, 
cause);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextStopping(CamelContext context) {
+    public static boolean notifyCamelContextStopping(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -172,29 +179,31 @@ public final class EventHelper {
                 event = factory.createCamelContextStoppingEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextStopped(CamelContext context) {
+    public static boolean notifyCamelContextStopped(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -206,29 +215,31 @@ public final class EventHelper {
                 event = factory.createCamelContextStoppedEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextStopFailed(CamelContext context, 
Throwable cause) {
+    public static boolean notifyCamelContextStopFailed(CamelContext context, 
Throwable cause) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -240,29 +251,31 @@ public final class EventHelper {
                 event = factory.createCamelContextStopFailureEvent(context, 
cause);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyServiceStopFailure(CamelContext context, Object 
service, Throwable cause) {
+    public static boolean notifyServiceStopFailure(CamelContext context, 
Object service, Throwable cause) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreServiceEvents()) {
@@ -274,29 +287,31 @@ public final class EventHelper {
                 event = factory.createServiceStopFailureEvent(context, 
service, cause);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyServiceStartupFailure(CamelContext context, 
Object service, Throwable cause) {
+    public static boolean notifyServiceStartupFailure(CamelContext context, 
Object service, Throwable cause) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreServiceEvents()) {
@@ -308,29 +323,31 @@ public final class EventHelper {
                 event = factory.createServiceStartupFailureEvent(context, 
service, cause);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyRouteStarted(CamelContext context, Route route) {
+    public static boolean notifyRouteStarted(CamelContext context, Route 
route) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreRouteEvents()) {
@@ -342,29 +359,31 @@ public final class EventHelper {
                 event = factory.createRouteStartedEvent(route);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyRouteStopped(CamelContext context, Route route) {
+    public static boolean notifyRouteStopped(CamelContext context, Route 
route) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreRouteEvents()) {
@@ -376,29 +395,31 @@ public final class EventHelper {
                 event = factory.createRouteStoppedEvent(route);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyRouteAdded(CamelContext context, Route route) {
+    public static boolean notifyRouteAdded(CamelContext context, Route route) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreRouteEvents()) {
@@ -410,29 +431,31 @@ public final class EventHelper {
                 event = factory.createRouteAddedEvent(route);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyRouteRemoved(CamelContext context, Route route) {
+    public static boolean notifyRouteRemoved(CamelContext context, Route 
route) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreRouteEvents()) {
@@ -444,34 +467,36 @@ public final class EventHelper {
                 event = factory.createRouteRemovedEvent(route);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeCreated(CamelContext context, Exchange 
exchange) {
+    public static boolean notifyExchangeCreated(CamelContext context, Exchange 
exchange) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeCreatedEvent()) {
@@ -483,34 +508,36 @@ public final class EventHelper {
                 event = factory.createExchangeCreatedEvent(exchange);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeDone(CamelContext context, Exchange 
exchange) {
+    public static boolean notifyExchangeDone(CamelContext context, Exchange 
exchange) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeCompletedEvent()) {
@@ -522,34 +549,36 @@ public final class EventHelper {
                 event = factory.createExchangeCompletedEvent(exchange);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeFailed(CamelContext context, Exchange 
exchange) {
+    public static boolean notifyExchangeFailed(CamelContext context, Exchange 
exchange) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeFailedEvents()) {
@@ -561,35 +590,37 @@ public final class EventHelper {
                 event = factory.createExchangeFailedEvent(exchange);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeFailureHandling(CamelContext context, 
Exchange exchange, Processor failureHandler,
+    public static boolean notifyExchangeFailureHandling(CamelContext context, 
Exchange exchange, Processor failureHandler,
                                                      boolean 
deadLetterChannel, String deadLetterUri) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeFailedEvents()) {
@@ -601,35 +632,37 @@ public final class EventHelper {
                 event = factory.createExchangeFailureHandlingEvent(exchange, 
failureHandler, deadLetterChannel, deadLetterUri);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeFailureHandled(CamelContext context, 
Exchange exchange, Processor failureHandler,
+    public static boolean notifyExchangeFailureHandled(CamelContext context, 
Exchange exchange, Processor failureHandler,
                                                     boolean deadLetterChannel, 
String deadLetterUri) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeFailedEvents()) {
@@ -641,34 +674,36 @@ public final class EventHelper {
                 event = factory.createExchangeFailureHandledEvent(exchange, 
failureHandler, deadLetterChannel, deadLetterUri);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeRedelivery(CamelContext context, Exchange 
exchange, int attempt) {
+    public static boolean notifyExchangeRedelivery(CamelContext context, 
Exchange exchange, int attempt) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeFailedEvents()) {
@@ -680,34 +715,36 @@ public final class EventHelper {
                 event = factory.createExchangeRedeliveryEvent(exchange, 
attempt);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeSending(CamelContext context, Exchange 
exchange, Endpoint endpoint) {
+    public static boolean notifyExchangeSending(CamelContext context, Exchange 
exchange, Endpoint endpoint) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeSentEvents()) {
@@ -719,34 +756,36 @@ public final class EventHelper {
                 event = factory.createExchangeSendingEvent(exchange, endpoint);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyExchangeSent(CamelContext context, Exchange 
exchange, Endpoint endpoint, long timeTaken) {
+    public static boolean notifyExchangeSent(CamelContext context, Exchange 
exchange, Endpoint endpoint, long timeTaken) {
         if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) 
{
             // do not generate events for an notify event
-            return;
+            return false;
         }
 
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreExchangeEvents() || 
notifier.isIgnoreExchangeSentEvents()) {
@@ -758,29 +797,31 @@ public final class EventHelper {
                 event = factory.createExchangeSentEvent(exchange, endpoint, 
timeTaken);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextSuspending(CamelContext context) {
+    public static boolean notifyCamelContextSuspending(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -792,29 +833,31 @@ public final class EventHelper {
                 event = factory.createCamelContextSuspendingEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextSuspended(CamelContext context) {
+    public static boolean notifyCamelContextSuspended(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -826,29 +869,31 @@ public final class EventHelper {
                 event = factory.createCamelContextSuspendedEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextResuming(CamelContext context) {
+    public static boolean notifyCamelContextResuming(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -860,29 +905,31 @@ public final class EventHelper {
                 event = factory.createCamelContextResumingEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextResumed(CamelContext context) {
+    public static boolean notifyCamelContextResumed(CamelContext context) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -894,29 +941,31 @@ public final class EventHelper {
                 event = factory.createCamelContextResumedEvent(context);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    public static void notifyCamelContextResumeFailed(CamelContext context, 
Throwable cause) {
+    public static boolean notifyCamelContextResumeFailed(CamelContext context, 
Throwable cause) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
-            return;
+            return false;
         }
 
         EventFactory factory = management.getEventFactory();
         if (factory == null) {
-            return;
+            return false;
         }
 
         List<EventNotifier> notifiers = management.getEventNotifiers();
         if (notifiers == null || notifiers.isEmpty()) {
-            return;
+            return false;
         }
 
+        boolean answer = false;
         EventObject event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isIgnoreCamelContextEvents()) {
@@ -928,14 +977,15 @@ public final class EventHelper {
                 event = factory.createCamelContextResumeFailureEvent(context, 
cause);
                 if (event == null) {
                     // factory could not create event so exit
-                    return;
+                    return false;
                 }
             }
-            doNotifyEvent(notifier, event);
+            answer |= doNotifyEvent(notifier, event);
         }
+        return answer;
     }
 
-    private static void doNotifyEvent(EventNotifier notifier, EventObject 
event) {
+    private static boolean doNotifyEvent(EventNotifier notifier, EventObject 
event) {
         // only notify if notifier is started
         boolean started = true;
         if (notifier instanceof StatefulService) {
@@ -943,12 +993,12 @@ public final class EventHelper {
         }
         if (!started) {
             LOG.debug("Ignoring notifying event {}. The EventNotifier has not 
been started yet: {}", event, notifier);
-            return;
+            return false;
         }
 
         if (!notifier.isEnabled(event)) {
             LOG.trace("Notifier: {} is not enabled for the event: {}", 
notifier, event);
-            return;
+            return false;
         }
 
         try {
@@ -956,6 +1006,8 @@ public final class EventHelper {
         } catch (Throwable e) {
             LOG.warn("Error notifying event " + event + ". This exception will 
be ignored. ", e);
         }
+
+        return true;
     }
 
 }

Reply via email to