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(

Reply via email to