You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2018/09/29 08:40:19 UTC

[camel] branch master updated (32112c8 -> bc9be00)

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

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


    from 32112c8  Upgrade Netty to version 4.1.30.Final
     new 7bea03d  Added dash encoding for JMS and extensibility for other connectors
     new 0740130  Makes encoding activation configuration
     new bc9be00  CAMEL-12842: Fixed CS issues

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../src/main/docs/opentracing.adoc                 |  5 +-
 .../camel/opentracing/OpenTracingTracer.java       | 58 ++++++++++-------
 .../apache/camel/opentracing/SpanDecorator.java    | 23 +++++++
 .../decorators/AbstractMessagingSpanDecorator.java | 17 ++++-
 .../decorators/AbstractSpanDecorator.java          | 33 +++++++---
 ...va => CamelMessagingHeadersExtractAdapter.java} | 29 +++++++--
 ...ava => CamelMessagingHeadersInjectAdapter.java} | 33 ++++++++--
 .../CamelMessagingHeadersExtractAdapterTest.java   | 74 ++++++++++++++++++++++
 .../CamelMessagingHeadersInjectAdapterTest.java    | 72 +++++++++++++++++++++
 .../starter/OpenTracingAutoConfiguration.java      |  3 +
 .../OpenTracingConfigurationProperties.java        | 11 ++++
 11 files changed, 312 insertions(+), 46 deletions(-)
 copy components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/{CamelHeadersExtractAdapter.java => CamelMessagingHeadersExtractAdapter.java} (56%)
 copy components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/{CamelHeadersInjectAdapter.java => CamelMessagingHeadersInjectAdapter.java} (59%)
 create mode 100644 components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
 create mode 100644 components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java


[camel] 01/03: Added dash encoding for JMS and extensibility for other connectors

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7bea03db591c0f1c090df9dfddc0c479ce5940c1
Author: Frederic Giloux <fg...@users.noreply.github.com>
AuthorDate: Fri Sep 28 16:23:41 2018 +0200

    Added dash encoding for JMS and extensibility for other connectors
---
 .../camel/opentracing/OpenTracingTracer.java       |  6 +--
 .../apache/camel/opentracing/SpanDecorator.java    | 22 ++++++++
 .../decorators/AbstractMessagingSpanDecorator.java | 15 ++++++
 .../decorators/AbstractSpanDecorator.java          | 13 +++++
 .../CamelMessagingHeadersExtractAdapter.java       | 56 ++++++++++++++++++++
 .../CamelMessagingHeadersInjectAdapter.java        | 60 ++++++++++++++++++++++
 .../CamelMessagingHeadersExtractAdapterTest.java   | 44 ++++++++++++++++
 .../CamelMessagingHeadersInjectAdapterTest.java    | 51 ++++++++++++++++++
 8 files changed, 263 insertions(+), 4 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 8696625..d4f0dba 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
@@ -41,8 +41,6 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.opentracing.propagation.CamelHeadersExtractAdapter;
-import org.apache.camel.opentracing.propagation.CamelHeadersInjectAdapter;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
@@ -235,7 +233,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                     Span span = spanBuilder.start();
                     sd.pre(span, ese.getExchange(), ese.getEndpoint());
                     tracer.inject(span.context(), Format.Builtin.TEXT_MAP,
-                        new CamelHeadersInjectAdapter(ese.getExchange().getIn().getHeaders()));
+                        sd.getInjectAdapter(ese.getExchange().getIn().getHeaders()));
                     ActiveSpanManager.activate(ese.getExchange(), span);
 
                     if (LOG.isTraceEnabled()) {
@@ -291,7 +289,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 SpanDecorator sd = getSpanDecorator(route.getEndpoint());
                 Span span = tracer.buildSpan(sd.getOperationName(exchange, route.getEndpoint()))
                     .asChildOf(tracer.extract(Format.Builtin.TEXT_MAP,
-                        new CamelHeadersExtractAdapter(exchange.getIn().getHeaders())))
+                        sd.getExtractAdapter(exchange.getIn().getHeaders())))
                     .withTag(Tags.SPAN_KIND.getKey(), sd.getReceiverSpanKind())
                     .start();
                 sd.pre(span, exchange, route.getEndpoint());
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 54414cf..393e363 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
@@ -16,7 +16,11 @@
  */
 package org.apache.camel.opentracing;
 
+import io.opentracing.propagation.TextMap;
 import io.opentracing.Span;
+
+import java.util.Map;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.opentracing.decorators.AbstractSpanDecorator;
@@ -100,4 +104,22 @@ public interface SpanDecorator {
      */
     String getReceiverSpanKind();
 
+    /**
+     * This method returns the map to be used for headers extraction
+     * when the component is receiving a communication.
+     *
+     * @param a map containing the objects
+     * @return The extraction map
+     */
+    TextMap getExtractAdapter(Map<String, Object> map);
+
+    /**
+     * This method returns the map to be used for headers injection
+     *  when the component is receiving a communication.
+     *
+     * @param a map containing the objects
+     * @return The injection map
+     */
+    TextMap getInjectAdapter(Map<String, Object> map);
+
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
index c20ab0f..a0addfb 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
@@ -17,9 +17,15 @@
 package org.apache.camel.opentracing.decorators;
 
 import io.opentracing.Span;
+import io.opentracing.propagation.TextMap;
 import io.opentracing.tag.Tags;
+
+import java.util.Map;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.opentracing.propagation.CamelMessagingHeadersExtractAdapter;
+import org.apache.camel.opentracing.propagation.CamelMessagingHeadersInjectAdapter;
 
 public abstract class AbstractMessagingSpanDecorator extends AbstractSpanDecorator {
 
@@ -73,4 +79,13 @@ public abstract class AbstractMessagingSpanDecorator extends AbstractSpanDecorat
         return null;
     }
 
+    @Override
+    public TextMap getExtractAdapter(final Map<String, Object> map) {
+    	return new CamelMessagingHeadersExtractAdapter(map);
+    }
+
+    @Override
+    public TextMap getInjectAdapter(final Map<String, Object> map) {
+    	return new CamelMessagingHeadersInjectAdapter(map);    	
+    }
 }
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 702e43f..89648c5 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
@@ -20,11 +20,15 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import io.opentracing.propagation.TextMap;
 import io.opentracing.Span;
 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.opentracing.propagation.CamelHeadersExtractAdapter;
+import org.apache.camel.opentracing.propagation.CamelHeadersInjectAdapter;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 
@@ -126,4 +130,13 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
         }
     }
 
+    @Override
+    public TextMap getExtractAdapter(final Map<String, Object> map) {
+    	return new CamelHeadersExtractAdapter(map);
+    }
+
+    @Override
+    public TextMap getInjectAdapter(final Map<String, Object> map) {
+    	return new CamelHeadersInjectAdapter(map);    	
+    }
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
new file mode 100644
index 0000000..2797fec
--- /dev/null
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
@@ -0,0 +1,56 @@
+/**
+ * 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.propagation;
+
+import io.opentracing.propagation.TextMap;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+public final class CamelMessagingHeadersExtractAdapter implements TextMap {
+ 
+    private final Map<String, String> map = new HashMap<>();
+
+    public CamelMessagingHeadersExtractAdapter(final Map<String, Object> map) {
+    	// Extract string valued map entries
+        map.entrySet().stream().filter(e -> e.getValue() instanceof String).forEach(e ->
+            this.map.put(decodeDash(e.getKey()), (String) e.getValue()));
+    }
+
+    @Override
+    public Iterator<Map.Entry<String, String>> iterator() {
+        return map.entrySet().iterator();
+    }
+
+    @Override
+    public void put(String key, String value) {
+        throw new UnsupportedOperationException("CamelMessagingHeadersExtractAdapter should only be used with Tracer.extract()");
+    }
+    
+    /**
+     * Decode dashes (encoded in {@link CamelMessagingHeadersInjectAdapter}
+     * Dash encoding and decoding is required by JMS. This is implemented here
+     * rather than specifically to JMS so that other Camel messaging endpoints
+     * can take part in traces where the peer is using JMS. 
+     * @param the source
+     * @return the result
+     */
+    private String decodeDash(String key) {
+      return key.replace(CamelMessagingHeadersInjectAdapter.JMS_DASH, "-");
+  }
+}
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
new file mode 100644
index 0000000..c819d22
--- /dev/null
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
@@ -0,0 +1,60 @@
+/**
+ * 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.propagation;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import io.opentracing.propagation.TextMap;
+
+public final class CamelMessagingHeadersInjectAdapter implements TextMap {
+
+	// As per the JMS specs, header names must be valid Java identifier part characters.
+	// This means that any header names that contain illegal characters (- for example) should be handled correctly
+	// Opentracing java-jms does it as follows.
+	static final String JMS_DASH = "_$dash$_";
+
+	private final Map<String, Object> map;
+
+    public CamelMessagingHeadersInjectAdapter(final Map<String, Object> map) {
+        this.map = map;
+    }
+
+    @Override
+    public Iterator<Map.Entry<String, String>> iterator() {
+        throw new UnsupportedOperationException("CamelHeadersInjectAdapter should only be used with Tracer.inject()");
+    }
+
+    @Override
+    public void put(String key, String value) {
+        // Assume any header property that begins with 'Camel' is for internal use
+        if (!key.startsWith("Camel")) {
+            this.map.put(encodeDash(key), value);
+        }
+    }
+    
+    /**
+     * Encode all dashes because JMS specification doesn't allow them in property name
+     */
+    private String encodeDash(String key) {
+      if (key == null || key.isEmpty()) {
+        return key;
+      }
+
+      return key.replace("-", JMS_DASH);
+   }
+}
\ No newline at end of file
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
new file mode 100644
index 0000000..178c46b
--- /dev/null
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
@@ -0,0 +1,44 @@
+package org.apache.camel.opentracing.propagation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import static org.apache.camel.opentracing.propagation.CamelMessagingHeadersInjectAdapter.JMS_DASH;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.junit.Test;
+
+public class CamelMessagingHeadersExtractAdapterTest {
+	
+	@Test
+	public void noProperties() {
+		final Map<String, Object> map = new HashMap<String, Object>();
+		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map);
+		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+		assertFalse(iterator.hasNext());
+	}
+
+	@Test
+	public void oneProperty() {
+		final Map<String, Object> map = new HashMap<String, Object>();
+		map.put("key", "value");
+		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map);
+		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+		Map.Entry<String, String> entry = iterator.next();
+		assertEquals("key", entry.getKey());
+		assertEquals("value", entry.getValue());
+	}
+
+	@Test
+	public void propertyWithDash() {
+		final Map<String, Object> map = new HashMap<String, Object>();
+		map.put(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, "value1");
+		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map);
+		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+		Map.Entry<String, String> entry = iterator.next();
+		assertEquals("-key-1-", entry.getKey());
+		assertEquals("value1", entry.getValue());
+	}
+}
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
new file mode 100644
index 0000000..1220e77
--- /dev/null
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
@@ -0,0 +1,51 @@
+package org.apache.camel.opentracing.propagation;
+
+import static org.apache.camel.opentracing.propagation.CamelMessagingHeadersInjectAdapter.JMS_DASH;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class CamelMessagingHeadersInjectAdapterTest {
+
+	private Map<String,Object> map;
+	
+
+	@Rule
+	public ExpectedException thrown = ExpectedException.none();
+	  
+	@Before
+	public void before() {
+	    map = new HashMap<String,Object>();
+	}
+	
+	@Test
+	public void cannotGetIterator() {
+		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map);
+		thrown.expect(UnsupportedOperationException.class);
+		adapter.iterator();
+	}
+
+	@Test
+	public void putProperties() {
+		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map);
+		adapter.put("key1", "value1");
+	    adapter.put("key2", "value2");
+	    adapter.put("key1", "value3");
+	    assertEquals("value3", map.get("key1"));
+	    assertEquals("value2", map.get("key2"));
+	}
+
+	@Test
+	public void propertyWithDash() {
+		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map);
+		adapter.put("-key-1-", "value1");
+		assertEquals("value1", map.get(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH));
+	}
+}


[camel] 03/03: CAMEL-12842: Fixed CS issues

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bc9be002b0b482adff8b860c4b3882e1fab9cd64
Author: aldettinger <al...@gmail.com>
AuthorDate: Sat Sep 29 10:31:11 2018 +0200

    CAMEL-12842: Fixed CS issues
---
 .../camel/opentracing/OpenTracingTracer.java       |  59 +++++------
 .../apache/camel/opentracing/SpanDecorator.java    |   5 +-
 .../decorators/AbstractMessagingSpanDecorator.java |  12 +--
 .../decorators/AbstractSpanDecorator.java          |  30 +++---
 .../CamelMessagingHeadersExtractAdapter.java       |  33 +++---
 .../CamelMessagingHeadersInjectAdapter.java        |  34 ++++---
 .../CamelMessagingHeadersExtractAdapterTest.java   | 111 ++++++++++++---------
 .../CamelMessagingHeadersInjectAdapterTest.java    | 104 ++++++++++---------
 8 files changed, 212 insertions(+), 176 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 e6f9c6d..3706377 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
@@ -30,7 +30,6 @@ import io.opentracing.contrib.tracerresolver.TracerResolver;
 import io.opentracing.noop.NoopTracerFactory;
 import io.opentracing.propagation.Format;
 import io.opentracing.tag.Tags;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
@@ -56,11 +55,15 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * To use OpenTracing with Camel then setup this {@link OpenTracingTracer} in your Camel application.
+ * To use OpenTracing with Camel then setup this {@link OpenTracingTracer} in
+ * your Camel application.
  * <p/>
- * This class is implemented as both an {@link org.apache.camel.spi.EventNotifier} and {@link RoutePolicy} that allows
- * to trap when Camel starts/ends an {@link Exchange} being routed using the {@link RoutePolicy} and during the routing
- * if the {@link Exchange} sends messages, then we track them using the {@link org.apache.camel.spi.EventNotifier}.
+ * This class is implemented as both an
+ * {@link org.apache.camel.spi.EventNotifier} and {@link RoutePolicy} that
+ * allows to trap when Camel starts/ends an {@link Exchange} being routed using
+ * the {@link RoutePolicy} and during the routing if the {@link Exchange} sends
+ * messages, then we track them using the
+ * {@link org.apache.camel.spi.EventNotifier}.
  */
 @ManagedResource(description = "OpenTracingTracer")
 public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFactory, StaticService, CamelContextAware {
@@ -100,12 +103,14 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     }
 
     /**
-     * Registers this {@link OpenTracingTracer} on the {@link CamelContext} if not already registered.
+     * Registers this {@link OpenTracingTracer} on the {@link CamelContext} if
+     * not already registered.
      */
     public void init(CamelContext camelContext) {
         if (!camelContext.hasService(this)) {
             try {
-                // start this service eager so we init before Camel is starting up
+                // start this service eager so we init before Camel is starting
+                // up
                 camelContext.addService(this, true, true);
 
             } catch (Exception e) {
@@ -133,17 +138,18 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     }
 
     public boolean isEncoding() {
-		return encoding;
-	}
+        return encoding;
+    }
 
-	public void setEncoding(boolean encoding) {
-		this.encoding = encoding;
-	}
+    public void setEncoding(boolean encoding) {
+        this.encoding = encoding;
+    }
 
-	/**
-     * Adds an exclude pattern that will disable tracing for Camel messages that matches the pattern.
+    /**
+     * Adds an exclude pattern that will disable tracing for Camel messages that
+     * matches the pattern.
      *
-     * @param pattern  the pattern such as route id, endpoint url
+     * @param pattern the pattern such as route id, endpoint url
      */
     public void addExcludePattern(String pattern) {
         excludePatterns.add(pattern);
@@ -227,29 +233,29 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
         public void notify(EventObject event) throws Exception {
             try {
                 if (event instanceof ExchangeSendingEvent) {
-                    ExchangeSendingEvent ese = (ExchangeSendingEvent) event;
+                    ExchangeSendingEvent ese = (ExchangeSendingEvent)event;
                     SpanDecorator sd = getSpanDecorator(ese.getEndpoint());
                     if (!sd.newSpan() || isExcluded(ese.getExchange(), ese.getEndpoint())) {
                         return;
                     }
                     Span parent = ActiveSpanManager.getSpan(ese.getExchange());
-                    SpanBuilder spanBuilder = tracer.buildSpan(sd.getOperationName(ese.getExchange(), ese.getEndpoint()))
-                        .withTag(Tags.SPAN_KIND.getKey(), sd.getInitiatorSpanKind());
-                    // Temporary workaround to avoid adding 'null' span as a parent
+                    SpanBuilder spanBuilder = tracer.buildSpan(sd.getOperationName(ese.getExchange(), ese.getEndpoint())).withTag(Tags.SPAN_KIND.getKey(),
+                                                                                                                                  sd.getInitiatorSpanKind());
+                    // Temporary workaround to avoid adding 'null' span as a
+                    // parent
                     if (parent != null) {
                         spanBuilder.asChildOf(parent);
                     }
                     Span span = spanBuilder.start();
                     sd.pre(span, ese.getExchange(), ese.getEndpoint());
-                    tracer.inject(span.context(), Format.Builtin.TEXT_MAP,
-                        sd.getInjectAdapter(ese.getExchange().getIn().getHeaders(), encoding));
+                    tracer.inject(span.context(), Format.Builtin.TEXT_MAP, sd.getInjectAdapter(ese.getExchange().getIn().getHeaders(), encoding));
                     ActiveSpanManager.activate(ese.getExchange(), span);
 
                     if (LOG.isTraceEnabled()) {
                         LOG.trace("OpenTracing: start client span={}", span);
                     }
                 } else if (event instanceof ExchangeSentEvent) {
-                    ExchangeSentEvent ese = (ExchangeSentEvent) event;
+                    ExchangeSentEvent ese = (ExchangeSentEvent)event;
                     SpanDecorator sd = getSpanDecorator(ese.getEndpoint());
                     if (!sd.newSpan() || isExcluded(ese.getExchange(), ese.getEndpoint())) {
                         return;
@@ -274,8 +280,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
 
         @Override
         public boolean isEnabled(EventObject event) {
-            return event instanceof ExchangeSendingEvent
-                || event instanceof ExchangeSentEvent;
+            return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
         @Override
@@ -297,10 +302,8 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 }
                 SpanDecorator sd = getSpanDecorator(route.getEndpoint());
                 Span span = tracer.buildSpan(sd.getOperationName(exchange, route.getEndpoint()))
-                    .asChildOf(tracer.extract(Format.Builtin.TEXT_MAP,
-                        sd.getExtractAdapter(exchange.getIn().getHeaders(), encoding)))
-                    .withTag(Tags.SPAN_KIND.getKey(), sd.getReceiverSpanKind())
-                    .start();
+                    .asChildOf(tracer.extract(Format.Builtin.TEXT_MAP, sd.getExtractAdapter(exchange.getIn().getHeaders(), encoding)))
+                    .withTag(Tags.SPAN_KIND.getKey(), sd.getReceiverSpanKind()).start();
                 sd.pre(span, exchange, route.getEndpoint());
                 ActiveSpanManager.activate(exchange, span);
                 if (LOG.isTraceEnabled()) {
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 44c2a41..e94e318 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
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.opentracing;
 
-import io.opentracing.propagation.TextMap;
-import io.opentracing.Span;
-
 import java.util.Map;
 
+import io.opentracing.Span;
+import io.opentracing.propagation.TextMap;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.opentracing.decorators.AbstractSpanDecorator;
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
index 5a03953..bccae81 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
@@ -16,12 +16,11 @@
  */
 package org.apache.camel.opentracing.decorators;
 
+import java.util.Map;
+
 import io.opentracing.Span;
 import io.opentracing.propagation.TextMap;
 import io.opentracing.tag.Tags;
-
-import java.util.Map;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.opentracing.propagation.CamelMessagingHeadersExtractAdapter;
@@ -50,7 +49,8 @@ public abstract class AbstractMessagingSpanDecorator extends AbstractSpanDecorat
     }
 
     /**
-     * This method identifies the destination from the supplied exchange and/or endpoint.
+     * This method identifies the destination from the supplied exchange and/or
+     * endpoint.
      *
      * @param exchange The exchange
      * @param endpoint The endpoint
@@ -81,11 +81,11 @@ public abstract class AbstractMessagingSpanDecorator extends AbstractSpanDecorat
 
     @Override
     public TextMap getExtractAdapter(final Map<String, Object> map, final boolean jmsEncoding) {
-    	return new CamelMessagingHeadersExtractAdapter(map, jmsEncoding);
+        return new CamelMessagingHeadersExtractAdapter(map, jmsEncoding);
     }
 
     @Override
     public TextMap getInjectAdapter(final Map<String, Object> map, final boolean jmsEncoding) {
-    	return new CamelMessagingHeadersInjectAdapter(map, jmsEncoding);    	
+        return new CamelMessagingHeadersInjectAdapter(map, jmsEncoding);
     }
 }
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 6f51365..e057651 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
@@ -20,10 +20,9 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import io.opentracing.propagation.TextMap;
 import io.opentracing.Span;
+import io.opentracing.propagation.TextMap;
 import io.opentracing.tag.Tags;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.opentracing.SpanDecorator;
@@ -44,17 +43,18 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
 
     @Override
     public String getOperationName(Exchange exchange, Endpoint endpoint) {
-        // OpenTracing aims to use low cardinality operation names. Ideally a specific
-        // span decorator should be defined for all relevant Camel components that
+        // 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 getComponentName(endpoint);
     }
 
     /**
-     * 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.
+     * 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
@@ -67,8 +67,7 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
             start++;
         }
         int end = endpoint.getEndpointUri().indexOf('?');
-        return end == -1 ? endpoint.getEndpointUri().substring(start)
-                : endpoint.getEndpointUri().substring(start, end);
+        return end == -1 ? endpoint.getEndpointUri().substring(start) : endpoint.getEndpointUri().substring(start, end);
     }
 
     @Override
@@ -76,7 +75,8 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
         String scheme = getComponentName(endpoint);
         span.setTag(Tags.COMPONENT.getKey(), CAMEL_COMPONENT + scheme);
 
-        // Including the endpoint URI provides access to any options that may have been provided, for
+        // Including the endpoint URI provides access to any options that may
+        // have been provided, for
         // subsequent analysis
         span.setTag("camel.uri", URISupport.sanitizeUri(endpoint.getEndpointUri()));
     }
@@ -132,13 +132,13 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
 
     @Override
     public TextMap getExtractAdapter(final Map<String, Object> map, boolean encoding) {
-    	// no encoding supported per default
-    	return new CamelHeadersExtractAdapter(map);
+        // no encoding supported per default
+        return new CamelHeadersExtractAdapter(map);
     }
 
     @Override
     public TextMap getInjectAdapter(final Map<String, Object> map, boolean encoding) {
-    	// no encoding supported per default
-    	return new CamelHeadersInjectAdapter(map);    	
+        // no encoding supported per default
+        return new CamelHeadersInjectAdapter(map);
     }
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
index 30d3d08..3a2b467 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
@@ -16,22 +16,21 @@
  */
 package org.apache.camel.opentracing.propagation;
 
-import io.opentracing.propagation.TextMap;
-
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import io.opentracing.propagation.TextMap;
+
 public final class CamelMessagingHeadersExtractAdapter implements TextMap {
- 
+
     private final Map<String, String> map = new HashMap<>();
     private final boolean jmsEncoding;
 
     public CamelMessagingHeadersExtractAdapter(final Map<String, Object> map, boolean jmsEncoding) {
-    	// Extract string valued map entries
+        // Extract string valued map entries
         this.jmsEncoding = jmsEncoding;
-        map.entrySet().stream().filter(e -> e.getValue() instanceof String).forEach(e ->
-            this.map.put(decodeDash(e.getKey()), (String) e.getValue()));
+        map.entrySet().stream().filter(e -> e.getValue() instanceof String).forEach(e -> this.map.put(decodeDash(e.getKey()), (String)e.getValue()));
     }
 
     @Override
@@ -43,19 +42,21 @@ public final class CamelMessagingHeadersExtractAdapter implements TextMap {
     public void put(String key, String value) {
         throw new UnsupportedOperationException("CamelMessagingHeadersExtractAdapter should only be used with Tracer.extract()");
     }
-    
+
     /**
-     * Decode dashes (encoded in {@link CamelMessagingHeadersInjectAdapter}
-     * Dash encoding and decoding is required by JMS. This is implemented here
-     * rather than specifically to JMS so that other Camel messaging endpoints
-     * can take part in traces where the peer is using JMS. 
+     * Decode dashes (encoded in {@link CamelMessagingHeadersInjectAdapter} Dash
+     * encoding and decoding is required by JMS. This is implemented here rather
+     * than specifically to JMS so that other Camel messaging endpoints can take
+     * part in traces where the peer is using JMS.
+     * 
      * @param the source
      * @return the result
      */
     private String decodeDash(String key) {
-    	if (jmsEncoding)
-    		return key.replace(CamelMessagingHeadersInjectAdapter.JMS_DASH, "-");
-    	else
-    		return key;
-  }
+        if (jmsEncoding) {
+            return key.replace(CamelMessagingHeadersInjectAdapter.JMS_DASH, "-");
+        } else {
+            return key;
+        }
+    }
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
index cb979c6..1c532d6 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
@@ -23,13 +23,15 @@ import io.opentracing.propagation.TextMap;
 
 public final class CamelMessagingHeadersInjectAdapter implements TextMap {
 
-	// As per the JMS specs, header names must be valid Java identifier part characters.
-	// This means that any header names that contain illegal characters (- for example) should be handled correctly
-	// Opentracing java-jms does it as follows.
-	static final String JMS_DASH = "_$dash$_";
+    // As per the JMS specs, header names must be valid Java identifier part
+    // characters.
+    // This means that any header names that contain illegal characters (- for
+    // example) should be handled correctly
+    // Opentracing java-jms does it as follows.
+    static final String JMS_DASH = "_$dash$_";
 
-	private final Map<String, Object> map;
-	private final boolean jmsEncoding;
+    private final Map<String, Object> map;
+    private final boolean jmsEncoding;
 
     public CamelMessagingHeadersInjectAdapter(final Map<String, Object> map, boolean jmsEncoding) {
         this.map = map;
@@ -43,20 +45,22 @@ public final class CamelMessagingHeadersInjectAdapter implements TextMap {
 
     @Override
     public void put(String key, String value) {
-        // Assume any header property that begins with 'Camel' is for internal use
+        // Assume any header property that begins with 'Camel' is for internal
+        // use
         if (!key.startsWith("Camel")) {
             this.map.put(encodeDash(key), value);
         }
     }
-    
+
     /**
-     * Encode all dashes because JMS specification doesn't allow them in property name
+     * Encode all dashes because JMS specification doesn't allow them in
+     * property name
      */
     private String encodeDash(String key) {
-      if (key == null || key.isEmpty() || !jmsEncoding) {
-        return key;
-      }
+        if (key == null || key.isEmpty() || !jmsEncoding) {
+            return key;
+        }
 
-      return key.replace("-", JMS_DASH);
-   }
-}
\ No newline at end of file
+        return key.replace("-", JMS_DASH);
+    }
+}
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
index 0d7bf85..f0edd3b 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
@@ -1,10 +1,21 @@
+/**
+ * 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.propagation;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import static org.apache.camel.opentracing.propagation.CamelMessagingHeadersInjectAdapter.JMS_DASH;
-
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -12,48 +23,52 @@ import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
 
+import static org.apache.camel.opentracing.propagation.CamelMessagingHeadersInjectAdapter.JMS_DASH;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
 public class CamelMessagingHeadersExtractAdapterTest {
-	
-	private Map<String,Object> map;
-	
-	@Before
-	public void before() {
-	    map = new HashMap<String,Object>();
-	}
-	
-	@Test
-	public void noProperties() {
-		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,true);
-		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
-		assertFalse(iterator.hasNext());
-	}
-
-	@Test
-	public void oneProperty() {
-		map.put("key", "value");
-		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,true);
-		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
-		Map.Entry<String, String> entry = iterator.next();
-		assertEquals("key", entry.getKey());
-		assertEquals("value", entry.getValue());
-	}
-
-	@Test
-	public void propertyWithDash() {
-		map.put(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, "value1");
-		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,true);
-		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
-		Map.Entry<String, String> entry = iterator.next();
-		assertEquals("-key-1-", entry.getKey());
-		assertEquals("value1", entry.getValue());
-	}
-
-	@Test
-	public void propertyWithoutDashEncoding() {
-		map.put(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, "value1");
-		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,false);
-		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
-		Map.Entry<String, String> entry = iterator.next();
-		assertEquals(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, entry.getKey());
-	}
+
+    private Map<String, Object> map;
+
+    @Before
+    public void before() {
+        map = new HashMap<String, Object>();
+    }
+
+    @Test
+    public void noProperties() {
+        CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map, true);
+        Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+        assertFalse(iterator.hasNext());
+    }
+
+    @Test
+    public void oneProperty() {
+        map.put("key", "value");
+        CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map, true);
+        Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+        Map.Entry<String, String> entry = iterator.next();
+        assertEquals("key", entry.getKey());
+        assertEquals("value", entry.getValue());
+    }
+
+    @Test
+    public void propertyWithDash() {
+        map.put(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, "value1");
+        CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map, true);
+        Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+        Map.Entry<String, String> entry = iterator.next();
+        assertEquals("-key-1-", entry.getKey());
+        assertEquals("value1", entry.getValue());
+    }
+
+    @Test
+    public void propertyWithoutDashEncoding() {
+        map.put(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, "value1");
+        CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map, false);
+        Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+        Map.Entry<String, String> entry = iterator.next();
+        assertEquals(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, entry.getKey());
+    }
 }
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
index 7fe8152..95cafe9 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
@@ -1,9 +1,21 @@
+/**
+ * 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.propagation;
 
-import static org.apache.camel.opentracing.propagation.CamelMessagingHeadersInjectAdapter.JMS_DASH;
-
-import static org.junit.Assert.assertEquals;
-
 import java.util.HashMap;
 import java.util.Map;
 
@@ -12,47 +24,49 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import static org.apache.camel.opentracing.propagation.CamelMessagingHeadersInjectAdapter.JMS_DASH;
+import static org.junit.Assert.assertEquals;
+
 public class CamelMessagingHeadersInjectAdapterTest {
 
-	private Map<String,Object> map;
-	
-
-	@Rule
-	public ExpectedException thrown = ExpectedException.none();
-	  
-	@Before
-	public void before() {
-	    map = new HashMap<String,Object>();
-	}
-	
-	@Test
-	public void cannotGetIterator() {
-		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,true);
-		thrown.expect(UnsupportedOperationException.class);
-		adapter.iterator();
-	}
-
-	@Test
-	public void putProperties() {
-		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,true);
-		adapter.put("key1", "value1");
-	    adapter.put("key2", "value2");
-	    adapter.put("key1", "value3");
-	    assertEquals("value3", map.get("key1"));
-	    assertEquals("value2", map.get("key2"));
-	}
-
-	@Test
-	public void propertyWithDash() {
-		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,true);
-		adapter.put("-key-1-", "value1");
-		assertEquals("value1", map.get(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH));
-	}
-
-	@Test
-	public void propertyWithoutDashEncoding() {
-		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,false);
-		adapter.put("-key-1-", "value1");
-		assertEquals(null, map.get(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH));
-	}
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+
+    private Map<String, Object> map;
+
+    @Before
+    public void before() {
+        map = new HashMap<String, Object>();
+    }
+
+    @Test
+    public void cannotGetIterator() {
+        CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map, true);
+        thrown.expect(UnsupportedOperationException.class);
+        adapter.iterator();
+    }
+
+    @Test
+    public void putProperties() {
+        CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map, true);
+        adapter.put("key1", "value1");
+        adapter.put("key2", "value2");
+        adapter.put("key1", "value3");
+        assertEquals("value3", map.get("key1"));
+        assertEquals("value2", map.get("key2"));
+    }
+
+    @Test
+    public void propertyWithDash() {
+        CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map, true);
+        adapter.put("-key-1-", "value1");
+        assertEquals("value1", map.get(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH));
+    }
+
+    @Test
+    public void propertyWithoutDashEncoding() {
+        CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map, false);
+        adapter.put("-key-1-", "value1");
+        assertEquals(null, map.get(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH));
+    }
 }


[camel] 02/03: Makes encoding activation configuration

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0740130b68c366bb546784e747e9b92404fdcd09
Author: Frederic Giloux <fg...@users.noreply.github.com>
AuthorDate: Fri Sep 28 19:35:23 2018 +0200

    Makes encoding activation configuration
---
 .../src/main/docs/opentracing.adoc                 |  5 ++--
 .../camel/opentracing/OpenTracingTracer.java       | 15 +++++++++---
 .../apache/camel/opentracing/SpanDecorator.java    |  6 +++--
 .../decorators/AbstractMessagingSpanDecorator.java |  8 +++----
 .../decorators/AbstractSpanDecorator.java          |  6 +++--
 .../CamelMessagingHeadersExtractAdapter.java       |  9 ++++++--
 .../CamelMessagingHeadersInjectAdapter.java        |  6 +++--
 .../CamelMessagingHeadersExtractAdapterTest.java   | 27 +++++++++++++++++-----
 .../CamelMessagingHeadersInjectAdapterTest.java    | 13 ++++++++---
 .../starter/OpenTracingAutoConfiguration.java      |  3 +++
 .../OpenTracingConfigurationProperties.java        | 11 +++++++++
 11 files changed, 83 insertions(+), 26 deletions(-)

diff --git a/components/camel-opentracing/src/main/docs/opentracing.adoc b/components/camel-opentracing/src/main/docs/opentracing.adoc
index 6055895..7fe3107 100644
--- a/components/camel-opentracing/src/main/docs/opentracing.adoc
+++ b/components/camel-opentracing/src/main/docs/opentracing.adoc
@@ -26,6 +26,8 @@ The configuration properties for the OpenTracing tracer are:
 |excludePatterns |  | Sets exclude pattern(s) that will disable tracing for Camel
 messages that matches the pattern. The content is a Set<String> where the key is a pattern. The pattern
 uses the rules from Intercept.
+|encoding |false| Sets whether the header keys need to be encoded (connector specific) or not. The value is a boolean.
+Dashes need for instances to be encoded for JMS property keys.
 
 |=======================================================================
 
@@ -102,10 +104,9 @@ The OpenTracing Java Agent is associated with the following dependency:
 
 The `Tracer` used will be implicitly loaded from the camel context `Registry` or using the `ServiceLoader`.
 
-How this agent is used will be specific to how you execute your application. _Service2_ in the https://github.com/apache/camel/tree/master/examples/camel-example-opentracing[camel-example-opentracing] downloads the agent into a local folder and then uses the `exec-maven-plugin` to launch the service with the `-javaagent` command line option. 
+How this agent is used will be specific to how you execute your application. _Service2_ in the https://github.com/apache/camel/tree/master/examples/camel-example-opentracing[camel-example-opentracing] downloads the agent into a local folder and then uses the `exec-maven-plugin` to launch the service with the `-javaagent` command line option.
 
 ### Example
 
 You can find an example demonstrating the three ways to configure OpenTracing here:
 https://github.com/apache/camel/tree/master/examples/camel-example-opentracing[camel-example-opentracing]
-
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 d4f0dba..e6f9c6d 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
@@ -74,6 +74,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     private Tracer tracer;
     private CamelContext camelContext;
     private Set<String> excludePatterns = new HashSet<>();
+    private boolean encoding;
 
     static {
         ServiceLoader.load(SpanDecorator.class).forEach(d -> {
@@ -131,7 +132,15 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
         this.excludePatterns = excludePatterns;
     }
 
-    /**
+    public boolean isEncoding() {
+		return encoding;
+	}
+
+	public void setEncoding(boolean encoding) {
+		this.encoding = encoding;
+	}
+
+	/**
      * Adds an exclude pattern that will disable tracing for Camel messages that matches the pattern.
      *
      * @param pattern  the pattern such as route id, endpoint url
@@ -233,7 +242,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                     Span span = spanBuilder.start();
                     sd.pre(span, ese.getExchange(), ese.getEndpoint());
                     tracer.inject(span.context(), Format.Builtin.TEXT_MAP,
-                        sd.getInjectAdapter(ese.getExchange().getIn().getHeaders()));
+                        sd.getInjectAdapter(ese.getExchange().getIn().getHeaders(), encoding));
                     ActiveSpanManager.activate(ese.getExchange(), span);
 
                     if (LOG.isTraceEnabled()) {
@@ -289,7 +298,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 SpanDecorator sd = getSpanDecorator(route.getEndpoint());
                 Span span = tracer.buildSpan(sd.getOperationName(exchange, route.getEndpoint()))
                     .asChildOf(tracer.extract(Format.Builtin.TEXT_MAP,
-                        sd.getExtractAdapter(exchange.getIn().getHeaders())))
+                        sd.getExtractAdapter(exchange.getIn().getHeaders(), encoding)))
                     .withTag(Tags.SPAN_KIND.getKey(), sd.getReceiverSpanKind())
                     .start();
                 sd.pre(span, exchange, route.getEndpoint());
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 393e363..44c2a41 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
@@ -109,17 +109,19 @@ public interface SpanDecorator {
      * when the component is receiving a communication.
      *
      * @param a map containing the objects
+     * @param whether the headers are encoded
      * @return The extraction map
      */
-    TextMap getExtractAdapter(Map<String, Object> map);
+    TextMap getExtractAdapter(Map<String, Object> map, boolean encoding);
 
     /**
      * This method returns the map to be used for headers injection
      *  when the component is receiving a communication.
      *
      * @param a map containing the objects
+     * @param whether the headers are encoded
      * @return The injection map
      */
-    TextMap getInjectAdapter(Map<String, Object> map);
+    TextMap getInjectAdapter(Map<String, Object> map, boolean encoding);
 
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
index a0addfb..5a03953 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractMessagingSpanDecorator.java
@@ -80,12 +80,12 @@ public abstract class AbstractMessagingSpanDecorator extends AbstractSpanDecorat
     }
 
     @Override
-    public TextMap getExtractAdapter(final Map<String, Object> map) {
-    	return new CamelMessagingHeadersExtractAdapter(map);
+    public TextMap getExtractAdapter(final Map<String, Object> map, final boolean jmsEncoding) {
+    	return new CamelMessagingHeadersExtractAdapter(map, jmsEncoding);
     }
 
     @Override
-    public TextMap getInjectAdapter(final Map<String, Object> map) {
-    	return new CamelMessagingHeadersInjectAdapter(map);    	
+    public TextMap getInjectAdapter(final Map<String, Object> map, final boolean jmsEncoding) {
+    	return new CamelMessagingHeadersInjectAdapter(map, jmsEncoding);    	
     }
 }
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 89648c5..6f51365 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
@@ -131,12 +131,14 @@ public abstract class AbstractSpanDecorator implements SpanDecorator {
     }
 
     @Override
-    public TextMap getExtractAdapter(final Map<String, Object> map) {
+    public TextMap getExtractAdapter(final Map<String, Object> map, boolean encoding) {
+    	// no encoding supported per default
     	return new CamelHeadersExtractAdapter(map);
     }
 
     @Override
-    public TextMap getInjectAdapter(final Map<String, Object> map) {
+    public TextMap getInjectAdapter(final Map<String, Object> map, boolean encoding) {
+    	// no encoding supported per default
     	return new CamelHeadersInjectAdapter(map);    	
     }
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
index 2797fec..30d3d08 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapter.java
@@ -25,9 +25,11 @@ import java.util.Map;
 public final class CamelMessagingHeadersExtractAdapter implements TextMap {
  
     private final Map<String, String> map = new HashMap<>();
+    private final boolean jmsEncoding;
 
-    public CamelMessagingHeadersExtractAdapter(final Map<String, Object> map) {
+    public CamelMessagingHeadersExtractAdapter(final Map<String, Object> map, boolean jmsEncoding) {
     	// Extract string valued map entries
+        this.jmsEncoding = jmsEncoding;
         map.entrySet().stream().filter(e -> e.getValue() instanceof String).forEach(e ->
             this.map.put(decodeDash(e.getKey()), (String) e.getValue()));
     }
@@ -51,6 +53,9 @@ public final class CamelMessagingHeadersExtractAdapter implements TextMap {
      * @return the result
      */
     private String decodeDash(String key) {
-      return key.replace(CamelMessagingHeadersInjectAdapter.JMS_DASH, "-");
+    	if (jmsEncoding)
+    		return key.replace(CamelMessagingHeadersInjectAdapter.JMS_DASH, "-");
+    	else
+    		return key;
   }
 }
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
index c819d22..cb979c6 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapter.java
@@ -29,9 +29,11 @@ public final class CamelMessagingHeadersInjectAdapter implements TextMap {
 	static final String JMS_DASH = "_$dash$_";
 
 	private final Map<String, Object> map;
+	private final boolean jmsEncoding;
 
-    public CamelMessagingHeadersInjectAdapter(final Map<String, Object> map) {
+    public CamelMessagingHeadersInjectAdapter(final Map<String, Object> map, boolean jmsEncoding) {
         this.map = map;
+        this.jmsEncoding = jmsEncoding;
     }
 
     @Override
@@ -51,7 +53,7 @@ public final class CamelMessagingHeadersInjectAdapter implements TextMap {
      * Encode all dashes because JMS specification doesn't allow them in property name
      */
     private String encodeDash(String key) {
-      if (key == null || key.isEmpty()) {
+      if (key == null || key.isEmpty() || !jmsEncoding) {
         return key;
       }
 
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
index 178c46b..0d7bf85 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersExtractAdapterTest.java
@@ -8,23 +8,30 @@ import static org.apache.camel.opentracing.propagation.CamelMessagingHeadersInje
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+
+import org.junit.Before;
 import org.junit.Test;
 
 public class CamelMessagingHeadersExtractAdapterTest {
 	
+	private Map<String,Object> map;
+	
+	@Before
+	public void before() {
+	    map = new HashMap<String,Object>();
+	}
+	
 	@Test
 	public void noProperties() {
-		final Map<String, Object> map = new HashMap<String, Object>();
-		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map);
+		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,true);
 		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
 		assertFalse(iterator.hasNext());
 	}
 
 	@Test
 	public void oneProperty() {
-		final Map<String, Object> map = new HashMap<String, Object>();
 		map.put("key", "value");
-		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map);
+		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,true);
 		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
 		Map.Entry<String, String> entry = iterator.next();
 		assertEquals("key", entry.getKey());
@@ -33,12 +40,20 @@ public class CamelMessagingHeadersExtractAdapterTest {
 
 	@Test
 	public void propertyWithDash() {
-		final Map<String, Object> map = new HashMap<String, Object>();
 		map.put(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, "value1");
-		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map);
+		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,true);
 		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
 		Map.Entry<String, String> entry = iterator.next();
 		assertEquals("-key-1-", entry.getKey());
 		assertEquals("value1", entry.getValue());
 	}
+
+	@Test
+	public void propertyWithoutDashEncoding() {
+		map.put(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, "value1");
+		CamelMessagingHeadersExtractAdapter adapter = new CamelMessagingHeadersExtractAdapter(map,false);
+		Iterator<Map.Entry<String, String>> iterator = adapter.iterator();
+		Map.Entry<String, String> entry = iterator.next();
+		assertEquals(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH, entry.getKey());
+	}
 }
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
index 1220e77..7fe8152 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/propagation/CamelMessagingHeadersInjectAdapterTest.java
@@ -27,14 +27,14 @@ public class CamelMessagingHeadersInjectAdapterTest {
 	
 	@Test
 	public void cannotGetIterator() {
-		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map);
+		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,true);
 		thrown.expect(UnsupportedOperationException.class);
 		adapter.iterator();
 	}
 
 	@Test
 	public void putProperties() {
-		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map);
+		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,true);
 		adapter.put("key1", "value1");
 	    adapter.put("key2", "value2");
 	    adapter.put("key1", "value3");
@@ -44,8 +44,15 @@ public class CamelMessagingHeadersInjectAdapterTest {
 
 	@Test
 	public void propertyWithDash() {
-		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map);
+		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,true);
 		adapter.put("-key-1-", "value1");
 		assertEquals("value1", map.get(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH));
 	}
+
+	@Test
+	public void propertyWithoutDashEncoding() {
+		CamelMessagingHeadersInjectAdapter adapter = new CamelMessagingHeadersInjectAdapter(map,false);
+		adapter.put("-key-1-", "value1");
+		assertEquals(null, map.get(JMS_DASH + "key" + JMS_DASH + "1" + JMS_DASH));
+	}
 }
diff --git a/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java
index 76e5455..61afab3 100644
--- a/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java
@@ -47,6 +47,9 @@ public class OpenTracingAutoConfiguration {
         if (config.getExcludePatterns() != null) {
             ottracer.setExcludePatterns(config.getExcludePatterns());
         }
+        if (config.getEncoding() != null) {
+            ottracer.setEncoding(config.getEncoding().booleanValue());
+        }
         ottracer.init(camelContext);
 
         return ottracer;
diff --git a/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingConfigurationProperties.java b/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingConfigurationProperties.java
index 8add6b9..7cbf532 100644
--- a/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingConfigurationProperties.java
+++ b/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingConfigurationProperties.java
@@ -27,6 +27,10 @@ public class OpenTracingConfigurationProperties {
      * Sets exclude pattern(s) that will disable tracing for Camel messages that matches the pattern.
      */
     private Set<String> excludePatterns;
+    /**
+     * Activate or deactivate dash encoding in headers (required by JMS) for messaging
+     */
+    private Boolean encoding;
 
     public Set<String> getExcludePatterns() {
         return excludePatterns;
@@ -36,4 +40,11 @@ public class OpenTracingConfigurationProperties {
         this.excludePatterns = excludePatterns;
     }
 
+	public Boolean getEncoding() {
+		return encoding;
+	}
+
+	public void setEncoding(Boolean encoding) {
+		this.encoding = encoding;
+	}
 }