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/02/18 20:59:10 UTC
[camel] branch main updated: camel-core - Backlog tracer to capture message type and shown in camel-jbang trace command.
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 8fbe97f8bbe camel-core - Backlog tracer to capture message type and shown in camel-jbang trace command.
8fbe97f8bbe is described below
commit 8fbe97f8bbe01797c02e625ebf61c8944f9a4488
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Feb 18 21:58:52 2023 +0100
camel-core - Backlog tracer to capture message type and shown in camel-jbang trace command.
---
.../org/apache/camel/util/MessageHelperTest.java | 7 +--
.../camel/management/BacklogTracerFilterTest.java | 9 ++--
.../management/BacklogTracerIdOnAllNodesTest.java | 6 ++-
.../camel/management/BacklogTracerPatternTest.java | 6 ++-
.../management/BacklogTracerStreamCachingTest.java | 3 +-
.../apache/camel/management/BacklogTracerTest.java | 24 +++++++----
.../ManagedBrowsableEndpointAsXmlTest.java | 50 ++++++++++++++--------
.../org/apache/camel/support/MessageHelper.java | 13 +++---
.../core/commands/action/CamelTraceAction.java | 12 +++---
9 files changed, 84 insertions(+), 46 deletions(-)
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
index fa13148bea2..d78db90ec35 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
@@ -201,7 +201,8 @@ public class MessageHelperTest {
String out = MessageHelper.dumpAsXml(message, false);
- assertEquals("<message exchangeId=\"" + message.getExchange().getExchangeId() + "\" exchangePattern=\"InOnly\">"
+ assertEquals("<message exchangeId=\"" + message.getExchange().getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">"
+ "\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n </headers>\n</message>",
out);
@@ -221,7 +222,8 @@ public class MessageHelperTest {
String out = MessageHelper.dumpAsXml(message, false, 2);
- assertEquals(" <message exchangeId=\"" + message.getExchange().getExchangeId() + "\" exchangePattern=\"InOut\">"
+ assertEquals(" <message exchangeId=\"" + message.getExchange().getExchangeId()
+ + "\" exchangePattern=\"InOut\" type=\"org.apache.camel.support.DefaultMessage\">"
+ "\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n </headers>\n </message>",
out);
@@ -273,7 +275,6 @@ public class MessageHelperTest {
String out = MessageHelper.dumpAsJSon(message);
// xml is escaped in json output
- assertTrue(out.contains("<?xml version=\\\"1.0\\\"?><hi>Hello World<\\/hi>"));
assertTrue(out.contains(message.getExchange().getExchangeId()), "Should contain exchangeId");
context.stop();
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java
index 7e141a3eaf1..6a26f4bdd6f 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java
@@ -74,7 +74,8 @@ public class BacklogTracerFilterTest extends ManagementTestSupport {
BacklogTracerEventMessage event = events.get(0);
assertEquals(null, event.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <headers>\n"
+ " <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n"
+ " </headers>\n"
@@ -84,7 +85,8 @@ public class BacklogTracerFilterTest extends ManagementTestSupport {
BacklogTracerEventMessage event1 = events.get(1);
assertEquals("foo", event1.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <headers>\n"
+ " <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n"
+ " </headers>\n"
@@ -94,7 +96,8 @@ public class BacklogTracerFilterTest extends ManagementTestSupport {
BacklogTracerEventMessage event2 = events.get(2);
assertEquals("bar", event2.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <headers>\n"
+ " <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n"
+ " </headers>\n"
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java
index 91cf01c77a8..c3915532c94 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java
@@ -112,7 +112,8 @@ public class BacklogTracerIdOnAllNodesTest extends ManagementTestSupport {
BacklogTracerEventMessage event1 = events.get(0);
assertEquals(to2.getId(), event1.getToNode());
- assertEquals(" <message exchangeId=\"" + fooExchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + fooExchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Hello World</body>\n"
+ " </message>",
event1.getMessageAsXml());
@@ -125,7 +126,8 @@ public class BacklogTracerIdOnAllNodesTest extends ManagementTestSupport {
event1 = events.get(0);
assertEquals("camel", event1.getToNode());
- assertEquals(" <message exchangeId=\"" + camelExchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + camelExchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Hello Camel</body>\n"
+ " </message>",
event1.getMessageAsXml());
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java
index 1d3e6b95f1c..2317cd8bfd5 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java
@@ -74,14 +74,16 @@ public class BacklogTracerPatternTest extends ManagementTestSupport {
BacklogTracerEventMessage event1 = events.get(0);
assertEquals("foo", event1.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Hello World</body>\n"
+ " </message>",
event1.getMessageAsXml());
BacklogTracerEventMessage event2 = events.get(1);
assertEquals("foo", event2.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Bye World</body>\n"
+ " </message>",
event2.getMessageAsXml());
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java
index b8cf3240ab7..054d9fd25ad 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java
@@ -77,7 +77,8 @@ public class BacklogTracerStreamCachingTest extends ManagementTestSupport {
BacklogTracerEventMessage event1 = events.get(0);
assertEquals("bar", event1.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"org.apache.camel.converter.stream.ByteArrayInputStreamCache\">Bye World</body>\n"
+ " </message>",
event1.getMessageAsXml());
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerTest.java b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerTest.java
index 5fb94f7f15d..e66d3be2d59 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerTest.java
@@ -75,14 +75,16 @@ public class BacklogTracerTest extends ManagementTestSupport {
BacklogTracerEventMessage event1 = events.get(0);
assertEquals("foo", event1.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Hello World</body>\n"
+ " </message>",
event1.getMessageAsXml());
BacklogTracerEventMessage event2 = events.get(1);
assertEquals("foo", event2.getToNode());
- assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Bye World</body>\n"
+ " </message>",
event2.getMessageAsXml());
@@ -160,7 +162,8 @@ public class BacklogTracerTest extends ManagementTestSupport {
BacklogTracerEventMessage event0 = events.get(0);
assertEquals("route1", event0.getRouteId());
assertEquals(null, event0.getToNode());
- assertEquals(" <message exchangeId=\"" + fooExchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + fooExchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Hello World</body>\n"
+ " </message>",
event0.getMessageAsXml());
@@ -168,7 +171,8 @@ public class BacklogTracerTest extends ManagementTestSupport {
BacklogTracerEventMessage event1 = events.get(1);
assertEquals("route1", event1.getRouteId());
assertEquals("foo", event1.getToNode());
- assertEquals(" <message exchangeId=\"" + fooExchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + fooExchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Hello World</body>\n"
+ " </message>",
event1.getMessageAsXml());
@@ -176,7 +180,8 @@ public class BacklogTracerTest extends ManagementTestSupport {
BacklogTracerEventMessage event2 = events.get(2);
assertEquals("route1", event2.getRouteId());
assertEquals("bar", event2.getToNode());
- assertEquals(" <message exchangeId=\"" + barExchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + barExchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Hello World</body>\n"
+ " </message>",
event2.getMessageAsXml());
@@ -184,7 +189,8 @@ public class BacklogTracerTest extends ManagementTestSupport {
BacklogTracerEventMessage event3 = events.get(4);
assertEquals("route1", event3.getRouteId());
assertEquals(null, event3.getToNode());
- assertEquals(" <message exchangeId=\"" + fooExchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + fooExchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Bye World</body>\n"
+ " </message>",
event3.getMessageAsXml());
@@ -192,7 +198,8 @@ public class BacklogTracerTest extends ManagementTestSupport {
BacklogTracerEventMessage event4 = events.get(5);
assertEquals("route1", event4.getRouteId());
assertEquals("foo", event4.getToNode());
- assertEquals(" <message exchangeId=\"" + fooExchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + fooExchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Bye World</body>\n"
+ " </message>",
event3.getMessageAsXml());
@@ -200,7 +207,8 @@ public class BacklogTracerTest extends ManagementTestSupport {
BacklogTracerEventMessage event5 = events.get(6);
assertEquals("route1", event5.getRouteId());
assertEquals("bar", event5.getToNode());
- assertEquals(" <message exchangeId=\"" + barExchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\">\n"
+ assertEquals(" <message exchangeId=\"" + barExchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n"
+ " <body type=\"java.lang.String\">Bye World</body>\n"
+ " </message>",
event4.getMessageAsXml());
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
index f1f21a9f21d..16cb16293b6 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
@@ -66,7 +66,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <body type=\"java.lang.String\"><foo>Camel &gt; Donkey</foo></body>\n</message>",
out);
@@ -74,7 +75,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
new String[] { "java.lang.Integer", "java.lang.Boolean" });
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <body type=\"java.lang.String\">Camel > Donkey</body>\n</message>",
out);
@@ -82,7 +84,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
new String[] { "java.lang.Integer", "java.lang.Boolean" });
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(2).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(2).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"name\" type=\"java.lang.String\">Me & You</header>\n </headers>\n"
+ " <body type=\"java.lang.String\"><foo>Camel &gt; Donkey</foo></body>\n</message>",
out);
@@ -92,7 +95,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
assertNotNull(out);
log.info(out);
assertEquals(
- "<message exchangeId=\"" + exchanges.get(3).getExchangeId() + "\" exchangePattern=\"InOnly\">\n <headers>\n"
+ "<message exchangeId=\"" + exchanges.get(3).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n <headers>\n"
+ " <header key=\"title\" type=\"java.lang.String\"><title>Me &amp; You</title></header>\n </headers>\n"
+ " <body type=\"java.lang.String\"><foo>Camel &gt; Donkey</foo></body>\n</message>",
out);
@@ -101,7 +105,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
new String[] { "java.lang.Integer", "java.lang.Boolean" });
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(4).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(4).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"name\" type=\"java.lang.String\">Me & You</header>\n </headers>\n"
+ " <body type=\"java.lang.String\">Camel > Donkey</body>\n</message>",
out);
@@ -110,7 +115,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
new String[] { "java.lang.Integer", "java.lang.Boolean" });
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(5).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(5).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"user\" type=\"java.lang.Boolean\">true</header>\n </headers>\n"
+ " <body type=\"java.lang.Integer\">123</body>\n</message>",
out);
@@ -119,7 +125,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
new String[] { "java.lang.Integer", "java.lang.Boolean" });
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(6).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(6).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"title\" type=\"java.lang.String\">Camel rocks</header>\n"
+ " <header key=\"uid\" type=\"java.lang.Integer\">123</header>\n"
+ " <header key=\"user\" type=\"java.lang.Boolean\">false</header>\n </headers>\n"
@@ -147,7 +154,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n </headers>\n</message>",
out);
@@ -155,7 +163,8 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
new String[] { "java.lang.Integer", "java.lang.Boolean" });
assertNotNull(out);
log.info(out);
- assertEquals("<message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">456</header>\n </headers>\n</message>",
out);
}
@@ -180,9 +189,11 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
assertNotNull(out);
log.info(out);
- assertEquals("<messages>\n<message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<messages>\n<message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <body type=\"java.lang.String\">Hello World</body>\n</message>\n"
- + "<message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ + "<message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">456</header>\n </headers>\n"
+ " <body type=\"java.lang.String\">Bye World</body>\n</message>\n</messages>",
out);
@@ -209,9 +220,10 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
log.info(out);
assertEquals("<messages>\n<message exchangeId=\"" + exchanges.get(0).getExchangeId()
- + "\" exchangePattern=\"InOnly\">\n <headers>\n"
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\">\n <headers>\n"
+ " <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n </headers>\n</message>\n"
- + "<message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ + "<message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">456</header>\n </headers>\n"
+ "</message>\n</messages>",
out);
@@ -238,9 +250,11 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
assertNotNull(out);
log.info(out);
- assertEquals("<messages>\n<message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<messages>\n<message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <body type=\"java.lang.String\">Hello World</body>\n</message>\n"
- + "<message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ + "<message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">456</header>\n </headers>\n"
+ " <body type=\"java.lang.String\">Bye World</body>\n</message>\n</messages>",
out);
@@ -267,9 +281,11 @@ public class ManagedBrowsableEndpointAsXmlTest extends ManagementTestSupport {
assertNotNull(out);
log.info(out);
- assertEquals("<messages>\n<message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ assertEquals("<messages>\n<message exchangeId=\"" + exchanges.get(0).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">123</header>\n </headers>\n</message>\n"
- + "<message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\" exchangePattern=\"InOnly\""
+ + "<message exchangeId=\"" + exchanges.get(1).getExchangeId()
+ + "\" exchangePattern=\"InOnly\" type=\"org.apache.camel.support.DefaultMessage\""
+ ">\n <headers>\n <header key=\"foo\" type=\"java.lang.Integer\">456</header>\n </headers>\n"
+ "</message>\n</messages>",
out);
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 d949abfee07..da71ef2e4c3 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
@@ -499,10 +499,12 @@ public final class MessageHelper {
prefix.append(" ");
}
- // include exchangeId/exchangePattern as attribute on the <message> tag
+ // include exchangeId/exchangePattern/type as attribute on the <message> tag
sb.append(prefix);
+ String type = ObjectHelper.classCanonicalName(message);
sb.append("<message exchangeId=\"").append(message.getExchange().getExchangeId())
- .append("\" exchangePattern=\"").append(message.getExchange().getPattern().name()).append("\">\n");
+ .append("\" exchangePattern=\"").append(message.getExchange().getPattern().name())
+ .append("\" type=\"").append(type).append("\">\n");
// exchange properties
if (includeExchangeProperties && message.getExchange().hasProperties()) {
@@ -512,7 +514,7 @@ public final class MessageHelper {
Map<String, Object> properties = new TreeMap<>(message.getExchange().getProperties());
for (Map.Entry<String, Object> entry : properties.entrySet()) {
Object value = entry.getValue();
- String type = ObjectHelper.classCanonicalName(value);
+ type = ObjectHelper.classCanonicalName(value);
sb.append(prefix);
sb.append(" <exchangeProperty key=\"").append(entry.getKey()).append("\"");
if (type != null) {
@@ -548,7 +550,7 @@ public final class MessageHelper {
Map<String, Object> headers = new TreeMap<>(message.getHeaders());
for (Map.Entry<String, Object> entry : headers.entrySet()) {
Object value = entry.getValue();
- String type = ObjectHelper.classCanonicalName(value);
+ type = ObjectHelper.classCanonicalName(value);
sb.append(prefix);
sb.append(" <header key=\"").append(entry.getKey()).append("\"");
if (type != null) {
@@ -579,7 +581,7 @@ public final class MessageHelper {
if (includeBody) {
sb.append(prefix);
sb.append(" <body");
- String type = ObjectHelper.classCanonicalName(message.getBody());
+ type = ObjectHelper.classCanonicalName(message.getBody());
if (type != null) {
sb.append(" type=\"").append(type).append("\"");
}
@@ -868,6 +870,7 @@ public final class MessageHelper {
root.put("message", jo);
jo.put("exchangeId", message.getExchange().getExchangeId());
jo.put("exchangePattern", message.getExchange().getPattern().name());
+ jo.put("type", ObjectHelper.classCanonicalName(message));
// exchange properties
if (includeExchangeProperties && message.getExchange().hasProperties()) {
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 66b63166117..b66bc478611 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
@@ -705,7 +705,7 @@ public class CamelTraceAction extends ActionBaseCommand {
// properties and headers
String tab1 = AsciiTable.getTable(AsciiTable.NO_BORDERS, rows, Arrays.asList(
new Column().dataAlign(HorizontalAlign.LEFT)
- .minWidth(showExchangeProperties ? 10 : 8).with(TableRow::kindAsString),
+ .minWidth(showExchangeProperties ? 11 : 9).with(TableRow::kindAsString),
new Column().dataAlign(HorizontalAlign.LEFT)
.maxWidth(40, OverflowBehaviour.ELLIPSIS_LEFT).with(TableRow::typeAsString),
new Column().dataAlign(HorizontalAlign.RIGHT)
@@ -714,11 +714,13 @@ public class CamelTraceAction extends ActionBaseCommand {
.maxWidth(80, OverflowBehaviour.NEWLINE).with(TableRow::valueAsString)));
// body and type
- JsonObject jo = r.message.getMap("body");
+ JsonObject jo = r.message;
+ TableRow msgRow = new TableRow("Message", jo.getString("type"), null, null);
+ jo = r.message.getMap("body");
TableRow bodyRow = new TableRow("Body", jo.getString("type"), null, jo.get("value"));
- String tab2 = AsciiTable.getTable(AsciiTable.NO_BORDERS, List.of(bodyRow), Arrays.asList(
+ String tab2 = AsciiTable.getTable(AsciiTable.NO_BORDERS, List.of(msgRow, bodyRow), Arrays.asList(
new Column().dataAlign(HorizontalAlign.LEFT)
- .minWidth(showExchangeProperties ? 10 : 8).with(t -> "Body"),
+ .minWidth(showExchangeProperties ? 11 : 9).with(TableRow::kindAsString),
new Column().dataAlign(HorizontalAlign.LEFT).with(TableRow::typeAndLengthAsString)));
// body value only (span)
String tab3 = null;
@@ -733,7 +735,7 @@ public class CamelTraceAction extends ActionBaseCommand {
TableRow eRow = new TableRow("Exception", jo.getString("type"), null, jo.get("message"));
tab4 = AsciiTable.getTable(AsciiTable.NO_BORDERS, List.of(eRow), Arrays.asList(
new Column().dataAlign(HorizontalAlign.LEFT)
- .minWidth(showExchangeProperties ? 10 : 8).with(TableRow::kindAsStringRed),
+ .minWidth(showExchangeProperties ? 11 : 9).with(TableRow::kindAsStringRed),
new Column().dataAlign(HorizontalAlign.LEFT)
.maxWidth(40, OverflowBehaviour.ELLIPSIS_LEFT).with(TableRow::typeAsString),
new Column().dataAlign(HorizontalAlign.LEFT)