This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch kamelet-debug in repository https://gitbox.apache.org/repos/asf/camel.git
commit d6dfd21f8f93c02dc2122b4cd0f5683367986f0d Author: Claus Ibsen <[email protected]> AuthorDate: Wed Nov 15 14:12:48 2023 +0100 CAMEL-20112: camel-core/camel-jbang: Do not debug inside kamelets/rest-dsl as it should be like a black-box and focus only debugging on custom routes. --- .../impl/debugger/DefaultBacklogDebugger.java | 31 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogDebugger.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogDebugger.java index abb841b6c4c..e37fccaecc5 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogDebugger.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogDebugger.java @@ -17,6 +17,7 @@ package org.apache.camel.impl.debugger; import java.util.LinkedHashSet; +import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -28,7 +29,9 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; +import org.apache.camel.ExchangePropertyKey; import org.apache.camel.LoggingLevel; +import org.apache.camel.MessageHistory; import org.apache.camel.NamedNode; import org.apache.camel.NamedRoute; import org.apache.camel.NoTypeConversionAvailableException; @@ -945,17 +948,19 @@ public final class DefaultBacklogDebugger extends ServiceSupport implements Back } @Override + @SuppressWarnings("unchecked") public void onEvent(Exchange exchange, ExchangeEvent event, NamedNode definition) { if (event instanceof ExchangeCompletedEvent || event instanceof CamelEvent.ExchangeFailedEvent) { Throwable cause = null; if (event instanceof CamelEvent.ExchangeFailedEvent fe) { cause = fe.getCause(); } + NamedRoute route = getOriginalRoute(exchange); String completedId = event.getExchange().getExchangeId(); try { if (isSingleStepIncludeStartEnd() && singleStepExchangeId != null && singleStepExchangeId.equals(completedId)) { - doCompleted(exchange, definition, cause); + doCompleted(exchange, definition, route, cause); } } finally { logger.log("ExchangeId: " + completedId + " is completed, so exiting single step mode."); @@ -964,17 +969,33 @@ public final class DefaultBacklogDebugger extends ServiceSupport implements Back } } - private void doCompleted(Exchange exchange, NamedNode definition, Throwable cause) { + private NamedRoute getOriginalRoute(Exchange exchange) { + List<MessageHistory> list = exchange.getProperty(ExchangePropertyKey.MESSAGE_HISTORY, List.class); + if (list != null) { + for (MessageHistory h : list) { + NamedNode n = h.getNode(); + NamedRoute nr = CamelContextHelper.getRoute(n); + if (nr != null) { + boolean skip = nr.isCreatedFromRest() || nr.isCreatedFromTemplate(); + if (!skip) { + return nr; + } + } + } + } + return null; + } + + private void doCompleted(Exchange exchange, NamedNode definition, NamedRoute route, Throwable cause) { // create pseudo-last step in single step mode long timestamp = System.currentTimeMillis(); String toNode = CamelContextHelper.getRouteId(definition); - String routeId = CamelContextHelper.getRouteId(definition); + String routeId = route != null ? route.getRouteId() : toNode; String exchangeId = exchange.getExchangeId(); String messageAsXml = dumpAsXml(exchange); String messageAsJSon = dumpAsJSon(exchange); long uid = debugCounter.incrementAndGet(); - NamedRoute route = CamelContextHelper.getRoute(definition); - String source = LoggerHelper.getLineNumberLoggerName(route); + String source = LoggerHelper.getLineNumberLoggerName(route != null ? route : definition); BacklogTracerEventMessage msg = new DefaultBacklogTracerEventMessage(
