You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/05/13 14:21:48 UTC
(camel) 04/04: CAMEL-20761: camel-jbang debug need to deal with message history from camel 4.7 onwards include current node.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0ae100d3e4a5009325b97b72a3c4552b3ef83e56
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon May 13 16:21:29 2024 +0200
CAMEL-20761: camel-jbang debug need to deal with message history from camel 4.7 onwards include current node.
---
.../camel/impl/engine/CamelInternalProcessor.java | 5 -----
.../apache/camel/impl/console/DebugDevConsole.java | 1 +
.../ROOT/pages/camel-4x-upgrade-guide-4_7.adoc | 8 +++++++
.../camel/dsl/jbang/core/commands/Debug.java | 26 ++++++++++++++++++----
4 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
index 29514649b3c..ea0bc711009 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
@@ -743,11 +743,6 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
}
}
- @Override
- public boolean hasState() {
- return true;
- }
-
}
/**
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
index 4146bdd1b47..4e3dcfb774e 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
@@ -151,6 +151,7 @@ public class DebugDevConsole extends AbstractDevConsole {
BacklogDebugger backlog = getCamelContext().hasService(BacklogDebugger.class);
if (backlog != null) {
+ root.put("version", getCamelContext().getVersion());
root.put("enabled", backlog.isEnabled());
root.put("standby", backlog.isStandby());
root.put("suspendedMode", backlog.isSuspendMode());
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
index 59fecdd7a5d..19e9dd64d9a 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
@@ -59,6 +59,14 @@ To:
</route>
----
+=== camel-debug
+
+The debugger (using `org.apache.camel.spi.BacklogDebugger`) used for tooling such as IDEA and Visual Studio, is fixed
+to work better out-of-the-box by just having `camel-debug` JAR or `camel-debug-starter` (for Spring Boot) on the classpath.
+
+An internal change is that the MBean operation `messageHistoryOnBreakpointAsXml` on `ManagedBacklogDebugger` now includes
+the current node as last message history, which was expected by IDEA tooling, to make it function again.
+
=== camel-spring-security
The `camel-spring-security` component has been updated to improve readiness for Spring Security 7.x. Since Spring Security 5.8 the `AccessDecisionManager` interface and the related cooperating classes have been deprecated in favor of `AuthorizationManager` based patterns.
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java
index 702489f69e5..49367ed2fd2 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java
@@ -34,6 +34,7 @@ import java.util.concurrent.atomic.AtomicLong;
import org.apache.camel.dsl.jbang.core.commands.action.MessageTableHelper;
import org.apache.camel.dsl.jbang.core.common.CamelCommandHelper;
import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
import org.apache.camel.main.KameletMain;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
@@ -338,6 +339,7 @@ public class Debug extends Run {
// only read if expecting new data
long cnt = jo.getLongOrDefault("debugCounter", 0);
+ String version = jo.getString("version");
if (cnt > debugCounter.get()) {
JsonArray arr = jo.getCollection("suspended");
if (arr != null) {
@@ -351,7 +353,7 @@ public class Debug extends Run {
for (Object o : arr) {
SuspendedRow row = new SuspendedRow();
row.pid = String.valueOf(pid);
- row.name = "TODO";//pid.name;
+ row.version = version;
jo = (JsonObject) o;
row.uid = jo.getLong("uid");
row.first = jo.getBoolean("first");
@@ -551,6 +553,13 @@ public class Debug extends Run {
if (row.history.size() > (i - 2)) {
History h = row.history.get(i - 2);
+ // from camel 4.7 onwards then message history include current line as well
+ // so the history panel needs to output a bit different in this situation
+ boolean top = false;
+ if (row.version != null && VersionHelper.isGE(row.version, "4.7")) {
+ top = h == row.history.get(row.history.size() - 1);
+ }
+
String ids;
if (source) {
ids = locationAndLine(h.location, h.line);
@@ -575,12 +584,21 @@ public class Debug extends Run {
}
String fids = String.format("%-30.30s", ids);
- String msg = String.format("%s %10.10s %4d: %s", fids, elapsed, h.line, c);
+ String msg;
+ if (top && !row.last) {
+ msg = String.format("%10.10s %s %4d: %s", "--->", fids, h.line, c);
+ } else {
+ msg = String.format("%10.10s %s %4d: %s", elapsed, fids, h.line, c);
+ }
int len = msg.length();
if (loggingColor) {
fids = String.format("%-30.30s", ids);
fids = Ansi.ansi().fgCyan().a(fids).reset().toString();
- msg = String.format("%s %10.10s %4d: %s", fids, elapsed, h.line, c);
+ if (top && !row.last) {
+ msg = String.format("%10.10s %s %4d: %s", "--->", fids, h.line, c);
+ } else {
+ msg = String.format("%10.10s %s %4d: %s", elapsed, fids, h.line, c);
+ }
}
p.history = msg;
@@ -782,7 +800,7 @@ public class Debug extends Run {
private static class SuspendedRow {
String pid;
- String name;
+ String version;
boolean first;
boolean last;
long uid;