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 3d2b79b5c2a camel-jbang - Trace should show size of collection/array
3d2b79b5c2a is described below

commit 3d2b79b5c2a9b33e65026ecf4e8848d16e75f4bc
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Oct 4 10:58:10 2023 +0200

    camel-jbang - Trace should show size of collection/array
---
 .../org/apache/camel/support/MessageHelper.java    | 18 ++++++++++++++
 .../core/commands/action/MessageTableHelper.java   | 28 +++++++++++++++-------
 2 files changed, 37 insertions(+), 9 deletions(-)

diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java 
b/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
index bee600108cd..2f6712103f0 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
@@ -24,6 +24,8 @@ import java.io.PrintWriter;
 import java.io.Reader;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.lang.reflect.Array;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
@@ -588,6 +590,14 @@ public final class MessageHelper {
             if (type != null) {
                 sb.append(" type=\"").append(type).append("\"");
             }
+            if (body instanceof Collection) {
+                long size = ((Collection<?>) body).size();
+                sb.append(" size=\"").append(size).append("\"");
+            }
+            if (body != null && body.getClass().isArray()) {
+                int size = Array.getLength(body);
+                sb.append(" size=\"").append(size).append("\"");
+            }
             if (body instanceof StreamCache) {
                 long pos = ((StreamCache) body).position();
                 if (pos != -1) {
@@ -996,6 +1006,14 @@ public final class MessageHelper {
             if (type != null) {
                 jb.put("type", type);
             }
+            if (body instanceof Collection) {
+                long size = ((Collection<?>) body).size();
+                jb.put("size", size);
+            }
+            if (body != null && body.getClass().isArray()) {
+                int size = Array.getLength(body);
+                jb.put("size", size);
+            }
             if (body instanceof StreamCache) {
                 long pos = ((StreamCache) body).position();
                 if (pos != -1) {
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 8e35ad46696..71b2cb84479 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
@@ -166,7 +166,8 @@ public class MessageTableHelper {
             // body and type
             JsonObject jo = root.getMap("body");
             if (jo != null) {
-                TableRow bodyRow = new TableRow("Body", jo.getString("type"), 
null, jo.get("value"), jo.getLong("position"));
+                TableRow bodyRow = new TableRow(
+                        "Body", jo.getString("type"), null, jo.get("value"), 
jo.getLong("size"), jo.getLong("position"));
                 tab5 = AsciiTable.getTable(AsciiTable.NO_BORDERS, 
List.of(bodyRow), Arrays.asList(
                         new Column().dataAlign(HorizontalAlign.LEFT)
                                 .minWidth(showExchangeProperties ? 12 : 
10).with(TableRow::kindAsString),
@@ -239,17 +240,19 @@ public class MessageTableHelper {
         String key;
         Object value;
         Long position;
+        Long size;
 
         TableRow(String kind, String type, String key, Object value) {
-            this(kind, type, key, value, null);
+            this(kind, type, key, value, null, null);
         }
 
-        TableRow(String kind, String type, String key, Object value, Long 
position) {
+        TableRow(String kind, String type, String key, Object value, Long 
size, Long position) {
             this.kind = kind;
             this.type = type;
             this.key = key;
             this.value = value;
             this.position = position;
+            this.size = size;
         }
 
         String valueAsString() {
@@ -378,13 +381,20 @@ public class MessageTableHelper {
             }
             s = "(" + s + ")";
             int l = valueLength();
+            long sz = size != null ? size : -1;
             long p = position != null ? position : -1;
-            if (l != -1 & p != -1) {
-                s = s + " (pos: " + p + " length: " + l + ")";
-            } else if (l != -1) {
-                s = s + " (length: " + l + ")";
-            } else if (p != -1) {
-                s = s + " (pos: " + p + ")";
+            StringBuilder sb = new StringBuilder();
+            if (sz != -1) {
+                sb.append(" size: ").append(sz);
+            }
+            if (p != -1) {
+                sb.append(" pos: ").append(p);
+            }
+            if (l != -1) {
+                sb.append(" bytes: ").append(l);
+            }
+            if (!sb.isEmpty()) {
+                s = s + " (" + sb.toString().trim() + ")";
             }
             if (loggingColor) {
                 s = 
Ansi.ansi().fgBrightDefault().a(Ansi.Attribute.INTENSITY_FAINT).a(s).reset().toString();

Reply via email to