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
The following commit(s) were added to refs/heads/main by this push:
new c919f78e778 camel-jbang - Add --output option to debug command.
(#12241)
c919f78e778 is described below
commit c919f78e7783d2dfa28edc08a8e71e871781b399
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Nov 28 16:01:28 2023 +0100
camel-jbang - Add --output option to debug command. (#12241)
---
.../camel/dsl/jbang/core/commands/Debug.java | 26 ++++++++++++
.../core/commands/action/MessageTableHelper.java | 47 +--------------------
.../dsl/jbang/core/common/CamelCommandHelper.java | 48 ++++++++++++++++++++++
3 files changed, 76 insertions(+), 45 deletions(-)
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 ad7ccb612e9..3117e2e909f 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
@@ -20,6 +20,7 @@ import java.io.BufferedReader;
import java.io.Console;
import java.io.File;
import java.io.FileInputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
@@ -31,6 +32,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
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.main.KameletMain;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
@@ -56,6 +58,10 @@ public class Debug extends Run {
description = "To set breakpoint at the given node id
(Multiple ids can be separated by comma). If no breakpoint is set, then the
first route is automatic selected.")
String breakpoint;
+ @CommandLine.Option(names = { "--output" },
+ description = "File to store the current message body
(will override). This allows for manual inspecting the message later.")
+ String output;
+
@CommandLine.Option(names = { "--stop-on-exit" }, defaultValue = "true",
description = "Whether to stop the running Camel on
exit")
boolean stopOnExit = true;
@@ -431,6 +437,26 @@ public class Debug extends Run {
this.waitForUser.set(true);
}
if (this.waitForUser.get()) {
+ // save current message to file
+ if (output != null && this.suspendedRow != null) {
+ JsonObject j = this.suspendedRow.message;
+ if (j != null) {
+ j = j.getMap("body");
+ if (j != null) {
+ String b = j.getString("value");
+ if (b != null) {
+ b = CamelCommandHelper.valueAsStringPretty(b,
false);
+ try {
+ File f = new File(output);
+ IOHelper.writeText(b, f);
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ }
+ }
+ }
+
String msg = " Breakpoint suspended. Press ENTER to
continue.";
if (loggingColor) {
AnsiConsole.out().println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a(msg).reset());
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java
index 6c927821e6e..bf2b88dfcc6 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java
@@ -24,8 +24,7 @@ import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
import com.github.freva.asciitable.HorizontalAlign;
import com.github.freva.asciitable.OverflowBehaviour;
-import org.apache.camel.dsl.jbang.core.common.JSonHelper;
-import org.apache.camel.dsl.jbang.core.common.XmlHelper;
+import org.apache.camel.dsl.jbang.core.common.CamelCommandHelper;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
import org.apache.camel.util.json.Jsoner;
@@ -260,49 +259,7 @@ public class MessageTableHelper {
}
String valueAsStringPretty() {
- if (value == null) {
- return "null";
- }
- boolean json = false;
- String s = value.toString();
- if (!s.isEmpty()) {
- try {
- s = Jsoner.unescape(s);
- if (loggingColor) {
- s = JSonHelper.colorPrint(s, 2, true);
- } else {
- s = JSonHelper.prettyPrint(s, 2);
- }
- if (s != null && !s.isEmpty()) {
- json = true;
- }
- } catch (Exception e) {
- // ignore as not json
- }
- if (s == null || s.isEmpty()) {
- s = value.toString();
- }
- if (!json) {
- // try with xml
- try {
- s = Jsoner.unescape(s);
- if (loggingColor) {
- s = XmlHelper.colorPrint(s, 2, true);
- } else {
- s = XmlHelper.prettyPrint(s, 2);
- }
- } catch (Exception e) {
- // ignore as not xml
- }
- }
- if (s == null || s.isEmpty()) {
- s = value.toString();
- }
- }
- if (s == null) {
- return "null";
- }
- return s;
+ return CamelCommandHelper.valueAsStringPretty(value, loggingColor);
}
String valueAsStringRed() {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CamelCommandHelper.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CamelCommandHelper.java
index 46eb35423b4..26ba2d85884 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CamelCommandHelper.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CamelCommandHelper.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.dsl.jbang.core.common;
+import org.apache.camel.util.json.Jsoner;
+
public final class CamelCommandHelper {
private CamelCommandHelper() {
@@ -39,4 +41,50 @@ public final class CamelCommandHelper {
}
}
+ public static String valueAsStringPretty(Object value, boolean
loggingColor) {
+ if (value == null) {
+ return "null";
+ }
+ boolean json = false;
+ String s = value.toString();
+ if (!s.isEmpty()) {
+ try {
+ s = Jsoner.unescape(s);
+ if (loggingColor) {
+ s = JSonHelper.colorPrint(s, 2, true);
+ } else {
+ s = JSonHelper.prettyPrint(s, 2);
+ }
+ if (s != null && !s.isEmpty()) {
+ json = true;
+ }
+ } catch (Exception e) {
+ // ignore as not json
+ }
+ if (s == null || s.isEmpty()) {
+ s = value.toString();
+ }
+ if (!json) {
+ // try with xml
+ try {
+ s = Jsoner.unescape(s);
+ if (loggingColor) {
+ s = XmlHelper.colorPrint(s, 2, true);
+ } else {
+ s = XmlHelper.prettyPrint(s, 2);
+ }
+ } catch (Exception e) {
+ // ignore as not xml
+ }
+ }
+ if (s == null || s.isEmpty()) {
+ s = value.toString();
+ }
+ }
+ if (s == null) {
+ return "null";
+ }
+ return s;
+ }
+
}