This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch console in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2b61f07477e3a06901757b25ec097df8b623e4ac Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Dec 28 16:12:27 2021 +0100 CAMEL-17384: Developer Console SPI --- .../impl/event/CamelContextResumeFailureEvent.java | 2 +- .../event/CamelContextStartupFailureEvent.java | 2 +- .../impl/event/CamelContextStopFailureEvent.java | 2 +- .../camel/impl/event/ExchangeCompletedEvent.java | 2 +- .../camel/impl/event/ExchangeCreatedEvent.java | 2 +- .../camel/impl/event/ExchangeFailedEvent.java | 4 +- .../impl/event/ExchangeFailureHandledEvent.java | 14 ++-- .../impl/event/ExchangeFailureHandlingEvent.java | 6 +- .../camel/impl/event/ExchangeRedeliveryEvent.java | 5 +- .../camel/impl/event/ExchangeSendingEvent.java | 2 +- .../apache/camel/impl/event/ExchangeSentEvent.java | 5 +- .../apache/camel/impl/event/RouteAddedEvent.java | 2 +- .../camel/impl/event/RouteReloadedEvent.java | 2 +- .../apache/camel/impl/event/RouteRemovedEvent.java | 2 +- .../apache/camel/impl/event/RouteStartedEvent.java | 2 +- .../camel/impl/event/RouteStartingEvent.java | 2 +- .../apache/camel/impl/event/RouteStoppedEvent.java | 2 +- .../camel/impl/event/RouteStoppingEvent.java | 2 +- .../impl/event/ServiceStartupFailureEvent.java | 2 +- .../camel/impl/event/ServiceStopFailureEvent.java | 2 +- .../camel/impl/event/StepCompletedEvent.java | 2 +- .../apache/camel/impl/event/StepFailedEvent.java | 2 +- .../apache/camel/impl/event/StepStartedEvent.java | 2 +- .../services/org/apache/camel/dev-console/event | 2 + .../camel/impl/console/AbstractDevConsole.java | 3 +- .../impl/console/DefaultDevConsoleRegistry.java | 18 ++++- .../apache/camel/impl/console/EventConsole.java | 93 ++++++++++++++++++++++ .../java/org/apache/camel/support/EventHelper.java | 2 +- 28 files changed, 149 insertions(+), 39 deletions(-) diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java index 5adac86..90e27dc 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java @@ -36,6 +36,6 @@ public class CamelContextResumeFailureEvent extends AbstractContextEvent impleme @Override public String toString() { - return "Failed to resume Camel: " + getContext().getName() + " due to " + cause.getMessage(); + return "Failed to resume CamelContext: " + getContext().getName() + " due to " + cause.getMessage(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java index c13ca37..3de5066 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java @@ -37,6 +37,6 @@ public class CamelContextStartupFailureEvent extends AbstractContextEvent @Override public String toString() { - return "Failed to start Camel: " + getContext().getName() + " due to " + cause.getMessage(); + return "CamelContext startup failure: " + getContext().getName() + " due to " + cause.getMessage(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java index 0e1db96..190982c 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java @@ -36,6 +36,6 @@ public class CamelContextStopFailureEvent extends AbstractContextEvent implement @Override public String toString() { - return "Failed to stop Camel: " + getContext().getName() + " due to " + cause.getMessage(); + return "Failed to stop CamelContext: " + getContext().getName() + " due to " + cause.getMessage(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java index eb34246..68d12ff 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java @@ -28,6 +28,6 @@ public class ExchangeCompletedEvent extends AbstractExchangeEvent implements Cam @Override public String toString() { - return getExchange().getExchangeId() + " exchange completed: " + getExchange(); + return getExchange().getExchangeId() + ": Completed exchange"; } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java index 625b4e5..a946d11 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java @@ -34,6 +34,6 @@ public class ExchangeCreatedEvent extends AbstractExchangeEvent implements Camel @Override public String toString() { - return getExchange().getExchangeId() + " exchange created: " + getExchange(); + return getExchange().getExchangeId() + ": Created exchange"; } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java index 8c74a21..d6dd010 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java @@ -35,9 +35,9 @@ public class ExchangeFailedEvent extends AbstractExchangeEvent implements CamelE public String toString() { Exception cause = getExchange().getException(); if (cause != null) { - return getExchange().getExchangeId() + " exchange failure: " + getExchange() + " cause " + cause; + return getExchange().getExchangeId() + ": Failed exchange due to " + cause.getMessage(); } else { - return getExchange().getExchangeId() + " exchange failure: " + getExchange(); + return getExchange().getExchangeId() + ": Failed exchange"; } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java index 9bd4bb8..ae70056 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java @@ -65,13 +65,15 @@ public class ExchangeFailureHandledEvent extends AbstractExchangeEvent implement @Override public String toString() { - if (isDeadLetterChannel()) { - String uri = URISupport.sanitizeUri(deadLetterUri); - return getExchange().getExchangeId() + " exchange failed: " + getExchange() - + " but was handled by dead letter channel: " + uri; + if (isHandled()) { + if (isDeadLetterChannel()) { + String uri = URISupport.sanitizeUri(deadLetterUri); + return getExchange().getExchangeId() + ": Failed and handled by dead letter channel: " + uri; + } else { + return getExchange().getExchangeId() + ": Failed and handled by error handler"; + } } else { - return getExchange().getExchangeId() + " exchange failed: " + getExchange() - + " but was processed by failure processor: " + failureHandler; + return getExchange().getExchangeId() + ": Continued and continued"; } } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java index 39ee3b6..4666fa2 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java @@ -55,11 +55,9 @@ public class ExchangeFailureHandlingEvent extends AbstractExchangeEvent implemen public String toString() { if (isDeadLetterChannel()) { String uri = URISupport.sanitizeUri(deadLetterUri); - return getExchange().getExchangeId() + " exchange failed: " + getExchange() - + " but is being handled by dead letter channel: " + uri; + return getExchange().getExchangeId() + ": Failed and will be handled by dead letter channel: " + uri; } else { - return getExchange().getExchangeId() + " exchange failed: " + getExchange() - + " but is being processed by failure processor: " + failureHandler; + return getExchange().getExchangeId() + ": Failed and will be handled by error handler"; } } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java index deb8b02..2ea34d3 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java @@ -38,10 +38,9 @@ public class ExchangeRedeliveryEvent extends AbstractExchangeEvent implements Ca public String toString() { Exception cause = getExchange().getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class); if (cause != null) { - return getExchange().getExchangeId() + " exchange redelivery: " + getExchange() + " attempt " + attempt + " cause " - + cause; + return getExchange().getExchangeId() + ": Redelivery attempt: " + attempt + " caused by: " + cause.getMessage(); } else { - return getExchange().getExchangeId() + " exchange redelivery: " + getExchange() + " attempt " + attempt; + return getExchange().getExchangeId() + ": Redelivery attempt: " + attempt; } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java index 41b225e..5937de3 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java @@ -52,7 +52,7 @@ public class ExchangeSendingEvent extends AbstractExchangeEvent implements Camel @Override public String toString() { - return getExchange().getExchangeId() + " exchange " + getExchange() + " sending to: " + endpoint; + return getExchange().getExchangeId() + ": Sending to: " + endpoint; } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java index b68ece1..eb82d15 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java @@ -19,6 +19,7 @@ package org.apache.camel.impl.event; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.spi.CamelEvent; +import org.apache.camel.util.TimeUtils; /** * Event for <b>after</b> an {@link Exchange} has been sent to an {@link Endpoint}. The {@link ExchangeSentEvent} is an @@ -54,8 +55,8 @@ public class ExchangeSentEvent extends AbstractExchangeEvent implements CamelEve @Override public String toString() { - return getExchange().getExchangeId() + " exchange " + getExchange() + " sent to: " + endpoint + " took: " + timeTaken - + " ms."; + String took = TimeUtils.printDuration(timeTaken); + return getExchange().getExchangeId() + ": Sent to: " + endpoint + " (took: " + took + ")"; } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java index 8f39424..004cfda 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java @@ -29,6 +29,6 @@ public class RouteAddedEvent extends AbstractRouteEvent implements CamelEvent.Ro @Override public String toString() { - return "Added route: " + getRoute().getId(); + return "Route added: " + getRoute().getId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java index de2ea8c..eeb5a30 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java @@ -44,6 +44,6 @@ public class RouteReloadedEvent extends AbstractRouteEvent implements CamelEvent @Override public String toString() { - return "Reloaded route: " + getRoute().getId(); + return "Route reloaded: " + getRoute().getId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java index 0cceaac..9f50e16 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java @@ -29,6 +29,6 @@ public class RouteRemovedEvent extends AbstractRouteEvent implements CamelEvent. @Override public String toString() { - return "Removed route: " + getRoute().getId(); + return "Route removed: " + getRoute().getId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java index 2a2ad1e..6206f44 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java @@ -28,6 +28,6 @@ public class RouteStartedEvent extends AbstractRouteEvent implements CamelEvent. @Override public String toString() { - return "Started route: " + getRoute().getId(); + return "Route started: " + getRoute().getId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartingEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartingEvent.java index 73c5a8d..19c696c 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartingEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStartingEvent.java @@ -28,6 +28,6 @@ public class RouteStartingEvent extends AbstractRouteEvent implements CamelEvent @Override public String toString() { - return "Starting route: " + getRoute().getId(); + return "Route starting: " + getRoute().getId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java index 4dc0008..45e837d 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java @@ -28,6 +28,6 @@ public class RouteStoppedEvent extends AbstractRouteEvent implements CamelEvent. @Override public String toString() { - return "Stopped route: " + getRoute().getId(); + return "Route stopped: " + getRoute().getId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppingEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppingEvent.java index 23e626e..24e6771 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppingEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteStoppingEvent.java @@ -28,6 +28,6 @@ public class RouteStoppingEvent extends AbstractRouteEvent implements CamelEvent @Override public String toString() { - return "Stopping route: " + getRoute().getId(); + return "Route stopping: " + getRoute().getId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java index 515b878..3095ccf 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java @@ -51,6 +51,6 @@ public class ServiceStartupFailureEvent extends EventObject implements CamelEven @Override public String toString() { - return "Failure to start service: " + service + " due to " + cause.getMessage(); + return "Service startup failure: " + service + " due to " + cause.getMessage(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java index f512d26..f904b99 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java @@ -51,6 +51,6 @@ public class ServiceStopFailureEvent extends EventObject implements CamelEvent.S @Override public String toString() { - return "Failure to stop service: " + service + " due to " + cause.getMessage(); + return "Service stop failure: " + service + " due to " + cause.getMessage(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/StepCompletedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/StepCompletedEvent.java index d90b195..5020c57 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/StepCompletedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/StepCompletedEvent.java @@ -30,6 +30,6 @@ public class StepCompletedEvent extends AbstractStepEvent implements CamelEvent. @Override public String toString() { - return "Step[" + getStepId() + "] completed"; + return "Step completed: " + getStepId(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/StepFailedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/StepFailedEvent.java index 89f1df0..17275f1 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/StepFailedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/StepFailedEvent.java @@ -35,6 +35,6 @@ public class StepFailedEvent extends AbstractStepEvent implements CamelEvent.Ste @Override public String toString() { - return "Step[" + getStepId() + "] failed"; + return "Step failure: " + getStepId() + " due to " + getCause().getMessage(); } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/StepStartedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/StepStartedEvent.java index 8c3c645..4c5890b 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/StepStartedEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/StepStartedEvent.java @@ -30,6 +30,6 @@ public class StepStartedEvent extends AbstractStepEvent implements CamelEvent.St @Override public String toString() { - return "Step[" + getStepId() + "] started"; + return "Step started: " + getStepId(); } } diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/event b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/event new file mode 100644 index 0000000..fbb283c --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/event @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.impl.console.EventConsole diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/AbstractDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/AbstractDevConsole.java index cba5830..c1d5c06 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/AbstractDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/AbstractDevConsole.java @@ -21,11 +21,12 @@ import java.util.Map; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.console.DevConsole; +import org.apache.camel.support.service.ServiceSupport; /** * Base implementation for {@link DevConsole}. */ -public abstract class AbstractDevConsole implements DevConsole, CamelContextAware { +public abstract class AbstractDevConsole extends ServiceSupport implements DevConsole, CamelContextAware { private CamelContext camelContext; private final Object lock; diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java index 14eb111..2fd5c91 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java @@ -28,6 +28,7 @@ import org.apache.camel.ExtendedCamelContext; import org.apache.camel.console.DevConsole; import org.apache.camel.console.DevConsoleRegistry; import org.apache.camel.console.DevConsoleResolver; +import org.apache.camel.support.service.ServiceHelper; import org.apache.camel.support.service.ServiceSupport; import org.apache.camel.util.StopWatch; import org.apache.camel.util.TimeUtils; @@ -90,10 +91,23 @@ public class DefaultDevConsoleRegistry extends ServiceSupport implements DevCons @Override protected void doInit() throws Exception { - super.doInit(); - for (DevConsole console : consoles) { CamelContextAware.trySetCamelContext(console, camelContext); + ServiceHelper.initService(console); + } + } + + @Override + protected void doStart() throws Exception { + for (DevConsole console : consoles) { + ServiceHelper.startService(console); + } + } + + @Override + protected void doStop() throws Exception { + for (DevConsole console : consoles) { + ServiceHelper.stopService(console); } } diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java new file mode 100644 index 0000000..bbd2393 --- /dev/null +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.impl.console; + +import java.util.ArrayDeque; +import java.util.Map; +import java.util.Queue; + +import org.apache.camel.spi.CamelEvent; +import org.apache.camel.spi.annotations.DevConsole; +import org.apache.camel.support.EventNotifierSupport; + +@DevConsole("event") +public class EventConsole extends AbstractDevConsole { + + private int capacity = 25; + + private final Queue<CamelEvent> events = new ArrayDeque<>(capacity); + private final Queue<CamelEvent.ExchangeEvent> exchangeEvents = new ArrayDeque<>(capacity); + private final ConsoleEventNotifier listener = new ConsoleEventNotifier(); + + public EventConsole() { + super("camel", "event"); + } + + @Override + protected void doInit() throws Exception { + getCamelContext().getManagementStrategy().addEventNotifier(listener); + } + + @Override + protected void doShutdown() throws Exception { + getCamelContext().getManagementStrategy().removeEventNotifier(listener); + events.clear(); + } + + @Override + protected Object doCall(MediaType mediaType, Map<String, Object> options) { + // only text is supported + StringBuilder sb = new StringBuilder(); + + if (!events.isEmpty()) { + sb.append(String.format("Last %s Camel Events:", events.size())); + for (CamelEvent event : events) { + sb.append(String.format("\n %s", event)); + } + sb.append("\n"); + } + if (!exchangeEvents.isEmpty()) { + sb.append("\n"); + sb.append(String.format("Last %s Exchange Events:", exchangeEvents.size())); + for (CamelEvent.ExchangeEvent event : exchangeEvents) { + sb.append(String.format("\n %s", event)); + } + sb.append("\n"); + } + + return sb.toString(); + } + + private class ConsoleEventNotifier extends EventNotifierSupport { + + @Override + public void notify(CamelEvent event) throws Exception { + if (event instanceof CamelEvent.ExchangeEvent) { + if (exchangeEvents.size() >= capacity) { + exchangeEvents.poll(); + } + exchangeEvents.add((CamelEvent.ExchangeEvent) event); + } else { + if (events.size() >= capacity) { + events.poll(); + } + events.offer(event); + } + } + + } +} diff --git a/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java index a480ee4..dd05188 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java @@ -844,7 +844,7 @@ public final class EventHelper { } if (((ExtendedExchange) exchange).isNotifyEvent()) { - // do not generate events for an notify event + // do not generate events for notify event return false; }