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));
+    }
+
 }