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 <[email protected]>
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();