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 2017/03/10 16:11:49 UTC

[1/2] camel git commit: Sanitize endpoint uri to avoid passwords being visible

Repository: camel
Updated Branches:
  refs/heads/master 7b9076400 -> 8e14a77d2


Sanitize endpoint uri to avoid passwords being visible


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8e14a77d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8e14a77d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8e14a77d

Branch: refs/heads/master
Commit: 8e14a77d2db4f54d4757c91746ef1b123ba14992
Parents: 4f6c340
Author: Gary Brown <ga...@brownuk.com>
Authored: Fri Mar 10 15:45:44 2017 +0000
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Mar 10 17:08:59 2017 +0100

----------------------------------------------------------------------
 .../camel/opentracing/decorators/AbstractSpanDecorator.java       | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8e14a77d/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
index 9106258..b87238b 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
@@ -25,6 +25,7 @@ import io.opentracing.tag.Tags;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.opentracing.SpanDecorator;
+import org.apache.camel.util.URISupport;
 
 /**
  * An abstract base implementation of the {@link SpanDecorator} interface.
@@ -66,7 +67,7 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
 
         // Including the endpoint URI provides access to any options that may have been provided, for
         // subsequent analysis
-        span.setTag("camel.uri", endpoint.getEndpointUri());
+        span.setTag("camel.uri", URISupport.sanitizeUri(endpoint.getEndpointUri()));
     }
 
     @Override


[2/2] camel git commit: Updated opentracing-java version to 0.20.10, use constants for DB tags, changed default operation to be component name, added mechanism to enable custom decorator for particular component to override standard one, added span decor

Posted by da...@apache.org.
Updated opentracing-java version to 0.20.10, use constants for DB tags, changed default operation to be component name, added mechanism to enable custom decorator for particular component to override standard one, added span decorators for direct/vm/seda components


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4f6c3405
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4f6c3405
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4f6c3405

Branch: refs/heads/master
Commit: 4f6c340534e1cf59833f9f09d65b883d49c50766
Parents: 7b90764
Author: Gary Brown <ga...@brownuk.com>
Authored: Fri Mar 10 11:01:17 2017 +0000
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Mar 10 17:08:59 2017 +0100

----------------------------------------------------------------------
 .../camel/opentracing/OpenTracingTracer.java    | 11 +++-
 .../decorators/AbstractHttpSpanDecorator.java   |  5 ++
 .../AbstractInternalSpanDecorator.java          | 31 ++++++++++
 .../decorators/AbstractSpanDecorator.java       | 30 +++++++++-
 .../decorators/DirectSpanDecorator.java         | 26 +++++++++
 .../decorators/JdbcSpanDecorator.java           |  6 +-
 .../decorators/MongoDBSpanDecorator.java        |  8 ++-
 .../decorators/SedaSpanDecorator.java           | 26 +++++++++
 .../decorators/SqlSpanDecorator.java            |  6 +-
 .../opentracing/decorators/VmSpanDecorator.java | 26 +++++++++
 .../org.apache.camel.opentracing.SpanDecorator  |  4 ++
 .../apache/camel/opentracing/ABCRouteTest.java  | 16 ++---
 .../CamelOpenTracingTestSupport.java            |  9 +--
 .../ClientRecipientListRouteTest.java           | 16 ++---
 .../camel/opentracing/MulticastRouteTest.java   | 16 ++---
 .../camel/opentracing/RouteConcurrentTest.java  |  8 +--
 .../apache/camel/opentracing/SpanTestData.java  | 10 ++++
 .../opentracing/TestSEDASpanDecorator.java      | 14 +----
 .../camel/opentracing/TwoServiceTest.java       |  8 +--
 .../AbstractHttpSpanDecoratorTest.java          | 61 ++++++++------------
 .../decorators/AbstractSpanDecoratorTest.java   | 31 +++++++++-
 .../decorators/JdbcSpanDecoratorTest.java       |  6 +-
 .../decorators/MongoDBSpanDecoratorTest.java    |  8 ++-
 .../decorators/SqlSpanDecoratorTest.java        |  6 +-
 parent/pom.xml                                  |  2 +-
 25 files changed, 286 insertions(+), 104 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
----------------------------------------------------------------------
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 759634f..9a3e34e 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
@@ -70,7 +70,16 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     private CamelContext camelContext;
 
     static {
-        ServiceLoader.load(SpanDecorator.class).forEach(d -> decorators.put(d.getComponent(), d));
+        ServiceLoader.load(SpanDecorator.class).forEach(d -> {
+            SpanDecorator existing = decorators.get(d.getComponent());
+            // Add span decorator if no existing decorator for the component,
+            // or if derived from the existing decorator's class, allowing
+            // custom decorators to be added if they extend the standard
+            // decorators
+            if (existing == null || existing.getClass().isInstance(d)) {
+                decorators.put(d.getComponent(), d);
+            }
+        });
     }
 
     public OpenTracingTracer() {

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecorator.java
index a498349..25c676d 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecorator.java
@@ -29,7 +29,10 @@ public abstract class AbstractHttpSpanDecorator extends AbstractSpanDecorator {
     @Override
     public String getOperationName(Exchange exchange, Endpoint endpoint) {
         // Based on HTTP component documentation:
+        return getHttpMethod(exchange, endpoint);
+    }
 
+    public static String getHttpMethod(Exchange exchange, Endpoint endpoint) {
         // 1. Use method provided in header.
         Object method = exchange.getIn().getHeader(Exchange.HTTP_METHOD);
         if (method instanceof String) {
@@ -63,6 +66,8 @@ public abstract class AbstractHttpSpanDecorator extends AbstractSpanDecorator {
         if (httpUrl != null) {
             span.setTag(Tags.HTTP_URL.getKey(), httpUrl);
         }
+
+        span.setTag(Tags.HTTP_METHOD.getKey(), getHttpMethod(exchange, endpoint));
     }
 
     protected String getHttpURL(Exchange exchange, Endpoint endpoint) {

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractInternalSpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractInternalSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractInternalSpanDecorator.java
new file mode 100644
index 0000000..8fc794c
--- /dev/null
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractInternalSpanDecorator.java
@@ -0,0 +1,31 @@
+/**
+ * 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.decorators;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+
+public abstract class AbstractInternalSpanDecorator extends AbstractSpanDecorator {
+
+    @Override
+    public String getOperationName(Exchange exchange, Endpoint endpoint) {
+        // Internal communications use descriptive names, so suitable
+        // as an operation name, but need to strip the scheme and any options
+        return stripSchemeAndOptions(endpoint);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
index 51da0df..9106258 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
@@ -33,12 +33,40 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
 
     @Override
     public String getOperationName(Exchange exchange, Endpoint endpoint) {
-        return endpoint.getEndpointUri();
+        // OpenTracing aims to use low cardinality operation names. Ideally a specific
+        // span decorator should be defined for all relevant Camel components that
+        // identify a meaningful operation name
+        return URI.create(endpoint.getEndpointUri()).getScheme();
+    }
+
+    /**
+     * This method removes the scheme, any leading slash characters and
+     * options from the supplied URI. This is intended to extract a meaningful
+     * name from the URI that can be used in situations, such as the operation
+     * name.
+     *
+     * @param endpoint The endpoint
+     * @return The stripped value from the URI
+     */
+    public static String stripSchemeAndOptions(Endpoint endpoint) {
+        int start = endpoint.getEndpointUri().indexOf(':');
+        start++;
+        // Remove any leading '/'
+        while (endpoint.getEndpointUri().charAt(start) == '/') {
+            start++;
+        }
+        int end = endpoint.getEndpointUri().indexOf('?');
+        return end == -1 ? endpoint.getEndpointUri().substring(start)
+                : endpoint.getEndpointUri().substring(start, end);
     }
 
     @Override
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {
         span.setTag(Tags.COMPONENT.getKey(), CAMEL_COMPONENT + URI.create(endpoint.getEndpointUri()).getScheme());
+
+        // Including the endpoint URI provides access to any options that may have been provided, for
+        // subsequent analysis
+        span.setTag("camel.uri", endpoint.getEndpointUri());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectSpanDecorator.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..eceaf02
--- /dev/null
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/DirectSpanDecorator.java
@@ -0,0 +1,26 @@
+/**
+ * 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.decorators;
+
+public class DirectSpanDecorator extends AbstractInternalSpanDecorator {
+
+    @Override
+    public String getComponent() {
+        return "direct";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/JdbcSpanDecorator.java
----------------------------------------------------------------------
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 b42d377..640d390 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
@@ -17,6 +17,8 @@
 package org.apache.camel.opentracing.decorators;
 
 import io.opentracing.Span;
+import io.opentracing.tag.Tags;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 
@@ -31,11 +33,11 @@ public class JdbcSpanDecorator extends AbstractSpanDecorator {
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {
         super.pre(span, exchange, endpoint);
 
-        span.setTag("db.type", "sql");
+        span.setTag(Tags.DB_TYPE.getKey(), "sql");
 
         Object body = exchange.getIn().getBody();
         if (body instanceof String) {
-            span.setTag("db.statement", (String)body);
+            span.setTag(Tags.DB_STATEMENT.getKey(), (String)body);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecorator.java
----------------------------------------------------------------------
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 f224f6d..a6da0b8 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
@@ -21,6 +21,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 import io.opentracing.Span;
+import io.opentracing.tag.Tags;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 
@@ -45,14 +47,14 @@ public class MongoDBSpanDecorator extends AbstractSpanDecorator {
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {
         super.pre(span, exchange, endpoint);
 
-        span.setTag("db.type", getComponent());
+        span.setTag(Tags.DB_TYPE.getKey(), getComponent());
 
         Map<String, String> queryParameters = toQueryParameters(endpoint.getEndpointUri());
         String database = queryParameters.get("database");
         if (database != null) {
-            span.setTag("db.instance", database);
+            span.setTag(Tags.DB_INSTANCE.getKey(), database);
         }
-        span.setTag("db.statement", queryParameters.toString());
+        span.setTag(Tags.DB_STATEMENT.getKey(), queryParameters.toString());
     }
 
     public static Map<String, String> toQueryParameters(String uri) {

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SedaSpanDecorator.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..3bc73b3
--- /dev/null
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SedaSpanDecorator.java
@@ -0,0 +1,26 @@
+/**
+ * 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.decorators;
+
+public class SedaSpanDecorator extends AbstractInternalSpanDecorator {
+
+    @Override
+    public String getComponent() {
+        return "seda";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/SqlSpanDecorator.java
----------------------------------------------------------------------
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 a312f2a..2f11b52 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
@@ -17,6 +17,8 @@
 package org.apache.camel.opentracing.decorators;
 
 import io.opentracing.Span;
+import io.opentracing.tag.Tags;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 
@@ -33,11 +35,11 @@ public class SqlSpanDecorator extends AbstractSpanDecorator {
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {
         super.pre(span, exchange, endpoint);
 
-        span.setTag("db.type", "sql");
+        span.setTag(Tags.DB_TYPE.getKey(), "sql");
 
         Object sqlquery = exchange.getIn().getHeader(CAMEL_SQL_QUERY);
         if (sqlquery instanceof String) {
-            span.setTag("db.statement", (String) sqlquery);
+            span.setTag(Tags.DB_STATEMENT.getKey(), (String) sqlquery);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/VmSpanDecorator.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..bfd9bdc
--- /dev/null
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/VmSpanDecorator.java
@@ -0,0 +1,26 @@
+/**
+ * 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.decorators;
+
+public class VmSpanDecorator extends AbstractInternalSpanDecorator {
+
+    @Override
+    public String getComponent() {
+        return "vm";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
----------------------------------------------------------------------
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 452aaa2..137835e 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
@@ -16,6 +16,7 @@
 #
 
 org.apache.camel.opentracing.decorators.AhcSpanDecorator
+org.apache.camel.opentracing.decorators.DirectSpanDecorator
 org.apache.camel.opentracing.decorators.Http4SpanDecorator
 org.apache.camel.opentracing.decorators.HttpSpanDecorator
 org.apache.camel.opentracing.decorators.JdbcSpanDecorator
@@ -24,7 +25,10 @@ org.apache.camel.opentracing.decorators.MongoDBSpanDecorator
 org.apache.camel.opentracing.decorators.NettyHttp4SpanDecorator
 org.apache.camel.opentracing.decorators.NettyHttpSpanDecorator
 org.apache.camel.opentracing.decorators.RestletSpanDecorator
+org.apache.camel.opentracing.decorators.SedaSpanDecorator
 org.apache.camel.opentracing.decorators.ServletSpanDecorator
 org.apache.camel.opentracing.decorators.SqlSpanDecorator
 org.apache.camel.opentracing.decorators.TimerSpanDecorator
 org.apache.camel.opentracing.decorators.UndertowSpanDecorator
+org.apache.camel.opentracing.decorators.VmSpanDecorator
+

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
index d67ba9c..0f67f57 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
@@ -24,21 +24,21 @@ import org.junit.Test;
 public class ABCRouteTest extends CamelOpenTracingTestSupport {
 
     private static SpanTestData[] testdata = {
-        new SpanTestData().setLabel("seda:b server").setUri("seda://b")
+        new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(1),
-        new SpanTestData().setLabel("seda:b client").setUri("seda://b")
+        new SpanTestData().setLabel("seda:b client").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
-        new SpanTestData().setLabel("seda:c server").setUri("seda://c")
+        new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(3),
-        new SpanTestData().setLabel("seda:c client").setUri("seda://c")
+        new SpanTestData().setLabel("seda:c client").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
-        new SpanTestData().setLabel("seda:a server").setUri("seda://a")
+        new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(5),
-        new SpanTestData().setLabel("seda:a client").setUri("seda://a")
+        new SpanTestData().setLabel("seda:a client").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
-        new SpanTestData().setLabel("direct:start server").setUri("direct://start")
+        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")
+        new SpanTestData().setLabel("direct:start client").setUri("direct://start").setOperation("start")
             .setKind(Tags.SPAN_KIND_CLIENT)
     };
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
index 6b41b40..6c7ad98 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
@@ -76,16 +76,17 @@ public class CamelOpenTracingTestSupport extends CamelTestSupport {
             assertEquals(testdata[i].getLabel(),
                 SpanDecorator.CAMEL_COMPONENT + URI.create((String) testdata[i].getUri()).getScheme(),
                 component);
+            assertEquals(testdata[i].getLabel(), testdata[i].getUri(),
+                tracer.finishedSpans().get(i).tags().get("camel.uri"));
 
-            // If span associated with TestSEDASpanDecorator, check that 'testop' and pre/post tags have been defined
+            // If span associated with TestSEDASpanDecorator, check that pre/post tags have been defined
             if ("camel-seda".equals(component)) {
-                assertEquals("testop", tracer.finishedSpans().get(i).operationName());
                 assertTrue(tracer.finishedSpans().get(i).tags().containsKey("pre"));
                 assertTrue(tracer.finishedSpans().get(i).tags().containsKey("post"));
-            } else {
-                assertEquals(testdata[i].getLabel(), testdata[i].getUri(), tracer.finishedSpans().get(i).operationName());
             }
 
+            assertEquals(testdata[i].getLabel(), testdata[i].getOperation(), tracer.finishedSpans().get(i).operationName());
+
             assertEquals(testdata[i].getLabel(), testdata[i].getKind(),
                 tracer.finishedSpans().get(i).tags().get(Tags.SPAN_KIND.getKey()));
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ClientRecipientListRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ClientRecipientListRouteTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ClientRecipientListRouteTest.java
index 12aaea5..4f96589 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ClientRecipientListRouteTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ClientRecipientListRouteTest.java
@@ -24,21 +24,21 @@ import org.junit.Test;
 public class ClientRecipientListRouteTest extends CamelOpenTracingTestSupport {
 
     private static SpanTestData[] testdata = {
-        new SpanTestData().setLabel("seda:a server").setUri("seda://a")
+        new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(1),
-        new SpanTestData().setLabel("seda:a client").setUri("seda://a")
+        new SpanTestData().setLabel("seda:a client").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
-        new SpanTestData().setLabel("seda:b server").setUri("seda://b")
+        new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(3),
-        new SpanTestData().setLabel("seda:b client").setUri("seda://b")
+        new SpanTestData().setLabel("seda:b client").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
-        new SpanTestData().setLabel("seda:c server").setUri("seda://c")
+        new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(5),
-        new SpanTestData().setLabel("seda:c client").setUri("seda://c")
+        new SpanTestData().setLabel("seda:c client").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
-        new SpanTestData().setLabel("direct:start server").setUri("direct://start")
+        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")
+        new SpanTestData().setLabel("direct:start client").setUri("direct://start").setOperation("start")
             .setKind(Tags.SPAN_KIND_CLIENT)
     };
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastRouteTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastRouteTest.java
index a301d35..9ceda84 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastRouteTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastRouteTest.java
@@ -24,21 +24,21 @@ import org.junit.Test;
 public class MulticastRouteTest extends CamelOpenTracingTestSupport {
 
     private static SpanTestData[] testdata = {
-        new SpanTestData().setLabel("seda:b server").setUri("seda://b")
+        new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(1),
-        new SpanTestData().setLabel("seda:b client").setUri("seda://b")
+        new SpanTestData().setLabel("seda:b client").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
-        new SpanTestData().setLabel("seda:c server").setUri("seda://c")
+        new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(3),
-        new SpanTestData().setLabel("seda:c client").setUri("seda://c")
+        new SpanTestData().setLabel("seda:c client").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
-        new SpanTestData().setLabel("seda:a server").setUri("seda://a")
+        new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(5),
-        new SpanTestData().setLabel("seda:a client").setUri("seda://a")
+        new SpanTestData().setLabel("seda:a client").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
-        new SpanTestData().setLabel("direct:start server").setUri("direct://start")
+        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")
+        new SpanTestData().setLabel("direct:start client").setUri("direct://start").setOperation("start")
             .setKind(Tags.SPAN_KIND_CLIENT)
     };
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/RouteConcurrentTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/RouteConcurrentTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/RouteConcurrentTest.java
index 8471f3e..843444d 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/RouteConcurrentTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/RouteConcurrentTest.java
@@ -27,13 +27,13 @@ import org.junit.Test;
 public class RouteConcurrentTest extends CamelOpenTracingTestSupport {
 
     private static SpanTestData[] testdata = {
-        new SpanTestData().setLabel("seda:foo client").setUri("seda://foo")
+        new SpanTestData().setLabel("seda:foo client").setUri("seda://foo").setOperation("foo")
             .setKind(Tags.SPAN_KIND_CLIENT),
-        new SpanTestData().setLabel("seda:bar client").setUri("seda://bar")
+        new SpanTestData().setLabel("seda:bar client").setUri("seda://bar").setOperation("bar")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(2),
-        new SpanTestData().setLabel("seda:foo server").setUri("seda://foo?concurrentConsumers=5")
+        new SpanTestData().setLabel("seda:foo server").setUri("seda://foo?concurrentConsumers=5").setOperation("foo")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(0),
-        new SpanTestData().setLabel("seda:bar server").setUri("seda://bar?concurrentConsumers=5")
+        new SpanTestData().setLabel("seda:bar server").setUri("seda://bar?concurrentConsumers=5").setOperation("bar")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(1)
     };
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
index 4bf542a..6f532ce 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
@@ -20,6 +20,7 @@ public class SpanTestData {
 
     private String label;
     private String uri;
+    private String operation;
     private String kind;
     private int parentId = -1;
 
@@ -41,6 +42,15 @@ public class SpanTestData {
         return this;
     }
 
+    public String getOperation() {
+        return operation;
+    }
+
+    public SpanTestData setOperation(String operation) {
+        this.operation = operation;
+        return this;
+    }
+
     public String getKind() {
         return kind;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TestSEDASpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TestSEDASpanDecorator.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TestSEDASpanDecorator.java
index 9b13b73..6b37f6c 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TestSEDASpanDecorator.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TestSEDASpanDecorator.java
@@ -19,19 +19,9 @@ package org.apache.camel.opentracing;
 import io.opentracing.Span;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.opentracing.decorators.AbstractSpanDecorator;
+import org.apache.camel.opentracing.decorators.SedaSpanDecorator;
 
-public class TestSEDASpanDecorator extends AbstractSpanDecorator {
-
-    @Override
-    public String getComponent() {
-        return "seda";
-    }
-
-    @Override
-    public String getOperationName(Exchange exchange, Endpoint endpoint) {
-        return "testop";
-    }
+public class TestSEDASpanDecorator extends SedaSpanDecorator {
 
     @Override
     public void pre(Span span, Exchange exchange, Endpoint endpoint) {

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TwoServiceTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TwoServiceTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TwoServiceTest.java
index 4425102..c014803 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TwoServiceTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/TwoServiceTest.java
@@ -24,13 +24,13 @@ import org.junit.Test;
 public class TwoServiceTest extends CamelOpenTracingTestSupport {
 
     private static SpanTestData[] testdata = {
-        new SpanTestData().setLabel("ServiceB server").setUri("direct://ServiceB")
+        new SpanTestData().setLabel("ServiceB server").setUri("direct://ServiceB").setOperation("ServiceB")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(1),
-        new SpanTestData().setLabel("ServiceB client").setUri("direct://ServiceB")
+        new SpanTestData().setLabel("ServiceB client").setUri("direct://ServiceB").setOperation("ServiceB")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(2),
-        new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA")
+        new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA")
             .setKind(Tags.SPAN_KIND_SERVER).setParentId(3),
-        new SpanTestData().setLabel("ServiceA client").setUri("direct://ServiceA")
+        new SpanTestData().setLabel("ServiceA client").setUri("direct://ServiceA").setOperation("ServiceA")
             .setKind(Tags.SPAN_KIND_CLIENT)
     };
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractHttpSpanDecoratorTest.java
----------------------------------------------------------------------
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 093bb6d..75bd31c 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
@@ -27,20 +27,21 @@ import org.junit.Test;
 import org.mockito.Mockito;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 public class AbstractHttpSpanDecoratorTest {
 
     private static final String TEST_URI = "http://localhost:8080/test";
 
     @Test
-    public void testGetOperationNameFromMethodHeader() {
+    public void testGetOperationName() {
         Exchange exchange = Mockito.mock(Exchange.class);
         Message message = Mockito.mock(Message.class);
 
         Mockito.when(exchange.getIn()).thenReturn(message);
         Mockito.when(message.getHeader(Exchange.HTTP_METHOD)).thenReturn("PUT");
 
-        SpanDecorator decorator = new AbstractHttpSpanDecorator() {
+        AbstractHttpSpanDecorator decorator = new AbstractHttpSpanDecorator() {
             @Override
             public String getComponent() {
                 return null;
@@ -51,26 +52,30 @@ public class AbstractHttpSpanDecoratorTest {
     }
 
     @Test
-    public void testGetOperationNameQueryStringHeader() {
+    public void testGetMethodFromMethodHeader() {
         Exchange exchange = Mockito.mock(Exchange.class);
         Message message = Mockito.mock(Message.class);
 
         Mockito.when(exchange.getIn()).thenReturn(message);
-        Mockito.when(message.getHeader(Exchange.HTTP_QUERY)).thenReturn("MyQuery");
+        Mockito.when(message.getHeader(Exchange.HTTP_METHOD)).thenReturn("PUT");
 
-        SpanDecorator decorator = new AbstractHttpSpanDecorator() {
-            @Override
-            public String getComponent() {
-                return null;
-            }
-        };
+        assertEquals("PUT", AbstractHttpSpanDecorator.getHttpMethod(exchange, null));
+    }
+
+    @Test
+    public void testGetMethodQueryStringHeader() {
+        Exchange exchange = Mockito.mock(Exchange.class);
+        Message message = Mockito.mock(Message.class);
+
+        Mockito.when(exchange.getIn()).thenReturn(message);
+        Mockito.when(message.getHeader(Exchange.HTTP_QUERY)).thenReturn("MyQuery");
 
         assertEquals(AbstractHttpSpanDecorator.GET_METHOD,
-                decorator.getOperationName(exchange, null));
+                AbstractHttpSpanDecorator.getHttpMethod(exchange, null));
     }
 
     @Test
-    public void testGetOperationNameQueryStringInEndpoint() {
+    public void testGetMethodQueryStringInEndpoint() {
         Endpoint endpoint = Mockito.mock(Endpoint.class);
         Exchange exchange = Mockito.mock(Exchange.class);
         Message message = Mockito.mock(Message.class);
@@ -79,19 +84,12 @@ public class AbstractHttpSpanDecoratorTest {
         Mockito.when(exchange.getIn()).thenReturn(message);
         Mockito.when(message.getHeader(Exchange.HTTP_URI)).thenReturn("http://localhost:8080/endpoint?query=hello");
 
-        SpanDecorator decorator = new AbstractHttpSpanDecorator() {
-            @Override
-            public String getComponent() {
-                return null;
-            }
-        };
-
         assertEquals(AbstractHttpSpanDecorator.GET_METHOD,
-                decorator.getOperationName(exchange, endpoint));
+                AbstractHttpSpanDecorator.getHttpMethod(exchange, endpoint));
     }
 
     @Test
-    public void testGetOperationNameBodyNotNull() {
+    public void testGetMethodBodyNotNull() {
         Endpoint endpoint = Mockito.mock(Endpoint.class);
         Exchange exchange = Mockito.mock(Exchange.class);
         Message message = Mockito.mock(Message.class);
@@ -101,19 +99,12 @@ public class AbstractHttpSpanDecoratorTest {
         Mockito.when(message.getHeader(Exchange.HTTP_URI)).thenReturn(TEST_URI);
         Mockito.when(message.getBody()).thenReturn("Message Body");
 
-        SpanDecorator decorator = new AbstractHttpSpanDecorator() {
-            @Override
-            public String getComponent() {
-                return null;
-            }
-        };
-
         assertEquals(AbstractHttpSpanDecorator.POST_METHOD,
-                decorator.getOperationName(exchange, endpoint));
+                AbstractHttpSpanDecorator.getHttpMethod(exchange, endpoint));
     }
 
     @Test
-    public void testGetOperationNameDefault() {
+    public void testGetMethodDefault() {
         Endpoint endpoint = Mockito.mock(Endpoint.class);
         Exchange exchange = Mockito.mock(Exchange.class);
         Message message = Mockito.mock(Message.class);
@@ -122,15 +113,8 @@ public class AbstractHttpSpanDecoratorTest {
         Mockito.when(exchange.getIn()).thenReturn(message);
         Mockito.when(message.getHeader(Exchange.HTTP_URI)).thenReturn(TEST_URI);
 
-        SpanDecorator decorator = new AbstractHttpSpanDecorator() {
-            @Override
-            public String getComponent() {
-                return null;
-            }
-        };
-
         assertEquals(AbstractHttpSpanDecorator.GET_METHOD,
-                decorator.getOperationName(exchange, endpoint));
+                AbstractHttpSpanDecorator.getHttpMethod(exchange, endpoint));
     }
 
     @Test
@@ -156,6 +140,7 @@ public class AbstractHttpSpanDecoratorTest {
         decorator.pre(span, exchange, endpoint);
 
         assertEquals(TEST_URI, span.tags().get(Tags.HTTP_URL.getKey()));
+        assertTrue(span.tags().containsKey(Tags.HTTP_METHOD.getKey()));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/AbstractSpanDecoratorTest.java
----------------------------------------------------------------------
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 5fcecb2..9ba66f5 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
@@ -44,7 +44,9 @@ public class AbstractSpanDecoratorTest {
             }
         };
 
-        assertEquals(TEST_URI, decorator.getOperationName(null, endpoint));
+        // Operation name is scheme, as no specific span decorator to
+        // identify an appropriate name
+        assertEquals("test", decorator.getOperationName(null, endpoint));
     }
 
     @Test
@@ -96,4 +98,31 @@ public class AbstractSpanDecoratorTest {
         assertEquals(e.getMessage(), span.logEntries().get(0).fields().get("message"));
     }
 
+    @Test
+    public void testStripSchemeNoOptions() {
+        Endpoint endpoint = Mockito.mock(Endpoint.class);
+
+        Mockito.when(endpoint.getEndpointUri()).thenReturn("direct:hello");
+
+        assertEquals("hello", AbstractSpanDecorator.stripSchemeAndOptions(endpoint));
+    }
+
+    @Test
+    public void testStripSchemeNoOptionsWithSlashes() {
+        Endpoint endpoint = Mockito.mock(Endpoint.class);
+
+        Mockito.when(endpoint.getEndpointUri()).thenReturn("direct://hello");
+
+        assertEquals("hello", AbstractSpanDecorator.stripSchemeAndOptions(endpoint));
+    }
+
+    @Test
+    public void testStripSchemeAndOptions() {
+        Endpoint endpoint = Mockito.mock(Endpoint.class);
+
+        Mockito.when(endpoint.getEndpointUri()).thenReturn("direct:hello?world=true");
+
+        assertEquals("hello", AbstractSpanDecorator.stripSchemeAndOptions(endpoint));
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/JdbcSpanDecoratorTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/JdbcSpanDecoratorTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/JdbcSpanDecoratorTest.java
index a69fb78..357fa44 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/JdbcSpanDecoratorTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/JdbcSpanDecoratorTest.java
@@ -18,6 +18,8 @@ package org.apache.camel.opentracing.decorators;
 
 import io.opentracing.mock.MockSpan;
 import io.opentracing.mock.MockTracer;
+import io.opentracing.tag.Tags;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -48,8 +50,8 @@ public class JdbcSpanDecoratorTest {
 
         decorator.pre(span, exchange, endpoint);
 
-        assertEquals("sql", span.tags().get("db.type"));
-        assertEquals(SQL_STATEMENT, span.tags().get("db.statement"));
+        assertEquals("sql", span.tags().get(Tags.DB_TYPE.getKey()));
+        assertEquals(SQL_STATEMENT, span.tags().get(Tags.DB_STATEMENT.getKey()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecoratorTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecoratorTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecoratorTest.java
index 8961bb3..1565fea 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecoratorTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MongoDBSpanDecoratorTest.java
@@ -20,6 +20,8 @@ import java.util.Map;
 
 import io.opentracing.mock.MockSpan;
 import io.opentracing.mock.MockTracer;
+import io.opentracing.tag.Tags;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.opentracing.SpanDecorator;
 import org.junit.Test;
@@ -66,9 +68,9 @@ public class MongoDBSpanDecoratorTest {
 
         decorator.pre(span, null, endpoint);
 
-        assertEquals("mongodb", span.tags().get("db.type"));
-        assertEquals("flights", span.tags().get("db.instance"));
-        assertTrue(span.tags().containsKey("db.statement"));
+        assertEquals("mongodb", span.tags().get(Tags.DB_TYPE.getKey()));
+        assertEquals("flights", span.tags().get(Tags.DB_INSTANCE.getKey()));
+        assertTrue(span.tags().containsKey(Tags.DB_STATEMENT.getKey()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/SqlSpanDecoratorTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/SqlSpanDecoratorTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/SqlSpanDecoratorTest.java
index d6b0a25..e2058bf 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/SqlSpanDecoratorTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/SqlSpanDecoratorTest.java
@@ -18,6 +18,8 @@ package org.apache.camel.opentracing.decorators;
 
 import io.opentracing.mock.MockSpan;
 import io.opentracing.mock.MockTracer;
+import io.opentracing.tag.Tags;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -48,8 +50,8 @@ public class SqlSpanDecoratorTest {
 
         decorator.pre(span, exchange, endpoint);
 
-        assertEquals("sql", span.tags().get("db.type"));
-        assertEquals(SQL_STATEMENT, span.tags().get("db.statement"));
+        assertEquals("sql", span.tags().get(Tags.DB_TYPE.getKey()));
+        assertEquals(SQL_STATEMENT, span.tags().get(Tags.DB_STATEMENT.getKey()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4f6c3405/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index e9245ae..0e95441 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -488,7 +488,7 @@
     <openstack4j-guava-version>17.0</openstack4j-guava-version>
     <opentracing-java-globaltracer-version>0.1.0</opentracing-java-globaltracer-version>
     <opentracing-java-spanmanager-version>0.0.3</opentracing-java-spanmanager-version>
-    <opentracing-version>0.20.9</opentracing-version>
+    <opentracing-version>0.20.10</opentracing-version>
     <ops4j-base-version>1.5.0</ops4j-base-version>
     <optaplanner-version>6.5.0.Final</optaplanner-version>
     <oro-bundle-version>2.0.8_6</oro-bundle-version>