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 2019/12/04 06:21:28 UTC

[camel] branch master updated: CAMEL-14244: camel-opentracing - Associate decorators with component FQN also

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 9d76523  CAMEL-14244: camel-opentracing - Associate decorators with component FQN also
9d76523 is described below

commit 9d7652378e084607db791fb413b24239be0f2769
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Dec 4 07:20:35 2019 +0100

    CAMEL-14244: camel-opentracing - Associate decorators with component FQN also
---
 .../camel/opentracing/OpenTracingTracer.java       | 18 ++++-
 .../apache/camel/opentracing/SpanDecorator.java    | 14 +++-
 .../opentracing/decorators/AhcSpanDecorator.java   |  5 ++
 .../opentracing/decorators/AmqpSpanDecorator.java  |  5 ++
 .../decorators/AwsSnsSpanDecorator.java            |  5 ++
 .../decorators/AwsSqsSpanDecorator.java            |  5 ++
 .../decorators/CometdSpanDecorator.java            |  5 ++
 .../opentracing/decorators/CqlSpanDecorator.java   |  5 ++
 .../decorators/DirectSpanDecorator.java            |  5 ++
 .../decorators/DirectvmSpanDecorator.java          |  5 ++
 .../decorators/DisruptorSpanDecorator.java         |  5 ++
 .../decorators/DisruptorvmSpanDecorator.java       |  5 ++
 .../decorators/ElasticsearchSpanDecorator.java     |  7 +-
 .../opentracing/decorators/HttpSpanDecorator.java  |  5 ++
 ...cSpanDecorator.java => HttpsSpanDecorator.java} |  4 +-
 .../decorators/IronmqSpanDecorator.java            |  5 ++
 .../opentracing/decorators/JdbcSpanDecorator.java  |  5 ++
 .../opentracing/decorators/JettySpanDecorator.java |  5 ++
 .../opentracing/decorators/JmsSpanDecorator.java   |  5 ++
 .../opentracing/decorators/KafkaSpanDecorator.java |  5 ++
 .../opentracing/decorators/LogSpanDecorator.java   |  5 ++
 .../decorators/MongoDBSpanDecorator.java           |  5 ++
 .../decorators/NettyHttpSpanDecorator.java         |  5 ++
 .../opentracing/decorators/PahoSpanDecorator.java  |  5 ++
 .../decorators/RabbitmqSpanDecorator.java          |  5 ++
 .../opentracing/decorators/RestSpanDecorator.java  |  5 ++
 .../opentracing/decorators/SedaSpanDecorator.java  |  5 ++
 .../decorators/ServletSpanDecorator.java           |  5 ++
 ...gSpanDecorator.java => Sjms2SpanDecorator.java} |  8 +--
 .../opentracing/decorators/SjmsSpanDecorator.java  |  5 ++
 .../opentracing/decorators/SqlSpanDecorator.java   |  5 ++
 .../opentracing/decorators/StompSpanDecorator.java |  5 ++
 .../opentracing/decorators/TimerSpanDecorator.java |  5 ++
 .../decorators/UndertowSpanDecorator.java          |  5 ++
 .../opentracing/decorators/VmSpanDecorator.java    |  5 ++
 .../org.apache.camel.opentracing.SpanDecorator     |  2 +
 .../opentracing/CustomComponentNameRouteTest.java  | 82 ++++++++++++++++++++++
 .../decorators/AbstractHttpSpanDecoratorTest.java  | 35 +++++++++
 .../AbstractMessagingSpanDecoratorTest.java        | 16 +++++
 .../decorators/AbstractSpanDecoratorTest.java      | 15 ++++
 40 files changed, 341 insertions(+), 10 deletions(-)

diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index b336c14..4a58f11 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -31,6 +31,7 @@ import io.opentracing.propagation.Format;
 import io.opentracing.tag.Tags;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedCamelContext;
@@ -46,6 +47,7 @@ import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
+import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
@@ -201,13 +203,25 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     }
 
     protected SpanDecorator getSpanDecorator(Endpoint endpoint) {
-        SpanDecorator sd = SpanDecorator.DEFAULT;
+        SpanDecorator sd = null;
 
         String uri = endpoint.getEndpointUri();
         String splitURI[] = StringHelper.splitOnCharacter(uri, ":", 2);
         if (splitURI[1] != null) {
             String scheme = splitURI[0];
-            sd = decorators.getOrDefault(scheme, sd);
+            sd = decorators.get(scheme);
+        }
+        if (sd == null) {
+            // okay there was no decorator found via component name (scheme), then try FQN
+            if (endpoint instanceof DefaultEndpoint) {
+                Component comp = ((DefaultEndpoint) endpoint).getComponent();
+                String fqn = comp.getClass().getName();
+                // lookup via FQN
+                sd = decorators.values().stream().filter(d -> fqn.equals(d.getComponentClassName())).findFirst().orElse(null);
+            }
+        }
+        if (sd == null) {
+            sd = SpanDecorator.DEFAULT;
         }
 
         return sd;
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
index 1a68633..57bf0ac 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
@@ -40,6 +40,11 @@ public interface SpanDecorator {
             return null;
         }
 
+        @Override
+        public String getComponentClassName() {
+            return null;
+        }
+
     };
 
     /**
@@ -51,13 +56,20 @@ public interface SpanDecorator {
     boolean newSpan();
 
     /**
-     * The camel component associated with the decorator.
+     * The camel component name associated with the decorator.
      *
      * @return The camel component name
      */
     String getComponent();
 
     /**
+     * The camel component FQN classname associated with the decorator.
+     *
+     * @return The camel component FQN classname
+     */
+    String getComponentClassName();
+
+    /**
      * This method returns the operation name to use with the Span representing
      * this exchange and endpoint.
      *
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AhcSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AhcSpanDecorator.java
index 2f4b950..e2a8358 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AhcSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AhcSpanDecorator.java
@@ -23,4 +23,9 @@ public class AhcSpanDecorator extends AbstractHttpSpanDecorator {
         return "ahc";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.ahc.AhcComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AmqpSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AmqpSpanDecorator.java
index 040feeb..b0b0c03 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AmqpSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AmqpSpanDecorator.java
@@ -23,4 +23,9 @@ public class AmqpSpanDecorator extends AbstractMessagingSpanDecorator {
         return "amqp";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.amqp.AMQPComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSnsSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSnsSpanDecorator.java
index 5d46bce..0190e97 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSnsSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSnsSpanDecorator.java
@@ -28,6 +28,11 @@ public class AwsSnsSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.aws.sns.SnsComponent";
+    }
+
+    @Override
     protected String getMessageId(Exchange exchange) {
         return (String)exchange.getIn().getHeader(CAMEL_AWS_SNS_MESSAGE_ID);
     }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSqsSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSqsSpanDecorator.java
index 8d9ed21..64a7e04 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSqsSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AwsSqsSpanDecorator.java
@@ -28,6 +28,11 @@ public class AwsSqsSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.aws.sqs.SqsComponent";
+    }
+
+    @Override
     protected String getMessageId(Exchange exchange) {
         return (String)exchange.getIn().getHeader(CAMEL_AWS_SQS_MESSAGE_ID);
     }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CometdSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CometdSpanDecorator.java
index e867818..3021bca 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CometdSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CometdSpanDecorator.java
@@ -29,6 +29,11 @@ public class CometdSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.cometd.CometdComponent";
+    }
+
+    @Override
     protected String getDestination(Exchange exchange, Endpoint endpoint) {
         // Extract path, and remove leading '/'
         return URI.create(endpoint.getEndpointUri()).getPath().substring(1);
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CqlSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CqlSpanDecorator.java
index e4fbf33..ad4f279 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CqlSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/CqlSpanDecorator.java
@@ -36,6 +36,11 @@ public class CqlSpanDecorator extends AbstractSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.cassandra.CassandraComponent";
+    }
+
+    @Override
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {
         super.pre(span, exchange, endpoint);
 
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectSpanDecorator.java
index e705ce1..98b3fd4 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectSpanDecorator.java
@@ -23,4 +23,9 @@ public class DirectSpanDecorator extends AbstractInternalSpanDecorator {
         return "direct";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.direct.DirectComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectvmSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectvmSpanDecorator.java
index 6896d55..85aee6e 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectvmSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectvmSpanDecorator.java
@@ -23,4 +23,9 @@ public class DirectvmSpanDecorator extends AbstractInternalSpanDecorator {
         return "direct-vm";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.directvm.DirectVmComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorSpanDecorator.java
index e101435..1e0f43f 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorSpanDecorator.java
@@ -23,4 +23,9 @@ public class DisruptorSpanDecorator extends AbstractInternalSpanDecorator {
         return "disruptor";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.disruptor.DisruptorComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorvmSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorvmSpanDecorator.java
index 97c216e..4f8bd2c 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorvmSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DisruptorvmSpanDecorator.java
@@ -23,4 +23,9 @@ public class DisruptorvmSpanDecorator extends AbstractInternalSpanDecorator {
         return "disruptor-vm";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.disruptor.vm.DisruptorVmComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ElasticsearchSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ElasticsearchSpanDecorator.java
index 9f8721c..aadfc2f 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ElasticsearchSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ElasticsearchSpanDecorator.java
@@ -31,7 +31,12 @@ public class ElasticsearchSpanDecorator extends AbstractSpanDecorator {
 
     @Override
     public String getComponent() {
-        return "elasticsearch";
+        return "elasticsearch-rest";
+    }
+
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.elasticsearch.ElasticsearchComponent";
     }
 
     @Override
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/HttpSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/HttpSpanDecorator.java
index 9061521..60d03a9 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/HttpSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/HttpSpanDecorator.java
@@ -23,4 +23,9 @@ public class HttpSpanDecorator extends AbstractHttpSpanDecorator {
         return "http";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.http.HttpComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AhcSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/HttpsSpanDecorator.java
similarity index 91%
copy from components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AhcSpanDecorator.java
copy to components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/HttpsSpanDecorator.java
index 2f4b950..61ff751 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AhcSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/HttpsSpanDecorator.java
@@ -16,11 +16,11 @@
  */
 package org.apache.camel.opentracing.decorators;
 
-public class AhcSpanDecorator extends AbstractHttpSpanDecorator {
+public class HttpsSpanDecorator extends HttpSpanDecorator {
 
     @Override
     public String getComponent() {
-        return "ahc";
+        return "https";
     }
 
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/IronmqSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/IronmqSpanDecorator.java
index a79191e..32d140b 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/IronmqSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/IronmqSpanDecorator.java
@@ -28,6 +28,11 @@ public class IronmqSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.ironmq.IronMQComponent";
+    }
+
+    @Override
     protected String getMessageId(Exchange exchange) {
         return (String)exchange.getIn().getHeader(CAMEL_IRON_MQ_MESSAGE_ID);
     }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JdbcSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JdbcSpanDecorator.java
index 5611d19..221f782 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JdbcSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JdbcSpanDecorator.java
@@ -29,6 +29,11 @@ public class JdbcSpanDecorator extends AbstractSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.jdbc.JdbcComponent";
+    }
+
+    @Override
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {
         super.pre(span, exchange, endpoint);
 
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JettySpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JettySpanDecorator.java
index 2bcc313..0f006de 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JettySpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JettySpanDecorator.java
@@ -23,4 +23,9 @@ public class JettySpanDecorator extends AbstractHttpSpanDecorator {
         return "jetty";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.jetty9.JettyHttpComponent9";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JmsSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JmsSpanDecorator.java
index 85500fe..3360160 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JmsSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JmsSpanDecorator.java
@@ -28,6 +28,11 @@ public class JmsSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.jms.JmsComponent";
+    }
+
+    @Override
     protected String getMessageId(Exchange exchange) {
         return (String)exchange.getIn().getHeader(JMS_MESSAGE_ID);
     }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/KafkaSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/KafkaSpanDecorator.java
index becdb5d..664f832 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/KafkaSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/KafkaSpanDecorator.java
@@ -44,6 +44,11 @@ public class KafkaSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.kafka.KafkaComponent";
+    }
+
+    @Override
     public String getDestination(Exchange exchange, Endpoint endpoint) {
         String topic = (String)exchange.getIn().getHeader(TOPIC);
         if (topic == null) {
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
index 628a1c4..d0489e4 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
@@ -24,6 +24,11 @@ public class LogSpanDecorator extends AbstractSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.log.LogComponent";
+    }
+
+    @Override
     public boolean newSpan() {
         return false;
     }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecorator.java
index 20c15e5..6c1e9a2 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecorator.java
@@ -31,6 +31,11 @@ public class MongoDBSpanDecorator extends AbstractSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.mongodb.MongoDbComponent";
+    }
+
+    @Override
     public String getOperationName(Exchange exchange, Endpoint endpoint) {
         Map<String, String> queryParameters = toQueryParameters(endpoint.getEndpointUri());
         String opName = queryParameters.get("operation");
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/NettyHttpSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/NettyHttpSpanDecorator.java
index 06d7533..909a01f 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/NettyHttpSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/NettyHttpSpanDecorator.java
@@ -23,4 +23,9 @@ public class NettyHttpSpanDecorator extends AbstractHttpSpanDecorator {
         return "netty-http";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.netty.http.NettyHttpComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/PahoSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/PahoSpanDecorator.java
index 488b90a..5e9faa5 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/PahoSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/PahoSpanDecorator.java
@@ -23,4 +23,9 @@ public class PahoSpanDecorator extends AbstractMessagingSpanDecorator {
         return "paho";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.paho.PahoComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RabbitmqSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RabbitmqSpanDecorator.java
index cf54582..1d47fb3 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RabbitmqSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RabbitmqSpanDecorator.java
@@ -32,6 +32,11 @@ public class RabbitmqSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.rabbitmq.RabbitMQComponent";
+    }
+
+    @Override
     public String getDestination(Exchange exchange, Endpoint endpoint) {
         return (String)exchange.getIn().getHeader(EXCHANGE_NAME);
     }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RestSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RestSpanDecorator.java
index b389555..3bd2ac2 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RestSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/RestSpanDecorator.java
@@ -38,6 +38,11 @@ public class RestSpanDecorator extends AbstractHttpSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.rest.RestComponent";
+    }
+
+    @Override
     public String getOperationName(Exchange exchange, Endpoint endpoint) {
         return getPath(endpoint.getEndpointUri());
     }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SedaSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SedaSpanDecorator.java
index 8a91e8f..57096ee 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SedaSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SedaSpanDecorator.java
@@ -23,4 +23,9 @@ public class SedaSpanDecorator extends AbstractInternalSpanDecorator {
         return "seda";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.seda.SedaComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ServletSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ServletSpanDecorator.java
index 71f7a20..c0d03dd 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ServletSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/ServletSpanDecorator.java
@@ -23,4 +23,9 @@ public class ServletSpanDecorator extends AbstractHttpSpanDecorator {
         return "servlet";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.servlet.ServletComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/Sjms2SpanDecorator.java
similarity index 81%
copy from components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
copy to components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/Sjms2SpanDecorator.java
index 628a1c4..d3fde0f 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/Sjms2SpanDecorator.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.opentracing.decorators;
 
-public class LogSpanDecorator extends AbstractSpanDecorator {
+public class Sjms2SpanDecorator extends AbstractMessagingSpanDecorator {
 
     @Override
     public String getComponent() {
-        return "log";
+        return "sjms2";
     }
 
     @Override
-    public boolean newSpan() {
-        return false;
+    public String getComponentClassName() {
+        return "org.apache.camel.component.sjms2.Sjms2Component";
     }
 
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SjmsSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SjmsSpanDecorator.java
index 551072d..074d941 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SjmsSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SjmsSpanDecorator.java
@@ -23,4 +23,9 @@ public class SjmsSpanDecorator extends AbstractMessagingSpanDecorator {
         return "sjms";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.sjms.SjmsComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SqlSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SqlSpanDecorator.java
index 72c2b89..220ec4d 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SqlSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SqlSpanDecorator.java
@@ -31,6 +31,11 @@ public class SqlSpanDecorator extends AbstractSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.sql.SqlComponent";
+    }
+
+    @Override
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {
         super.pre(span, exchange, endpoint);
 
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/StompSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/StompSpanDecorator.java
index a3d7766..fcd2489 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/StompSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/StompSpanDecorator.java
@@ -29,6 +29,11 @@ public class StompSpanDecorator extends AbstractMessagingSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.stomp.StompComponent";
+    }
+
+    @Override
     public String getDestination(Exchange exchange, Endpoint endpoint) {
         String destination = super.getDestination(exchange, endpoint);
         if (destination.startsWith(QUEUE_PREFIX)) {
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/TimerSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/TimerSpanDecorator.java
index da6fd69..3ba7c25 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/TimerSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/TimerSpanDecorator.java
@@ -27,6 +27,11 @@ public class TimerSpanDecorator extends AbstractSpanDecorator {
     }
 
     @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.timer.TimerComponent";
+    }
+
+    @Override
     public String getOperationName(Exchange exchange, Endpoint endpoint) {
         Object name = exchange.getProperty(Exchange.TIMER_NAME);
         if (name instanceof String) {
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/UndertowSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/UndertowSpanDecorator.java
index a465c0d..4ba59d2 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/UndertowSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/UndertowSpanDecorator.java
@@ -23,4 +23,9 @@ public class UndertowSpanDecorator extends AbstractHttpSpanDecorator {
         return "undertow";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.undertow.UndertowComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/VmSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/VmSpanDecorator.java
index 702e5a7..4d5c487 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/VmSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/VmSpanDecorator.java
@@ -23,4 +23,9 @@ public class VmSpanDecorator extends AbstractInternalSpanDecorator {
         return "vm";
     }
 
+    @Override
+    public String getComponentClassName() {
+        return "org.apache.camel.component.vm.VmComponent";
+    }
+
 }
diff --git a/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator b/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
index fc5873e..fa21cb4 100644
--- a/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
+++ b/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
@@ -28,6 +28,7 @@ org.apache.camel.opentracing.decorators.DisruptorSpanDecorator
 org.apache.camel.opentracing.decorators.DisruptorvmSpanDecorator
 org.apache.camel.opentracing.decorators.ElasticsearchSpanDecorator
 org.apache.camel.opentracing.decorators.HttpSpanDecorator
+org.apache.camel.opentracing.decorators.HttpsSpanDecorator
 org.apache.camel.opentracing.decorators.IronmqSpanDecorator
 org.apache.camel.opentracing.decorators.JdbcSpanDecorator
 org.apache.camel.opentracing.decorators.JettySpanDecorator
@@ -42,6 +43,7 @@ org.apache.camel.opentracing.decorators.RestSpanDecorator
 org.apache.camel.opentracing.decorators.SedaSpanDecorator
 org.apache.camel.opentracing.decorators.ServletSpanDecorator
 org.apache.camel.opentracing.decorators.SjmsSpanDecorator
+org.apache.camel.opentracing.decorators.Sjms2SpanDecorator
 org.apache.camel.opentracing.decorators.SqlSpanDecorator
 org.apache.camel.opentracing.decorators.StompSpanDecorator
 org.apache.camel.opentracing.decorators.TimerSpanDecorator
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CustomComponentNameRouteTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CustomComponentNameRouteTest.java
new file mode 100644
index 0000000..c68929c
--- /dev/null
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CustomComponentNameRouteTest.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.opentracing;
+
+import io.opentracing.tag.Tags;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.junit.Test;
+
+public class CustomComponentNameRouteTest extends CamelOpenTracingTestSupport {
+
+    private static SpanTestData[] testdata = {
+        new SpanTestData().setLabel("myseda:b server").setUri("myseda://b").setOperation("b")
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(1).addLogMessage("routing at b"),
+        new SpanTestData().setLabel("myseda:b client").setUri("myseda://b").setOperation("b")
+            .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
+        new SpanTestData().setLabel("myseda:c server").setUri("myseda://c").setOperation("c")
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(3).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"),
+        new SpanTestData().setLabel("myseda:c client").setUri("myseda://c").setOperation("c")
+            .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
+        new SpanTestData().setLabel("myseda:a server").setUri("myseda://a").setOperation("a")
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(5).addLogMessage("routing at a").addLogMessage("End of routing"),
+        new SpanTestData().setLabel("myseda:a client").setUri("myseda://a").setOperation("a")
+            .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
+        new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start")
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(7),
+        new SpanTestData().setLabel("direct:start client").setUri("direct://start").setOperation("start")
+            .setKind(Tags.SPAN_KIND_CLIENT)
+    };
+
+    public CustomComponentNameRouteTest() {
+        super(testdata);
+    }
+
+    @Test
+    public void testRoute() throws Exception {
+        template.requestBody("direct:start", "Hello");
+
+        verify();
+    }
+
+    @Override
+    protected RoutesBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                context.addComponent("myseda", context.getComponent("seda"));
+
+                from("direct:start").to("myseda:a").routeId("start");
+
+                from("myseda:a").routeId("a")
+                    .log("routing at ${routeId}")
+                    .to("myseda:b")
+                    .delay(2000)
+                    .to("myseda:c")
+                    .log("End of routing");
+
+                from("myseda:b").routeId("b")
+                    .log("routing at ${routeId}")
+                    .delay(simple("${random(1000,2000)}"));
+
+                from("myseda:c").routeId("c")
+                    .to("log:test")
+                    .delay(simple("${random(0,100)}"));
+            }
+        };
+    }
+}
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecoratorTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecoratorTest.java
index 1f0a41d..85ff71c 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecoratorTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecoratorTest.java
@@ -46,6 +46,11 @@ public class AbstractHttpSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         assertEquals("PUT", decorator.getOperationName(exchange, null));
@@ -132,6 +137,11 @@ public class AbstractHttpSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         MockTracer tracer = new MockTracer();
@@ -159,6 +169,11 @@ public class AbstractHttpSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         assertEquals(TEST_URI, decorator.getHttpURL(exchange, endpoint));
@@ -179,6 +194,11 @@ public class AbstractHttpSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         assertEquals(TEST_URI, decorator.getHttpURL(exchange, endpoint));
@@ -198,6 +218,11 @@ public class AbstractHttpSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         assertEquals(TEST_URI, decorator.getHttpURL(exchange, endpoint));
@@ -217,6 +242,11 @@ public class AbstractHttpSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         assertEquals(TEST_URI, decorator.getHttpURL(exchange, endpoint));
@@ -235,6 +265,11 @@ public class AbstractHttpSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         MockTracer tracer = new MockTracer();
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecoratorTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecoratorTest.java
index 416eedb..90f1762 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecoratorTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecoratorTest.java
@@ -40,6 +40,11 @@ public class AbstractMessagingSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         assertEquals("MyQueue", decorator.getOperationName(null, endpoint));
@@ -56,6 +61,11 @@ public class AbstractMessagingSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         MockTracer tracer = new MockTracer();
@@ -79,6 +89,12 @@ public class AbstractMessagingSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
+
             @Override
             public String getMessageId(Exchange exchange) {
                 return messageId;
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractSpanDecoratorTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractSpanDecoratorTest.java
index 7b0ad72..5a20ad6 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractSpanDecoratorTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractSpanDecoratorTest.java
@@ -42,6 +42,11 @@ public class AbstractSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         // Operation name is scheme, as no specific span decorator to
@@ -60,6 +65,11 @@ public class AbstractSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         MockTracer tracer = new MockTracer();
@@ -84,6 +94,11 @@ public class AbstractSpanDecoratorTest {
             public String getComponent() {
                 return null;
             }
+
+            @Override
+            public String getComponentClassName() {
+                return null;
+            }
         };
 
         MockTracer tracer = new MockTracer();