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 2022/01/28 09:38:36 UTC
[camel] branch main updated: CAMEL-17512: camel-tracer - JMS span should resolve the actual dynamic destination (#6844)
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 6e331f9 CAMEL-17512: camel-tracer - JMS span should resolve the actual dynamic destination (#6844)
6e331f9 is described below
commit 6e331f9e792eb2a3a5a5462b20c5be4adde82a32
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jan 28 10:38:02 2022 +0100
CAMEL-17512: camel-tracer - JMS span should resolve the actual dynamic destination (#6844)
---
.../camel/tracing/decorators/JmsSpanDecorator.java | 11 ++++++++
.../tracing/decorators/JmsSpanDecoratorTest.java | 30 ++++++++++++++++++++++
2 files changed, 41 insertions(+)
diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/JmsSpanDecorator.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/JmsSpanDecorator.java
index f8406b7..6d7c8dc 100644
--- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/JmsSpanDecorator.java
+++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/JmsSpanDecorator.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.tracing.decorators;
+import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
public class JmsSpanDecorator extends AbstractMessagingSpanDecorator {
@@ -28,6 +29,16 @@ public class JmsSpanDecorator extends AbstractMessagingSpanDecorator {
}
@Override
+ protected String getDestination(Exchange exchange, Endpoint endpoint) {
+ // when using toD for dynamic destination then extract from header
+ String destination = exchange.getMessage().getHeader("CamelJmsDestinationName", String.class);
+ if (destination == null) {
+ destination = super.getDestination(exchange, endpoint);
+ }
+ return destination;
+ }
+
+ @Override
public String getComponentClassName() {
return "org.apache.camel.component.jms.JmsComponent";
}
diff --git a/components/camel-tracing/src/test/java/org/apache/camel/tracing/decorators/JmsSpanDecoratorTest.java b/components/camel-tracing/src/test/java/org/apache/camel/tracing/decorators/JmsSpanDecoratorTest.java
index 6081438a..32ab30d 100644
--- a/components/camel-tracing/src/test/java/org/apache/camel/tracing/decorators/JmsSpanDecoratorTest.java
+++ b/components/camel-tracing/src/test/java/org/apache/camel/tracing/decorators/JmsSpanDecoratorTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.tracing.decorators;
+import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.junit.jupiter.api.Test;
@@ -39,4 +40,33 @@ public class JmsSpanDecoratorTest {
assertEquals(messageId, decorator.getMessageId(exchange));
}
+ @Test
+ public void testGetDestination() {
+ Exchange exchange = Mockito.mock(Exchange.class);
+ Message message = Mockito.mock(Message.class);
+ Endpoint endpoint = Mockito.mock(Endpoint.class);
+
+ Mockito.when(exchange.getIn()).thenReturn(message);
+ Mockito.when(exchange.getMessage()).thenReturn(message);
+ Mockito.when(endpoint.getEndpointUri()).thenReturn("jms:cheese?clientId=123");
+
+ JmsSpanDecorator decorator = new JmsSpanDecorator();
+ assertEquals("cheese", decorator.getDestination(exchange, endpoint));
+ }
+
+ @Test
+ public void testGetDestinationDynamic() {
+ Exchange exchange = Mockito.mock(Exchange.class);
+ Message message = Mockito.mock(Message.class);
+ Endpoint endpoint = Mockito.mock(Endpoint.class);
+
+ Mockito.when(exchange.getIn()).thenReturn(message);
+ Mockito.when(exchange.getMessage()).thenReturn(message);
+ Mockito.when(exchange.getMessage().getHeader("CamelJmsDestinationName", String.class)).thenReturn("gauda");
+ Mockito.when(endpoint.getEndpointUri()).thenReturn("jms:${header.foo}?clientId=123");
+
+ JmsSpanDecorator decorator = new JmsSpanDecorator();
+ assertEquals("gauda", decorator.getDestination(exchange, endpoint));
+ }
+
}