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 2023/03/05 10:54:02 UTC

[camel] 02/02: CAMEL-19087: camel trace - Added pretty option

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 93e3d74d5f43568879e458661fcf9a70a284b500
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 5 11:53:39 2023 +0100

    CAMEL-19087: camel trace - Added pretty option
---
 .../core/commands/action/CamelTraceAction.java     | 33 +++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java
index 27b4f97d53b..df35b0f42de 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java
@@ -41,6 +41,7 @@ import com.github.freva.asciitable.HorizontalAlign;
 import com.github.freva.asciitable.OverflowBehaviour;
 import org.apache.camel.catalog.impl.TimePatternConverter;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.common.JSonHelper;
 import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
@@ -129,6 +130,10 @@ public class CamelTraceAction extends ActionBaseCommand {
                         description = "Only output traces from the latest (follow if necessary until complete and exit)")
     boolean latest;
 
+    @CommandLine.Option(names = { "--pretty" },
+                        description = "Pretty print message body when using JSon format")
+    boolean pretty;
+
     String findAnsi;
 
     private int nameMaxWidth;
@@ -735,7 +740,7 @@ public class CamelTraceAction extends ActionBaseCommand {
         if (bodyRow.value != null) {
             tab6 = AsciiTable.getTable(AsciiTable.NO_BORDERS, List.of(bodyRow), Arrays.asList(
                     new Column().dataAlign(HorizontalAlign.LEFT).maxWidth(160, OverflowBehaviour.NEWLINE)
-                            .with(TableRow::valueAsString)));
+                            .with(b -> pretty ? bodyRow.valueAsStringPretty() : bodyRow.valueAsString())));
         }
         String tab7 = null;
         jo = r.exception;
@@ -893,6 +898,32 @@ public class CamelTraceAction extends ActionBaseCommand {
             return value != null ? value.toString() : "null";
         }
 
+        String valueAsStringPretty() {
+            if (value == null) {
+                return "null";
+            }
+            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);
+                    }
+                } catch (Throwable e) {
+                    // ignore as not json
+                }
+                if (s == null || s.isEmpty()) {
+                    s = value.toString();
+                }
+            }
+            if (s == null) {
+                return "null";
+            }
+            return s;
+        }
+
         String valueAsStringRed() {
             if (value != null) {
                 if (loggingColor) {