Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id DCF9E200C82 for ; Sat, 27 May 2017 14:47:24 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id DB8A9160BC6; Sat, 27 May 2017 12:47:24 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 0C4B0160BDE for ; Sat, 27 May 2017 14:47:22 +0200 (CEST) Received: (qmail 41724 invoked by uid 500); 27 May 2017 12:47:22 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 41567 invoked by uid 99); 27 May 2017 12:47:22 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 27 May 2017 12:47:22 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id C2584E2F47; Sat, 27 May 2017 12:47:21 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: davsclaus@apache.org To: commits@camel.apache.org Date: Sat, 27 May 2017 12:47:24 -0000 Message-Id: In-Reply-To: <7dad4d307ae84e8b8d5da3880785ac06@git.apache.org> References: <7dad4d307ae84e8b8d5da3880785ac06@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [4/6] camel git commit: 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. archived-at: Sat, 27 May 2017 12:47:25 -0000 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 Authored: Sat May 27 13:39:14 2017 +0200 Committer: Claus Ibsen 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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; } }