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/05/25 09:33:13 UTC

[01/13] camel git commit: CAMEL-11321: Load core fallback type converters a bit faster

Repository: camel
Updated Branches:
  refs/heads/master 888fdf7c0 -> 1fe303771


CAMEL-11321: Load core fallback type converters a bit faster


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

Branch: refs/heads/master
Commit: 6c73ae86fc62c630e119b556edefee1507adcd41
Parents: a2324c3
Author: Claus Ibsen <da...@apache.org>
Authored: Wed May 24 20:29:15 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:52 2017 +0200

----------------------------------------------------------------------
 .../converter/BaseTypeConverterRegistry.java    | 32 +++++++++++++++++---
 1 file changed, 27 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6c73ae86/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index da15cfb..3cbbe59 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -88,18 +88,22 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement
         this.factoryFinder = factoryFinder;
         this.typeConverterLoaders.add(new AnnotationTypeConverterLoader(resolver));
 
+        List<FallbackTypeConverter> fallbacks = new ArrayList<>();
         // add to string first as it will then be last in the last as to string can nearly
         // always convert something to a string so we want it only as the last resort
         // ToStringTypeConverter should NOT allow to be promoted
-        addFallbackTypeConverter(new ToStringTypeConverter(), false);
+        addCoreFallbackTypeConverterToList(new ToStringTypeConverter(), false, fallbacks);
         // enum is okay to be promoted
-        addFallbackTypeConverter(new EnumTypeConverter(), true);
+        addCoreFallbackTypeConverterToList(new EnumTypeConverter(), true, fallbacks);
         // arrays is okay to be promoted
-        addFallbackTypeConverter(new ArrayTypeConverter(), true);
+        addCoreFallbackTypeConverterToList(new ArrayTypeConverter(), true, fallbacks);
         // and future should also not allowed to be promoted
-        addFallbackTypeConverter(new FutureTypeConverter(this), false);
+        addCoreFallbackTypeConverterToList(new FutureTypeConverter(this), false, fallbacks);
         // add sync processor to async processor converter is to be promoted
-        addFallbackTypeConverter(new AsyncProcessorTypeConverter(), true);
+        addCoreFallbackTypeConverterToList(new AsyncProcessorTypeConverter(), true, fallbacks);
+
+        // add all core fallback converters at once which is faster (profiler)
+        fallbackConverters.addAll(fallbacks);
     }
 
     @Override
@@ -465,6 +469,24 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement
         }
     }
 
+    private void addCoreFallbackTypeConverterToList(TypeConverter typeConverter, boolean canPromote, List<FallbackTypeConverter> converters) {
+        log.trace("Adding core fallback type converter: {} which can promote: {}", typeConverter, canPromote);
+
+        // add in top of fallback as the toString() fallback will nearly always be able to convert
+        // the last one which is add to the FallbackTypeConverter will be called at the first place
+        converters.add(0, new FallbackTypeConverter(typeConverter, canPromote));
+        if (typeConverter instanceof TypeConverterAware) {
+            TypeConverterAware typeConverterAware = (TypeConverterAware) typeConverter;
+            typeConverterAware.setTypeConverter(this);
+        }
+        if (typeConverter instanceof CamelContextAware) {
+            CamelContextAware camelContextAware = (CamelContextAware) typeConverter;
+            if (camelContext != null) {
+                camelContextAware.setCamelContext(camelContext);
+            }
+        }
+    }
+
     public TypeConverter getTypeConverter(Class<?> toType, Class<?> fromType) {
         TypeMapping key = new TypeMapping(toType, fromType);
         return typeMappings.get(key);


[13/13] camel git commit: Fixed CS

Posted by da...@apache.org.
Fixed CS


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

Branch: refs/heads/master
Commit: 1fe30377164ccbbcbefc0183c8c784988767c28c
Parents: 04088ff
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 25 11:16:27 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:32:17 2017 +0200

----------------------------------------------------------------------
 .../jetty/rest/RestJettyOptionsTest.java         |  6 +++---
 .../netty/http/DefaultNettyHttpBinding.java      |  2 +-
 .../streams/api/CamelReactiveStreamsService.java |  2 +-
 .../support/ReactiveStreamsTestService.java      |  2 +-
 .../servlet/rest/OptionsMethodWebRequest.java    |  6 +++---
 .../apache/camel/spring/SpringTestSupport.java   |  2 +-
 .../TwitterDirectMessageEndpoint.java            | 19 ++++++++++++++++++-
 .../twitter/search/TwitterSearchEndpoint.java    | 19 ++++++++++++++++++-
 .../streaming/TwitterStreamingEndpoint.java      | 19 ++++++++++++++++++-
 .../timeline/TwitterTimelineEndpoint.java        | 19 ++++++++++++++++++-
 .../twitter/CamelComponentVerifierTest.java      |  5 +++--
 .../twitter/UserProducerInOnlyTest.java          |  5 +++--
 .../component/twitter/UserProducerInOutTest.java |  6 +++---
 13 files changed, 91 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/RestJettyOptionsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/RestJettyOptionsTest.java b/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/RestJettyOptionsTest.java
index 7618601..7f6536e 100644
--- a/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/RestJettyOptionsTest.java
+++ b/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/RestJettyOptionsTest.java
@@ -5,9 +5,9 @@
  * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ *      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.

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
index 5112762..15cea1b 100644
--- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
+++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
@@ -252,7 +252,7 @@ public class DefaultNettyHttpBinding implements NettyHttpBinding, Cloneable {
     public Message toCamelMessage(HttpResponse response, Exchange exchange, NettyHttpConfiguration configuration) throws Exception {
         LOG.trace("toCamelMessage: {}", response);
 
-        NettyHttpMessage answer = new NettyHttpMessage(exchange.getContext(),null, response);
+        NettyHttpMessage answer = new NettyHttpMessage(exchange.getContext(), null, response);
         answer.setExchange(exchange);
         if (configuration.isMapHeaders()) {
             populateCamelHeaders(response, answer.getHeaders(), exchange, configuration);

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/api/CamelReactiveStreamsService.java
----------------------------------------------------------------------
diff --git a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/api/CamelReactiveStreamsService.java b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/api/CamelReactiveStreamsService.java
index 199f96d..f851fa6 100644
--- a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/api/CamelReactiveStreamsService.java
+++ b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/api/CamelReactiveStreamsService.java
@@ -20,9 +20,9 @@ import java.util.function.Function;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Service;
+import org.apache.camel.component.reactive.streams.ReactiveStreamsCamelSubscriber;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsConsumer;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsProducer;
-import org.apache.camel.component.reactive.streams.ReactiveStreamsCamelSubscriber;
 import org.apache.camel.spi.HasId;
 import org.reactivestreams.Publisher;
 import org.reactivestreams.Subscriber;

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/support/ReactiveStreamsTestService.java
----------------------------------------------------------------------
diff --git a/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/support/ReactiveStreamsTestService.java b/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/support/ReactiveStreamsTestService.java
index 6065795..7ce988d 100644
--- a/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/support/ReactiveStreamsTestService.java
+++ b/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/support/ReactiveStreamsTestService.java
@@ -19,10 +19,10 @@ package org.apache.camel.component.reactive.streams.support;
 import java.util.function.Function;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.component.reactive.streams.ReactiveStreamsCamelSubscriber;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsConsumer;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsProducer;
 import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsService;
-import org.apache.camel.component.reactive.streams.ReactiveStreamsCamelSubscriber;
 import org.reactivestreams.Publisher;
 import org.reactivestreams.Subscriber;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/OptionsMethodWebRequest.java
----------------------------------------------------------------------
diff --git a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/OptionsMethodWebRequest.java b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/OptionsMethodWebRequest.java
index 4cba44d..c121fd0 100644
--- a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/OptionsMethodWebRequest.java
+++ b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/OptionsMethodWebRequest.java
@@ -5,9 +5,9 @@
  * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ *      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.

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
index 243a53c..3feb1b4 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
@@ -52,7 +52,7 @@ public abstract class SpringTestSupport extends ContextTestSupport {
 
         // we want SpringTestSupport to startup faster and not use JMX by default and should stop seda quicker
         System.setProperty("CamelSedaPollTimeout", "10");
-        if(!this.useJmx()) {
+        if (!this.useJmx()) {
             this.disableJMX();
         } else {
             this.enableJMX();

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/TwitterDirectMessageEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/TwitterDirectMessageEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/TwitterDirectMessageEndpoint.java
index 86ede93..360da52 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/TwitterDirectMessageEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/TwitterDirectMessageEndpoint.java
@@ -1,3 +1,19 @@
+/**
+ * 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.component.twitter.directmessage;
 
 import org.apache.camel.Consumer;
@@ -13,7 +29,8 @@ import org.apache.camel.spi.UriPath;
 /**
  * The Twitter Direct Message Component consumes/produces user's direct messages.
  */
-@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-directmessage", title = "Twitter Direct Message", syntax = "twitter-directmessage:endpointId", consumerClass = DirectMessageConsumerHandler.class, label = "api,social")
+@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-directmessage", title = "Twitter Direct Message", syntax = "twitter-directmessage:endpointId",
+    consumerClass = DirectMessageConsumerHandler.class, label = "api,social")
 public class TwitterDirectMessageEndpoint extends AbstractTwitterEndpoint {
 
     @UriPath(description = "The endpoint ID (not used).")

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/TwitterSearchEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/TwitterSearchEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/TwitterSearchEndpoint.java
index 536fe8a..1653a97 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/TwitterSearchEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/TwitterSearchEndpoint.java
@@ -1,3 +1,19 @@
+/**
+ * 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.component.twitter.search;
 
 import org.apache.camel.Consumer;
@@ -13,7 +29,8 @@ import org.apache.camel.spi.UriPath;
 /**
  * The Twitter Search component consumes search results.
  */
-@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-search", title = "Twitter Search", syntax = "twitter-search:endpointId", consumerClass = SearchConsumerHandler.class, label = "api,social")
+@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-search", title = "Twitter Search", syntax = "twitter-search:endpointId",
+    consumerClass = SearchConsumerHandler.class, label = "api,social")
 public class TwitterSearchEndpoint extends AbstractTwitterEndpoint {
 
     @UriPath(description = "The endpoint ID (not used).")

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/streaming/TwitterStreamingEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/streaming/TwitterStreamingEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/streaming/TwitterStreamingEndpoint.java
index dc932b6..ef8faaf 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/streaming/TwitterStreamingEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/streaming/TwitterStreamingEndpoint.java
@@ -1,3 +1,19 @@
+/**
+ * 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.component.twitter.streaming;
 
 import org.apache.camel.Consumer;
@@ -15,7 +31,8 @@ import org.apache.camel.spi.UriPath;
 /**
  * The Twitter Streaming component consumes twitter statuses using Streaming API.
  */
-@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-streaming", title = "Twitter Streaming", syntax = "twitter-streaming:streamingType", consumerClass = AbstractStreamingConsumerHandler.class, consumerOnly = true, label = "api,social")
+@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-streaming", title = "Twitter Streaming", syntax = "twitter-streaming:streamingType",
+    consumerClass = AbstractStreamingConsumerHandler.class, consumerOnly = true, label = "api,social")
 public class TwitterStreamingEndpoint extends AbstractTwitterEndpoint {
 
     @UriPath(description = "The streaming type to consume.")

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
index 5d030e7..92472ae 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
@@ -1,3 +1,19 @@
+/**
+ * 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.component.twitter.timeline;
 
 import org.apache.camel.Consumer;
@@ -15,7 +31,8 @@ import org.apache.camel.spi.UriPath;
 /**
  * The Twitter Timeline component consumes twitter timeline or update the status of specific user.
  */
-@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-timeline", title = "Twitter Timeline", syntax = "twitter-timeline:timelineType", consumerClass = AbstractStatusConsumerHandler.class, label = "api,social")
+@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter-timeline", title = "Twitter Timeline", syntax = "twitter-timeline:timelineType",
+    consumerClass = AbstractStatusConsumerHandler.class, label = "api,social")
 public class TwitterTimelineEndpoint extends AbstractTwitterEndpoint {
 
     @UriPath(description = "The timeline type to produce/consume.")

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/CamelComponentVerifierTest.java
----------------------------------------------------------------------
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/CamelComponentVerifierTest.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/CamelComponentVerifierTest.java
index f131ab8..be8eb81 100644
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/CamelComponentVerifierTest.java
+++ b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/CamelComponentVerifierTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.twitter;
 
-import static org.apache.camel.ComponentVerifier.VerificationError.asAttribute;
-
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -29,7 +27,10 @@ import org.apache.camel.component.twitter.search.TwitterSearchComponent;
 import org.junit.Assert;
 import org.junit.Test;
 
+import static org.apache.camel.ComponentVerifier.VerificationError.asAttribute;
+
 public class CamelComponentVerifierTest extends CamelTwitterTestSupport {
+
     @Override
     public boolean isUseRouteBuilder() {
         return false;

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOnlyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOnlyTest.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOnlyTest.java
index 1358835..b236df4 100644
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOnlyTest.java
+++ b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOnlyTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.twitter;
 
-import static org.hamcrest.core.Is.is;
-
 import java.util.Date;
 import java.util.List;
 
@@ -30,10 +28,13 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.hamcrest.core.Is.is;
+
 /**
  * Tests posting a twitter update with the default In Message Exchange Pattern
  */
 public class UserProducerInOnlyTest extends CamelTwitterTestSupport {
+
     private static final Logger LOG = LoggerFactory.getLogger(UserProducerInOnlyTest.class);
 
     @EndpointInject(uri = "mock:result")

http://git-wip-us.apache.org/repos/asf/camel/blob/1fe30377/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutTest.java
----------------------------------------------------------------------
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutTest.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutTest.java
index 049c1f1..516d0e5 100644
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutTest.java
+++ b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.twitter;
 
-import static org.hamcrest.core.Is.is;
-
 import java.util.Date;
 import java.util.List;
 
@@ -29,13 +27,15 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 import twitter4j.Status;
 
+import static org.hamcrest.core.Is.is;
+
 /**
  * Tests posting a twitter update and getting the status update id from the Twitter API response
  */
 public class UserProducerInOutTest extends CamelTwitterTestSupport {
+
     private static final Logger LOG = LoggerFactory.getLogger(UserProducerInOutTest.class);
 
     @EndpointInject(uri = "mock:result")


[12/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 04088ff94945617f4a52d200bd5a3c0b44bb82e6
Parents: d50e480
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 25 11:16:21 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:16:21 2017 +0200

----------------------------------------------------------------------
 .../org/apache/camel/impl/DefaultExchange.java  |  5 +-
 .../camel/impl/DefaultHeadersMapFactory.java    |  2 +-
 .../org/apache/camel/impl/DefaultMessage.java   |  2 +-
 .../camel/impl/HashMapHeadersMapFactory.java    | 46 +++++++++++++++
 .../org/apache/camel/spi/HeadersMapFactory.java |  2 +-
 .../impl/CustomHeadersMapFactoryRouteTest.java  |  2 +-
 .../impl/DefaultHeadersMapFactoryTest.java      |  4 +-
 .../impl/HashMapHeadersMapFactoryRouteTest.java | 61 ++++++++++++++++++++
 8 files changed, 115 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
index 3534296..520dcad 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
@@ -30,7 +30,6 @@ import org.apache.camel.Message;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.spi.Synchronization;
 import org.apache.camel.spi.UnitOfWork;
-import org.apache.camel.util.CaseInsensitiveMap;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -133,7 +132,7 @@ public final class DefaultExchange implements Exchange {
             return null;
         }
 
-        return context.getHeadersMapFactory().fromMap(headers);
+        return context.getHeadersMapFactory().newMap(headers);
     }
 
     @SuppressWarnings("unchecked")
@@ -142,7 +141,7 @@ public final class DefaultExchange implements Exchange {
             return null;
         }
 
-        Map<String, Object> answer = context.getHeadersMapFactory().fromMap(properties);
+        Map<String, Object> answer = context.getHeadersMapFactory().newMap(properties);
 
         // safe copy message history using a defensive copy
         List<MessageHistory> history = (List<MessageHistory>) answer.remove(Exchange.MESSAGE_HISTORY);

http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java
index efc7e5e..77d38cb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java
@@ -36,7 +36,7 @@ public class DefaultHeadersMapFactory implements HeadersMapFactory {
     }
 
     @Override
-    public Map<String, Object> fromMap(Map<String, Object> map) {
+    public Map<String, Object> newMap(Map<String, Object> map) {
         return new CaseInsensitiveMap(map);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
index 397298d..06040ba 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
@@ -224,7 +224,7 @@ public class DefaultMessage extends MessageSupport {
             this.headers = headers;
         } else {
             // create a new map
-            this.headers = getCamelContext().getHeadersMapFactory().fromMap(headers);
+            this.headers = getCamelContext().getHeadersMapFactory().newMap(headers);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/main/java/org/apache/camel/impl/HashMapHeadersMapFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/HashMapHeadersMapFactory.java b/camel-core/src/main/java/org/apache/camel/impl/HashMapHeadersMapFactory.java
new file mode 100644
index 0000000..c6f7b75
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/impl/HashMapHeadersMapFactory.java
@@ -0,0 +1,46 @@
+/**
+ * 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.impl;
+
+import java.util.Map;
+
+import org.apache.camel.spi.HeadersMapFactory;
+import org.apache.camel.util.CaseInsensitiveMap;
+
+/**
+ * HashMap {@link HeadersMapFactory} which uses a plain {@link java.util.HashMap}.
+ * Important: The map is case sensitive which means headers such as <tt>content-type</tt> and <tt>Content-Type</tt> are
+ * two different keys which can be a problem for some protocols such as HTTP based.
+ * Therefore use this implementation with care.
+ */
+public class HashMapHeadersMapFactory implements HeadersMapFactory {
+
+    @Override
+    public Map<String, Object> newMap() {
+        return new CaseInsensitiveMap();
+    }
+
+    @Override
+    public Map<String, Object> newMap(Map<String, Object> map) {
+        return new CaseInsensitiveMap(map);
+    }
+
+    @Override
+    public boolean isInstanceOf(Map<String, Object> map) {
+        return map instanceof CaseInsensitiveMap;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java b/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
index bb4556d..c789763 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
@@ -44,7 +44,7 @@ public interface HeadersMapFactory {
      * @param map  existing map to copy over (must use defensive copy)
      * @return new map with the content from the existing map
      */
-    Map<String, Object> fromMap(Map<String, Object> map);
+    Map<String, Object> newMap(Map<String, Object> map);
 
     /**
      * Whether the given {@link Map} implementation is created by this factory?

http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java b/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java
index 9c2faec..734fb7a 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java
@@ -71,7 +71,7 @@ public class CustomHeadersMapFactoryRouteTest extends ContextTestSupport {
         }
 
         @Override
-        public Map<String, Object> fromMap(Map<String, Object> map) {
+        public Map<String, Object> newMap(Map<String, Object> map) {
             return new HashMap<>(map);
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java
index c23d3e6..cf5f67f 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java
@@ -42,7 +42,7 @@ public class DefaultHeadersMapFactoryTest extends TestCase {
         other.put("Foo", "cheese");
         other.put("bar", 123);
 
-        Map<String, Object> map = new DefaultHeadersMapFactory().fromMap(other);
+        Map<String, Object> map = new DefaultHeadersMapFactory().newMap(other);
 
         assertEquals("cheese", map.get("FOO"));
         assertEquals("cheese", map.get("foo"));
@@ -56,7 +56,7 @@ public class DefaultHeadersMapFactoryTest extends TestCase {
     public void testIsInstance() {
         Map<String, Object> map = new DefaultHeadersMapFactory().newMap();
 
-        Map<String, Object> other = new DefaultHeadersMapFactory().fromMap(map);
+        Map<String, Object> other = new DefaultHeadersMapFactory().newMap(map);
         other.put("Foo", "cheese");
         other.put("bar", 123);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04088ff9/camel-core/src/test/java/org/apache/camel/impl/HashMapHeadersMapFactoryRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/HashMapHeadersMapFactoryRouteTest.java b/camel-core/src/test/java/org/apache/camel/impl/HashMapHeadersMapFactoryRouteTest.java
new file mode 100644
index 0000000..fd91ff0
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/impl/HashMapHeadersMapFactoryRouteTest.java
@@ -0,0 +1,61 @@
+/**
+ * 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.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+
+public class HashMapHeadersMapFactoryRouteTest extends ContextTestSupport {
+
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext context = super.createCamelContext();
+        context.setHeadersMapFactory(new HashMapHeadersMapFactory());
+        return context;
+    }
+
+    public void testHashMapHeaders() throws Exception {
+        getMockEndpoint("mock:result").expectedHeaderReceived("foo", 123);
+        getMockEndpoint("mock:result").expectedHeaderReceived("FOO", 456);
+        getMockEndpoint("mock:result").expectedHeaderReceived("Bar", "yes");
+
+        Map<String, Object> headers = new HashMap<>();
+        headers.put("foo", 123);
+        headers.put("FOO", 456);
+        headers.put("Bar", "yes");
+
+        template.sendBodyAndHeaders("direct:start", "Hello World", headers);
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start")
+                    .to("mock:result");
+            }
+        };
+    }
+
+}


[09/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 2672f50bdf4b80d2def7754c8e35028feade5fa8
Parents: 23b3cc7
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 25 10:22:15 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:53 2017 +0200

----------------------------------------------------------------------
 .../apache/camel/component/snmp/SnmpEndpoint.java    |  4 ++--
 .../org/apache/camel/component/snmp/SnmpMessage.java | 15 ++++++---------
 .../camel/component/snmp/SnmpTrapConsumer.java       |  5 ++++-
 .../org/apache/camel/component/snmp/TrapTest.java    |  1 +
 4 files changed, 13 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2672f50b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
index da86ee0..af406c8 100644
--- a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
+++ b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
@@ -130,7 +130,7 @@ public class SnmpEndpoint extends DefaultPollingEndpoint {
      */
     public Exchange createExchange(PDU pdu) {
         Exchange exchange = super.createExchange();
-        exchange.setIn(new SnmpMessage(pdu));
+        exchange.setIn(new SnmpMessage(getCamelContext(), pdu));
         return exchange;
     }
 
@@ -143,7 +143,7 @@ public class SnmpEndpoint extends DefaultPollingEndpoint {
      */
     public Exchange createExchange(PDU pdu, CommandResponderEvent event) {
         Exchange exchange = super.createExchange();
-        exchange.setIn(new SnmpMessage(pdu, event));
+        exchange.setIn(new SnmpMessage(getCamelContext(), pdu, event));
         return exchange;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/2672f50b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
index 7cc9d3b..8661fee 100644
--- a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
+++ b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.snmp;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.snmp4j.CommandResponderEvent;
 import org.snmp4j.PDU;
@@ -24,15 +25,13 @@ import org.snmp4j.smi.OctetString;
 public class SnmpMessage extends DefaultMessage {
     private PDU pdu;
 
-    public SnmpMessage() {
-        this(new PDU());
-    }
-
-    public SnmpMessage(PDU pdu) {
+    public SnmpMessage(CamelContext camelContext, PDU pdu) {
+        super(camelContext);
         this.pdu = pdu;
     }
 
-    public SnmpMessage(PDU pdu, CommandResponderEvent event) {
+    public SnmpMessage(CamelContext camelContext, PDU pdu, CommandResponderEvent event) {
+        super(camelContext);
         this.pdu = pdu;
         this.setHeader("securityName", new OctetString(event.getSecurityName()));
         this.setHeader("peerAddress", event.getPeerAddress());
@@ -56,9 +55,7 @@ public class SnmpMessage extends DefaultMessage {
 
     @Override
     public SnmpMessage newInstance() {
-        SnmpMessage answer = new SnmpMessage(this.pdu);
-        answer.setCamelContext(getCamelContext());
-        return answer;
+        return new SnmpMessage(getCamelContext(), this.pdu);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/2672f50b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
index 4526b63..a9510f1 100644
--- a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
+++ b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
@@ -140,7 +140,10 @@ public class SnmpTrapConsumer extends DefaultConsumer implements CommandResponde
         try {
             getProcessor().process(exchange);
         } catch (Exception e) {
-            getExceptionHandler().handleException(e);
+            exchange.setException(e);
+        }
+        if (exchange.getException() != null) {
+            getExceptionHandler().handleException(exchange.getException());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/2672f50b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
----------------------------------------------------------------------
diff --git a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
index b688c35..8d29b02 100644
--- a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
+++ b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
@@ -81,6 +81,7 @@ public class TrapTest extends CamelTestSupport {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(1);
         mock.assertIsSatisfied();
+
         List<Exchange> exchanges = mock.getExchanges();
         SnmpMessage msg = (SnmpMessage) exchanges.get(0).getIn();
         PDU receivedTrap = msg.getSnmpMessage();


[11/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 4767924e21a83e20adbed9c8101cdd806669d170
Parents: 2672f50
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 25 10:23:57 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:53 2017 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/camel/component/snmp/SnmpProducer.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/4767924e/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
index 7e5f20f..a6b5cc5 100644
--- a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
+++ b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
@@ -130,7 +130,7 @@ public class SnmpProducer extends DefaultProducer {
             LOG.debug("Snmp: sended");
     
             if (responseEvent.getResponse() != null) {
-                exchange.getIn().setBody(new SnmpMessage(responseEvent.getResponse()));
+                exchange.getIn().setBody(new SnmpMessage(getEndpoint().getCamelContext(), responseEvent.getResponse()));
             } else {
                 throw new TimeoutException("SNMP Producer Timeout");
             }


[10/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: d50e480483563a0c9605917fbef62504a00af172
Parents: 4767924
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 25 10:46:11 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:53 2017 +0200

----------------------------------------------------------------------
 .../component/zookeeper/ZooKeeperConsumer.java  | 10 ++++-----
 .../component/zookeeper/ZooKeeperMessage.java   | 22 +++++++++++++-------
 .../component/zookeeper/ZooKeeperProducer.java  |  2 +-
 3 files changed, 21 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/d50e4804/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java
index 44b8f49..96b2686 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java
@@ -108,15 +108,15 @@ public class ZooKeeperConsumer extends DefaultConsumer {
     }
 
     private Exchange createExchange(String path, OperationResult result, WatchedEvent watchedEvent) {
-        Exchange e = getEndpoint().createExchange();
-        ZooKeeperMessage in = new ZooKeeperMessage(path, result.getStatistics(), watchedEvent);
-        e.setIn(in);
+        Exchange exchange = getEndpoint().createExchange();
+        ZooKeeperMessage in = new ZooKeeperMessage(getEndpoint().getCamelContext(), path, result.getStatistics(), watchedEvent);
+        exchange.setIn(in);
         if (result.isOk()) {
             in.setBody(result.getResult());
         } else {
-            e.setException(result.getException());
+            exchange.setException(result.getException());
         }
-        return e;
+        return exchange;
     }
 
     private class OperationsExecutor implements Runnable {

http://git-wip-us.apache.org/repos/asf/camel/blob/d50e4804/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperMessage.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperMessage.java
index 06dbc7f..9a79792 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperMessage.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperMessage.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.zookeeper;
 import java.util.Collections;
 import java.util.Map;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.zookeeper.WatchedEvent;
@@ -48,15 +49,20 @@ public class ZooKeeperMessage extends DefaultMessage {
 
     public static final String ZOOKEEPER_OPERATION = "CamelZookeeperOperation";
 
-    public ZooKeeperMessage(String node, Stat statistics, WatchedEvent watchedEvent) {
-        this(node, statistics, Collections.<String, Object>emptyMap(), watchedEvent);
+    public ZooKeeperMessage(CamelContext camelContext) {
+        super(camelContext);
     }
 
-    public ZooKeeperMessage(String node, Stat statistics, Map<String, Object> headers) {
-        this(node, statistics, headers, null);
+    public ZooKeeperMessage(CamelContext camelContext, String node, Stat statistics, WatchedEvent watchedEvent) {
+        this(camelContext, node, statistics, Collections.<String, Object>emptyMap(), watchedEvent);
     }
 
-    public ZooKeeperMessage(String node, Stat statistics, Map<String, Object> headers, WatchedEvent watchedEvent) {
+    public ZooKeeperMessage(CamelContext camelContext, String node, Stat statistics, Map<String, Object> headers) {
+        this(camelContext, node, statistics, headers, null);
+    }
+
+    public ZooKeeperMessage(CamelContext camelContext, String node, Stat statistics, Map<String, Object> headers, WatchedEvent watchedEvent) {
+        super(camelContext);
         setHeaders(headers);
         this.setHeader(ZOOKEEPER_NODE, node);
         this.setHeader(ZOOKEEPER_STATISTICS, statistics);
@@ -80,7 +86,9 @@ public class ZooKeeperMessage extends DefaultMessage {
         }
         return path;
     }
-    
-    
 
+    @Override
+    public DefaultMessage newInstance() {
+        return new ZooKeeperMessage(getCamelContext());
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/d50e4804/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperProducer.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperProducer.java
index 37b236e..7f48980 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperProducer.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperProducer.java
@@ -137,7 +137,7 @@ public class ZooKeeperProducer extends DefaultProducer {
     }
 
     private void updateExchangeWithResult(ProductionContext context, OperationResult result) {
-        ZooKeeperMessage out = new ZooKeeperMessage(context.node, result.getStatistics(), context.in.getHeaders());
+        ZooKeeperMessage out = new ZooKeeperMessage(getEndpoint().getCamelContext(), context.node, result.getStatistics(), context.in.getHeaders());
         if (result.isOk()) {
             out.setBody(result.getResult());
         } else {


[04/13] camel git commit: Make spring rest tests faster

Posted by da...@apache.org.
Make spring rest tests faster


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

Branch: refs/heads/master
Commit: a2324c38a2a3777406bf4c1b7e8794b98d0a637f
Parents: a87544a
Author: Claus Ibsen <da...@apache.org>
Authored: Wed May 24 19:42:04 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:52 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/spring/CamelContextFactoryBean.java   | 5 +++++
 .../main/java/org/apache/camel/spring/SpringCamelContext.java   | 5 +++++
 .../test/java/org/apache/camel/component/rest/RestRefTest.java  | 1 +
 .../camel/component/rest/SpringFromRestConfigurationTest.java   | 1 +
 .../camel/component/rest/SpringFromRestDuplicateTest.java       | 1 +
 .../component/rest/SpringFromRestGetEmbeddedRouteTest.java      | 1 +
 .../camel/component/rest/SpringFromRestGetInterceptTest.java    | 1 +
 .../camel/component/rest/SpringFromRestGetOnExceptionTest.java  | 1 +
 .../component/rest/SpringFromRestGetRouteOnExceptionTest.java   | 1 +
 .../org/apache/camel/component/rest/SpringFromRestGetTest.java  | 1 +
 .../component/rest/SpringFromRestIdAndDescriptionTest.java      | 1 +
 .../camel/component/rest/SpringFromRestUriPrefixTest.java       | 1 +
 12 files changed, 20 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
index 3faa12d..9914942 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
@@ -69,6 +69,7 @@ import org.apache.camel.spi.PackageScanFilter;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer;
 import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.DisposableBean;
@@ -286,6 +287,8 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
 
     @Override
     public void afterPropertiesSet() throws Exception {
+        StopWatch watch = new StopWatch();
+
         super.afterPropertiesSet();
 
         Boolean shutdownEager = CamelContextHelper.parseBoolean(getContext(), getShutdownEager());
@@ -293,6 +296,8 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
             LOG.debug("Using shutdownEager: " + shutdownEager);
             getContext().setShutdownEager(shutdownEager);
         }
+
+        LOG.debug("afterPropertiesSet() took {} millis", watch.stop());
     }
 
     protected void initCustomRegistry(SpringCamelContext context) {

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
index 1d160fd..540436d 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
@@ -29,6 +29,7 @@ import org.apache.camel.spi.Registry;
 import org.apache.camel.spring.spi.ApplicationContextRegistry;
 import org.apache.camel.spring.spi.SpringInjector;
 import org.apache.camel.spring.spi.SpringManagementMBeanAssembler;
+import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
@@ -119,7 +120,11 @@ public class SpringCamelContext extends DefaultCamelContext implements Initializ
     }
 
     public void afterPropertiesSet() throws Exception {
+        StopWatch watch = new StopWatch();
+
         maybeStart();
+        
+        LOG.debug("afterPropertiesSet() took {} millis", watch.stop());
     }
 
     public void destroy() throws Exception {

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/RestRefTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/RestRefTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/RestRefTest.java
index 3d9af1b..d61eb51 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/RestRefTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/RestRefTest.java
@@ -59,6 +59,7 @@ public class RestRefTest extends SpringTestSupport {
 
     @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return new ClassPathXmlApplicationContext("org/apache/camel/component/rest/RestRefTest.xml");
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestConfigurationTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestConfigurationTest.java
index 4139633..8c49899 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestConfigurationTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestConfigurationTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestConfigurationTest extends FromRestConfigurationTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestConfigurationTest.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestDuplicateTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestDuplicateTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestDuplicateTest.java
index fc6b70b..0017ede 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestDuplicateTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestDuplicateTest.java
@@ -27,6 +27,7 @@ public class SpringFromRestDuplicateTest extends SpringTestSupport {
 
     @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
+        System.setProperty("CamelSedaPollTimeout", "10");
         try {
             new ClassPathXmlApplicationContext("org/apache/camel/component/rest/SpringFromRestDuplicateTest.xml");
             fail("Should throw exception");

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetEmbeddedRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetEmbeddedRouteTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetEmbeddedRouteTest.java
index 9acb598..779e772 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetEmbeddedRouteTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetEmbeddedRouteTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestGetEmbeddedRouteTest extends FromRestGetEmbeddedRouteTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestGetEmbeddedRouteTest.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetInterceptTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetInterceptTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetInterceptTest.java
index 8746215..7ec5241 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetInterceptTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetInterceptTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestGetInterceptTest extends FromRestGetInterceptTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestGetInterceptTest.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetOnExceptionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetOnExceptionTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetOnExceptionTest.java
index 5c96561..83c2313 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetOnExceptionTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetOnExceptionTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestGetOnExceptionTest extends FromRestGetOnExceptionTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestGetOnExceptionTest.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetRouteOnExceptionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetRouteOnExceptionTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetRouteOnExceptionTest.java
index a386b4b..f1fa058 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetRouteOnExceptionTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetRouteOnExceptionTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestGetRouteOnExceptionTest extends FromRestGetRouteOnExceptionTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestGetRouteOnExceptionTest.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetTest.java
index b8908ff..029f435 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestGetTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestGetTest extends FromRestGetTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestGetTest.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestIdAndDescriptionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestIdAndDescriptionTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestIdAndDescriptionTest.java
index b044dc0..d40d851 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestIdAndDescriptionTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestIdAndDescriptionTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestIdAndDescriptionTest extends FromRestIdAndDescriptionTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestIdAndDescriptionTest.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2324c38/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestUriPrefixTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestUriPrefixTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestUriPrefixTest.java
index 6eafd23..ece16cd 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestUriPrefixTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/rest/SpringFromRestUriPrefixTest.java
@@ -23,6 +23,7 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 public class SpringFromRestUriPrefixTest extends FromRestUriPrefixTest {
 
     protected CamelContext createCamelContext() throws Exception {
+        System.setProperty("CamelSedaPollTimeout", "10");
         return createSpringCamelContext(this, "org/apache/camel/component/rest/SpringFromRestUriPrefixTest.xml");
     }
 


[07/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 23b3cc7094ea491f41e1a2914fb954cb156c816e
Parents: 1184a52
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 25 10:14:06 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:53 2017 +0200

----------------------------------------------------------------------
 .../component/quickfixj/QuickfixjComponent.java |   9 +-
 .../quickfixj/QuickfixjConvertersTest.java      |  13 +-
 .../camel/component/smpp/SmppBinding.java       |  10 +-
 .../camel/component/smpp/SmppEndpoint.java      |   6 +-
 .../camel/component/smpp/SmppBindingTest.java   |  21 +-
 .../camel/component/smpp/SmppEndpointTest.java  | 265 -------------------
 .../camel/component/smpp/SmppMessageTest.java   |  27 +-
 7 files changed, 53 insertions(+), 298 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/23b3cc70/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjComponent.java b/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjComponent.java
index 7598161..4bbae5c 100644
--- a/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjComponent.java
+++ b/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjComponent.java
@@ -23,7 +23,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.StartupListener;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,7 +32,7 @@ import quickfix.MessageFactory;
 import quickfix.MessageStoreFactory;
 import quickfix.SessionSettings;
 
-public class QuickfixjComponent extends UriEndpointComponent implements StartupListener {
+public class QuickfixjComponent extends DefaultComponent implements StartupListener {
     private static final Logger LOG = LoggerFactory.getLogger(QuickfixjComponent.class);
     private static final String PARAMETER_LAZY_CREATE_ENGINE = "lazyCreateEngine";
 
@@ -52,7 +52,10 @@ public class QuickfixjComponent extends UriEndpointComponent implements StartupL
     private boolean lazyCreateEngines;
 
     public QuickfixjComponent() {
-        super(QuickfixjEndpoint.class);
+    }
+
+    public QuickfixjComponent(CamelContext context) {
+        super(context);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/23b3cc70/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjConvertersTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjConvertersTest.java b/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjConvertersTest.java
index cf790e6..b4b9917 100644
--- a/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjConvertersTest.java
+++ b/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjConvertersTest.java
@@ -17,24 +17,19 @@
 package org.apache.camel.component.quickfixj;
 
 import java.io.File;
-import java.io.IOException;
 import java.net.URL;
 import java.net.URLClassLoader;
 
-import javax.management.JMException;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.component.quickfixj.converter.QuickfixjConverters;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-
 import quickfix.Acceptor;
-import quickfix.ConfigError;
 import quickfix.DataDictionary;
-import quickfix.FieldConvertError;
 import quickfix.Initiator;
 import quickfix.Message;
 import quickfix.SessionFactory;
@@ -94,7 +89,7 @@ public class QuickfixjConvertersTest extends CamelTestSupport {
     @Test
     public void convertToExchange() {
         SessionID sessionID = new SessionID("FIX.4.0", "FOO", "BAR");
-        QuickfixjEndpoint endpoint = new QuickfixjEndpoint(null, "", new QuickfixjComponent());
+        QuickfixjEndpoint endpoint = new QuickfixjEndpoint(null, "", new QuickfixjComponent(new DefaultCamelContext()));
         
         Message message = new Message();     
         message.getHeader().setString(MsgType.FIELD, MsgType.ORDER_SINGLE);
@@ -112,7 +107,7 @@ public class QuickfixjConvertersTest extends CamelTestSupport {
     @Test
     public void convertToExchangeWithNullMessage() {
         SessionID sessionID = new SessionID("FIX.4.0", "FOO", "BAR");
-        QuickfixjEndpoint endpoint = new QuickfixjEndpoint(null, "", new QuickfixjComponent());
+        QuickfixjEndpoint endpoint = new QuickfixjEndpoint(null, "", new QuickfixjComponent(new DefaultCamelContext()));
         
         Exchange exchange = QuickfixjConverters.toExchange(endpoint, sessionID, null, QuickfixjEventCategory.AppMessageSent);
         
@@ -219,7 +214,7 @@ public class QuickfixjConvertersTest extends CamelTestSupport {
         }
     }
 
-    private void createSession(SessionID sessionID) throws IOException, ConfigError, FieldConvertError, JMException, Exception {
+    private void createSession(SessionID sessionID) throws Exception {
         SessionSettings settings = new SessionSettings();
         settings.setString(Acceptor.SETTING_SOCKET_ACCEPT_PROTOCOL, ProtocolFactory.getTypeString(ProtocolFactory.VM_PIPE));
         

http://git-wip-us.apache.org/repos/asf/camel/blob/23b3cc70/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
index 79d9dc7..cea7573 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.jsmpp.bean.AlertNotification;
 import org.jsmpp.bean.Alphabet;
@@ -76,8 +77,9 @@ public class SmppBinding {
     /**
      * Create a new SmppMessage from the inbound alert notification
      */
-    public SmppMessage createSmppMessage(AlertNotification alertNotification) {
+    public SmppMessage createSmppMessage(CamelContext camelContext, AlertNotification alertNotification) {
         SmppMessage smppMessage = new SmppMessage(alertNotification, configuration);
+        smppMessage.setCamelContext(camelContext);
 
         smppMessage.setHeader(SmppConstants.MESSAGE_TYPE, SmppMessageType.AlertNotification.toString());
         smppMessage.setHeader(SmppConstants.SEQUENCE_NUMBER, alertNotification.getSequenceNumber());
@@ -96,8 +98,9 @@ public class SmppBinding {
     /**
      * Create a new SmppMessage from the inbound deliver sm or deliver receipt
      */
-    public SmppMessage createSmppMessage(DeliverSm deliverSm) throws Exception {
+    public SmppMessage createSmppMessage(CamelContext camelContext, DeliverSm deliverSm) throws Exception {
         SmppMessage smppMessage = new SmppMessage(deliverSm, configuration);
+        smppMessage.setCamelContext(camelContext);
 
         String messagePayload = null;
 
@@ -233,8 +236,9 @@ public class SmppBinding {
         return optParams;
     }
 
-    public SmppMessage createSmppMessage(DataSm dataSm, String smppMessageId) {
+    public SmppMessage createSmppMessage(CamelContext camelContext, DataSm dataSm, String smppMessageId) {
         SmppMessage smppMessage = new SmppMessage(dataSm, configuration);
+        smppMessage.setCamelContext(camelContext);
 
         smppMessage.setHeader(SmppConstants.MESSAGE_TYPE, SmppMessageType.DataSm.toString());
         smppMessage.setHeader(SmppConstants.ID, smppMessageId);

http://git-wip-us.apache.org/repos/asf/camel/blob/23b3cc70/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
index 56e6a6f..2526004 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
@@ -92,7 +92,7 @@ public class SmppEndpoint extends DefaultEndpoint {
                                                             AlertNotification alertNotification) {
         Exchange exchange = createExchange(exchangePattern);
         exchange.setProperty(Exchange.BINDING, getBinding());
-        exchange.setIn(getBinding().createSmppMessage(alertNotification));
+        exchange.setIn(getBinding().createSmppMessage(getCamelContext(), alertNotification));
         return exchange;
     }
 
@@ -119,7 +119,7 @@ public class SmppEndpoint extends DefaultEndpoint {
                                                     DeliverSm deliverSm) throws Exception {
         Exchange exchange = createExchange(exchangePattern);
         exchange.setProperty(Exchange.BINDING, getBinding());
-        exchange.setIn(getBinding().createSmppMessage(deliverSm));
+        exchange.setIn(getBinding().createSmppMessage(getCamelContext(), deliverSm));
         return exchange;
     }
     
@@ -147,7 +147,7 @@ public class SmppEndpoint extends DefaultEndpoint {
     public Exchange createOnAcceptDataSm(ExchangePattern exchangePattern, DataSm dataSm, String smppMessageId) {
         Exchange exchange = createExchange(exchangePattern);
         exchange.setProperty(Exchange.BINDING, getBinding());
-        exchange.setIn(getBinding().createSmppMessage(dataSm, smppMessageId));
+        exchange.setIn(getBinding().createSmppMessage(getCamelContext(), dataSm, smppMessageId));
         return exchange;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/23b3cc70/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
index 92edbc3..5c3b545 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
@@ -21,6 +21,7 @@ import java.util.Date;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
@@ -54,6 +55,7 @@ import static org.junit.Assert.fail;
 public class SmppBindingTest {
     
     private SmppBinding binding;
+    private CamelContext camelContext;
 
     @Before
     public void setUp() {
@@ -62,6 +64,7 @@ public class SmppBindingTest {
                 return new Date(1251666387000L);
             }
         };
+        camelContext = new DefaultCamelContext();
     }
 
     @Test
@@ -88,7 +91,7 @@ public class SmppBindingTest {
         alertNotification.setEsmeAddr("1717");
         alertNotification.setEsmeAddrNpi(NumberingPlanIndicator.NATIONAL.value());
         alertNotification.setEsmeAddrTon(TypeOfNumber.NATIONAL.value());
-        SmppMessage smppMessage = binding.createSmppMessage(alertNotification);
+        SmppMessage smppMessage = binding.createSmppMessage(camelContext, alertNotification);
         
         assertNull(smppMessage.getBody());
         assertEquals(10, smppMessage.getHeaders().size());
@@ -111,7 +114,7 @@ public class SmppBindingTest {
         deliverSm.setShortMessage(
             "id:2 sub:001 dlvrd:001 submit date:0908312310 done date:0908312311 stat:DELIVRD err:xxx Text:Hello SMPP world!"
                 .getBytes());
-        SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+        SmppMessage smppMessage = binding.createSmppMessage(camelContext, deliverSm);
         
         assertEquals("Hello SMPP world!", smppMessage.getBody());
         assertEquals(8, smppMessage.getHeaders().size());
@@ -140,7 +143,7 @@ public class SmppBindingTest {
             new OptionalParameter.Short(Tag.DEST_TELEMATICS_ID, (short) 1),
             new OptionalParameter.Int(Tag.QOS_TIME_TO_LIVE, 1),
             new OptionalParameter.Null(Tag.ALERT_ON_MESSAGE_DELIVERY));
-        SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+        SmppMessage smppMessage = binding.createSmppMessage(camelContext, deliverSm);
 
         assertEquals("Hello SMPP world!", smppMessage.getBody());
         assertEquals(10, smppMessage.getHeaders().size());
@@ -180,7 +183,7 @@ public class SmppBindingTest {
         deliverSm.setOptionalParameters(new OctetString(OptionalParameter.Tag.MESSAGE_PAYLOAD,
             "id:2 sub:001 dlvrd:001 submit date:0908312310 done date:0908312311 stat:DELIVRD err:xxx Text:Hello SMPP world!"));
         try {
-            SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+            SmppMessage smppMessage = binding.createSmppMessage(camelContext, deliverSm);
 
             assertEquals("Hello SMPP world!", smppMessage.getBody());
             assertEquals(10, smppMessage.getHeaders().size());
@@ -202,7 +205,7 @@ public class SmppBindingTest {
         deliverSm.setOptionalParameters(new OptionalParameter.Short((short) 0x2153, (short) 0));
 
         try {
-            SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+            SmppMessage smppMessage = binding.createSmppMessage(camelContext, deliverSm);
             Map<Short, Object> optionalParameter = smppMessage.getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
             assertEquals(Short.valueOf((short) 0), optionalParameter.get(Short.valueOf((short) 0x2153)));
         } catch (Exception e) {
@@ -225,7 +228,7 @@ public class SmppBindingTest {
         deliverSm.setScheduleDeliveryTime("090831230627004+");
         deliverSm.setValidityPeriod("090901230627004+");
         deliverSm.setServiceType("WAP");
-        SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+        SmppMessage smppMessage = binding.createSmppMessage(camelContext, deliverSm);
         
         assertEquals("Hello SMPP world!", smppMessage.getBody());
         assertEquals(13, smppMessage.getHeaders().size());
@@ -258,7 +261,7 @@ public class SmppBindingTest {
         deliverSm.setValidityPeriod("090901230627004+");
         deliverSm.setServiceType("WAP");
         deliverSm.setOptionalParameters(new OctetString(OptionalParameter.Tag.MESSAGE_PAYLOAD, "Hello SMPP world!"));
-        SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+        SmppMessage smppMessage = binding.createSmppMessage(camelContext, deliverSm);
         
         assertEquals("Hello SMPP world!", smppMessage.getBody());
         assertEquals(13, smppMessage.getHeaders().size());
@@ -290,7 +293,7 @@ public class SmppBindingTest {
         dataSm.setDestAddrTon(TypeOfNumber.NATIONAL.value());
         dataSm.setServiceType("WAP");
         dataSm.setRegisteredDelivery((byte) 0);
-        SmppMessage smppMessage = binding.createSmppMessage(dataSm, "1");
+        SmppMessage smppMessage = binding.createSmppMessage(camelContext, dataSm, "1");
         
         assertNull(smppMessage.getBody());
         assertEquals(14, smppMessage.getHeaders().size());
@@ -334,7 +337,7 @@ public class SmppBindingTest {
 
             for (String encoding : encodings) {
                 binding.getConfiguration().setEncoding(encoding);
-                SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+                SmppMessage smppMessage = binding.createSmppMessage(camelContext, deliverSm);
                 assertArrayEquals(
                     String.format("data coding=0x%02X; encoding=%s",
                                   dataCoding,

http://git-wip-us.apache.org/repos/asf/camel/blob/23b3cc70/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppEndpointTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppEndpointTest.java
deleted file mode 100644
index 9a50fe6..0000000
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppEndpointTest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/**
- * 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.component.smpp;
-
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.jsmpp.bean.AlertNotification;
-import org.jsmpp.bean.DataSm;
-import org.jsmpp.bean.DeliverSm;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-/**
- * JUnit test class for <code>org.apache.camel.component.smpp.SmppEndpoint</code>
- * 
- * @version 
- */
-public class SmppEndpointTest {
-    
-    private SmppEndpoint endpoint;
-    private SmppConfiguration configuration;
-    private Component component;
-    private SmppBinding binding;
-
-    @Before
-    public void setUp() throws Exception {
-        configuration = createMock(SmppConfiguration.class);
-        component = createMock(Component.class);
-        binding = createMock(SmppBinding.class);
-        
-        expect(component.createConfiguration("smpp://smppclient@localhost:2775")).andReturn(null);
-        expect(component.getCamelContext()).andReturn(null);
-        replay(component);
-
-        endpoint = new SmppEndpoint("smpp://smppclient@localhost:2775", component, configuration);
-        endpoint.setBinding(binding);
-    }
-
-    @Test
-    public void isLenientPropertiesShouldReturnTrue() {
-        assertTrue(endpoint.isLenientProperties());
-    }
-
-    @Test
-    public void isSingletonShouldReturnTrue() {
-        assertTrue(endpoint.isSingleton());
-    }
-
-    @Test
-    public void createEndpointUriShouldReturnTheEndpointUri() {
-        expect(configuration.getUsingSSL()).andReturn(false);
-        expect(configuration.getSystemId()).andReturn("smppclient").times(2);
-        expect(configuration.getHost()).andReturn("localhost");
-        expect(configuration.getPort()).andReturn(new Integer(2775));
-        
-        replay(configuration);
-        
-        assertEquals("smpp://smppclient@localhost:2775", endpoint.createEndpointUri());
-        
-        verify(configuration);
-    }
-
-    @Test
-    public void createEndpointUriWithoutUserShouldReturnTheEndpointUri() {
-        expect(configuration.getUsingSSL()).andReturn(false);
-        expect(configuration.getSystemId()).andReturn(null);
-        expect(configuration.getHost()).andReturn("localhost");
-        expect(configuration.getPort()).andReturn(new Integer(2775));
-        
-        replay(configuration);
-        
-        assertEquals("smpp://localhost:2775", endpoint.createEndpointUri());
-        
-        verify(configuration);
-    }
-
-    @Test
-    public void createConsumerShouldReturnASmppConsumer() throws Exception {
-        Processor processor = createMock(Processor.class);
-        
-        replay(processor);
-        
-        Consumer consumer = endpoint.createConsumer(processor);
-        
-        verify(processor);
-        
-        assertTrue(consumer instanceof SmppConsumer);
-    }
-
-    @Test
-    public void createProducerShouldReturnASmppProducer() throws Exception {
-        Producer producer = endpoint.createProducer();
-        
-        assertTrue(producer instanceof SmppProducer);
-    }
-
-    @Test
-    public void createOnAcceptAlertNotificationExchange() {
-        AlertNotification alertNotification = createMock(AlertNotification.class);
-        SmppMessage message = createMock(SmppMessage.class);
-        expect(binding.createSmppMessage(alertNotification)).andReturn(message);
-        message.setExchange(isA(Exchange.class));
-        
-        replay(alertNotification, binding, message);
-        
-        Exchange exchange = endpoint.createOnAcceptAlertNotificationExchange(alertNotification);
-        
-        verify(alertNotification, binding, message);
-        
-        assertSame(binding, exchange.getProperty(Exchange.BINDING));
-        assertSame(message, exchange.getIn());
-        assertSame(ExchangePattern.InOnly, exchange.getPattern());
-    }
-
-    @Test
-    public void createOnAcceptAlertNotificationExchangeWithExchangePattern() {
-        AlertNotification alertNotification = createMock(AlertNotification.class);
-        SmppMessage message = createMock(SmppMessage.class);
-        expect(binding.createSmppMessage(alertNotification)).andReturn(message);
-        message.setExchange(isA(Exchange.class));
-        
-        replay(alertNotification, binding, message);
-        
-        Exchange exchange = endpoint.createOnAcceptAlertNotificationExchange(ExchangePattern.InOut, alertNotification);
-        
-        verify(alertNotification, binding, message);
-        
-        assertSame(binding, exchange.getProperty(Exchange.BINDING));
-        assertSame(message, exchange.getIn());
-        assertSame(ExchangePattern.InOut, exchange.getPattern());
-    }
-
-    @Test
-    public void createOnAcceptDeliverSmExchange() throws Exception {
-        DeliverSm deliverSm = createMock(DeliverSm.class);
-        SmppMessage message = createMock(SmppMessage.class);
-        expect(binding.createSmppMessage(deliverSm)).andReturn(message);
-        message.setExchange(isA(Exchange.class));
-        
-        replay(deliverSm, binding, message);
-        
-        Exchange exchange = endpoint.createOnAcceptDeliverSmExchange(deliverSm);
-        
-        verify(deliverSm, binding, message);
-        
-        assertSame(binding, exchange.getProperty(Exchange.BINDING));
-        assertSame(message, exchange.getIn());
-        assertSame(ExchangePattern.InOnly, exchange.getPattern());
-    }
-
-    @Test
-    public void createOnAcceptDeliverSmWithExchangePattern() throws Exception {
-        DeliverSm deliverSm = createMock(DeliverSm.class);
-        SmppMessage message = createMock(SmppMessage.class);
-        expect(binding.createSmppMessage(deliverSm)).andReturn(message);
-        message.setExchange(isA(Exchange.class));
-        
-        replay(deliverSm, binding, message);
-        
-        Exchange exchange = endpoint.createOnAcceptDeliverSmExchange(ExchangePattern.InOut, deliverSm);
-        
-        verify(deliverSm, binding, message);
-        
-        assertSame(binding, exchange.getProperty(Exchange.BINDING));
-        assertSame(message, exchange.getIn());
-        assertSame(ExchangePattern.InOut, exchange.getPattern());
-    }
-    
-    @Test
-    public void createOnAcceptDataSm() throws Exception {
-        DataSm dataSm = createMock(DataSm.class);
-        SmppMessage message = createMock(SmppMessage.class);
-        expect(binding.createSmppMessage(eq(dataSm), isA(String.class))).andReturn(message);
-        message.setExchange(isA(Exchange.class));
-        
-        replay(dataSm, binding, message);
-        
-        Exchange exchange = endpoint.createOnAcceptDataSm(dataSm, "1");
-        
-        verify(dataSm, binding, message);
-        
-        assertSame(binding, exchange.getProperty(Exchange.BINDING));
-        assertSame(message, exchange.getIn());
-        assertSame(ExchangePattern.InOnly, exchange.getPattern());
-    }
-    
-    @Test
-    public void createOnAcceptDataSmWithExchangePattern() throws Exception {
-        DataSm dataSm = createMock(DataSm.class);
-        SmppMessage message = createMock(SmppMessage.class);
-        expect(binding.createSmppMessage(eq(dataSm), isA(String.class))).andReturn(message);
-        message.setExchange(isA(Exchange.class));
-        
-        replay(dataSm, binding, message);
-        
-        Exchange exchange = endpoint.createOnAcceptDataSm(ExchangePattern.InOut, dataSm, "1");
-        
-        verify(dataSm, binding, message);
-        
-        assertSame(binding, exchange.getProperty(Exchange.BINDING));
-        assertSame(message, exchange.getIn());
-        assertSame(ExchangePattern.InOut, exchange.getPattern());
-    }
-
-    @Test
-    public void getConnectionStringShouldReturnTheConnectionString() {
-        expect(configuration.getUsingSSL()).andReturn(false);
-        expect(configuration.getSystemId()).andReturn("smppclient").times(2);
-        expect(configuration.getHost()).andReturn("localhost");
-        expect(configuration.getPort()).andReturn(new Integer(2775));
-        
-        replay(configuration);
-        
-        assertEquals("smpp://smppclient@localhost:2775", endpoint.getConnectionString());
-        
-        verify(configuration);
-    }
-
-    @Test
-    public void getConnectionStringWithoutUserShouldReturnTheConnectionString() {
-        expect(configuration.getUsingSSL()).andReturn(false);
-        expect(configuration.getSystemId()).andReturn(null);
-        expect(configuration.getHost()).andReturn("localhost");
-        expect(configuration.getPort()).andReturn(new Integer(2775));
-        
-        replay(configuration);
-        
-        assertEquals("smpp://localhost:2775", endpoint.getConnectionString());
-        
-        verify(configuration);
-    }
-
-    @Test
-    public void getConfigurationShouldReturnTheSetValue() {
-        assertSame(configuration, endpoint.getConfiguration());
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/23b3cc70/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
index 38dbc74..3762286 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
@@ -19,6 +19,8 @@ package org.apache.camel.component.smpp;
 import java.nio.charset.Charset;
 import java.util.Set;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.jsmpp.bean.AlertNotification;
 import org.jsmpp.bean.DataSm;
 import org.jsmpp.bean.DeliverSm;
@@ -38,10 +40,12 @@ import static org.junit.Assert.assertTrue;
 public class SmppMessageTest {
     
     private SmppMessage message;
+    private CamelContext camelContext = new DefaultCamelContext();
 
     @Test
     public void emptyConstructorShouldReturnAnInstanceWithoutACommand() {
         message = new SmppMessage(new SmppConfiguration());
+        message.setCamelContext(camelContext);
         
         assertNull(message.getCommand());
         assertTrue(message.getHeaders().isEmpty());
@@ -51,6 +55,7 @@ public class SmppMessageTest {
     public void alertNotificationConstructorShouldReturnAnInstanceWithACommandAndHeaderAttributes() {
         AlertNotification command = new AlertNotification();
         message = new SmppMessage(command, new SmppConfiguration());
+        message.setCamelContext(camelContext);
         
         assertTrue(message.getCommand() instanceof AlertNotification);
         assertTrue(message.getHeaders().isEmpty());
@@ -61,6 +66,7 @@ public class SmppMessageTest {
     public void testSmppMessageDataSm() {
         DataSm command = new DataSm();
         message = new SmppMessage(command, new SmppConfiguration());
+        message.setCamelContext(camelContext);
         
         assertTrue(message.getCommand() instanceof DataSm);
         assertTrue(message.getHeaders().isEmpty());
@@ -71,6 +77,7 @@ public class SmppMessageTest {
     public void testSmppMessageDeliverSm() {
         DeliverSm command = new DeliverSm();
         message = new SmppMessage(command, new SmppConfiguration());
+        message.setCamelContext(camelContext);
         
         assertTrue(message.getCommand() instanceof DeliverSm);
         assertTrue(message.getHeaders().isEmpty());
@@ -83,6 +90,7 @@ public class SmppMessageTest {
         command.setSmscDeliveryReceipt();
         command.setShortMessage("id:2 sub:001 dlvrd:001 submit date:0908312310 done date:0908312311 stat:DELIVRD err:xxx Text:Hello SMPP world!".getBytes());
         message = new SmppMessage(command, new SmppConfiguration());
+        message.setCamelContext(camelContext);
         
         assertTrue(message.getCommand() instanceof DeliverSm);
         assertTrue(message.getHeaders().isEmpty());
@@ -92,8 +100,9 @@ public class SmppMessageTest {
     @Test
     public void newInstanceShouldReturnAnInstanceWithoutACommand() {
         message = new SmppMessage(new SmppConfiguration());
+        message.setCamelContext(camelContext);
         SmppMessage msg = message.newInstance();
-        
+
         assertNotNull(msg);
         assertNull(msg.getCommand());
         assertTrue(msg.getHeaders().isEmpty());
@@ -137,7 +146,9 @@ public class SmppMessageTest {
     @Test
     public void createBodyShouldReturnNullIfTheCommandIsNull() {
         message = new SmppMessage(new SmppConfiguration());
-        
+        message.setCamelContext(camelContext);
+
+
         assertNull(message.createBody());
     }
     
@@ -145,7 +156,8 @@ public class SmppMessageTest {
     public void createBodyShouldReturnNullIfTheCommandIsNotAMessageRequest() {
         AlertNotification command = new AlertNotification();
         message = new SmppMessage(command, new SmppConfiguration());
-        
+        message.setCamelContext(camelContext);
+
         assertNull(message.createBody());
     }
     
@@ -154,14 +166,16 @@ public class SmppMessageTest {
         DeliverSm command = new DeliverSm();
         command.setShortMessage("Hello SMPP world!".getBytes());
         message = new SmppMessage(command, new SmppConfiguration());
-        
+        message.setCamelContext(camelContext);
+
         assertEquals("Hello SMPP world!", message.createBody());
     }
     
     @Test
     public void toStringShouldReturnTheBodyIfTheCommandIsNull() {
         message = new SmppMessage(new SmppConfiguration());
-        
+        message.setCamelContext(camelContext);
+
         assertEquals("SmppMessage: null", message.toString());
     }
     
@@ -170,7 +184,8 @@ public class SmppMessageTest {
         DeliverSm command = new DeliverSm();
         command.setShortMessage("Hello SMPP world!".getBytes());
         message = new SmppMessage(command, new SmppConfiguration());
-        
+        message.setCamelContext(camelContext);
+
         assertEquals("SmppMessage: PDUHeader(0, 00000000, 00000000, 0)", message.toString());
     }
 }
\ No newline at end of file


[06/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 1184a527052356819e4b7049894ec06aa3bc2af7
Parents: 36c3512
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 25 08:17:09 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:53 2017 +0200

----------------------------------------------------------------------
 camel-core/src/main/docs/eips/split-eip.adoc    |   4 +-
 .../apache/camel/component/bean/MethodInfo.java |   2 +-
 .../org/apache/camel/impl/DefaultExchange.java  |   4 +-
 .../org/apache/camel/impl/DefaultMessage.java   |   4 +-
 .../apache/camel/impl/DefaultUnitOfWork.java    |   2 +-
 .../camel/processor/ConvertBodyProcessor.java   |   2 +-
 .../camel/processor/SetBodyProcessor.java       |   2 +-
 .../camel/processor/TransformProcessor.java     |   2 +-
 .../BeanInfoAMoreComplexOverloadedTest.java     |   6 +-
 .../component/bean/BeanInfoOverloadedTest.java  |   2 +-
 .../rest/RestProducerBindingProcessorTest.java  |   6 +-
 .../apache/camel/impl/DefaultMessageTest.java   |   2 +-
 .../processor/DefaultExchangeFormatterTest.java |   2 +-
 .../camel/processor/UnmarshalProcessorTest.java |   2 +-
 .../org/apache/camel/util/ObjectHelperTest.java |   6 +-
 .../camel/component/cometd/CometdBinding.java   |   7 +-
 .../camel/component/cometd/CometdConsumer.java  |   2 +-
 .../component/cometd/CometBindingTest.java      |  10 +-
 .../component/cometd/CometdConsumerTest.java    |  24 ----
 ...etdProducerConsumerInOutInteractiveMain.java |   2 +-
 .../component/couchdb/CouchDbEndpointTest.java  |   4 +-
 .../cxf/jaxrs/DefaultCxfRsBindingTest.java      |   2 +-
 .../docker/DockerConfigurationTest.java         |   8 +-
 .../camel/component/hdfs/HdfsConsumer.java      |   2 +-
 .../camel/component/hdfs2/HdfsConsumer.java     |   2 +-
 .../component/jcr/EndpointEventListener.java    |  16 ++-
 .../apache/camel/component/jcr/JcrMessage.java  | 102 --------------
 .../camel/component/jcr/JcrConsumerTest.java    | 138 -------------------
 .../component/kafka/KafkaEndpointTest.java      |   5 +-
 .../component/kafka/KafkaProducerTest.java      |   7 +-
 .../mail/SplitAttachmentsExpression.java        |   2 +-
 .../metrics/AbstractMetricsProducerTest.java    |   3 +-
 .../milo/client/MiloClientConsumer.java         |   2 +-
 .../milo/server/MiloServerConsumer.java         |   2 +-
 .../openstack/AbstractProducerTestSupport.java  |   8 +-
 .../rabbitmq/RabbitMQMessageConverter.java      |   2 +-
 .../rabbitmq/RabbitMQProducerTest.java          |   3 +-
 .../AbstractRestProcessorApprovalTest.java      |   2 +-
 .../springldap/SpringLdapProducerTest.java      |  24 ++--
 .../camel/dataformat/tarfile/TarIterator.java   |   2 +-
 .../undertow/DefaultUndertowHttpBinding.java    |   5 +-
 .../camel/dataformat/zipfile/ZipIterator.java   |   2 +-
 .../component/zookeeper/ZooKeeperUtilsTest.java |   6 +-
 43 files changed, 105 insertions(+), 337 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/docs/eips/split-eip.adoc
----------------------------------------------------------------------
diff --git a/camel-core/src/main/docs/eips/split-eip.adoc b/camel-core/src/main/docs/eips/split-eip.adoc
index 647bed0..ca23453 100644
--- a/camel-core/src/main/docs/eips/split-eip.adoc
+++ b/camel-core/src/main/docs/eips/split-eip.adoc
@@ -451,7 +451,7 @@ public class MySplitterBean {
      * @param body the payload of the incoming message
      * @return a list containing each part splitted
      */
-    public List<Message> splitMessage(@Header(value = "user") String header, @Body String body) {
+    public List<Message> splitMessage(@Header(value = "user") String header, @Body String body, CamelContext camelContext) {
         // we can leverage the Parameter Binding Annotations
         // http://camel.apache.org/parameter-binding-annotations.html
         // to access the message header and body at same time,
@@ -461,7 +461,7 @@ public class MySplitterBean {
         List<Message> answer = new ArrayList<Message>();
         String[] parts = header.split(",");
         for (String part : parts) {
-            DefaultMessage message = new DefaultMessage();
+            DefaultMessage message = new DefaultMessage(camelContext);
             message.setHeader("user", part);
             message.setBody(body);
             answer.add(message);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index 3e5a314..410de08 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -376,7 +376,7 @@ public class MethodInfo {
         boolean copyNeeded = !(old.getClass().equals(DefaultMessage.class));
 
         if (copyNeeded) {
-            Message msg = new DefaultMessage();
+            Message msg = new DefaultMessage(exchange.getContext());
             msg.copyFromWithNewBody(old, result);
 
             // replace message on exchange

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
index b8e7a9d..3534296 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
@@ -269,7 +269,7 @@ public final class DefaultExchange implements Exchange {
 
     public Message getIn() {
         if (in == null) {
-            in = new DefaultMessage();
+            in = new DefaultMessage(getContext());
             configureMessage(in);
         }
         return in;
@@ -297,7 +297,7 @@ public final class DefaultExchange implements Exchange {
         // lazy create
         if (out == null) {
             out = (in != null && in instanceof MessageSupport)
-                ? ((MessageSupport)in).newInstance() : new DefaultMessage();
+                ? ((MessageSupport)in).newInstance() : new DefaultMessage(getContext());
             configureMessage(out);
         }
         return out;

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
index 7adb123..397298d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
@@ -239,9 +239,7 @@ public class DefaultMessage extends MessageSupport {
     public DefaultMessage newInstance() {
         ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
 
-        DefaultMessage answer = new DefaultMessage();
-        answer.setCamelContext(getCamelContext());
-        return answer;
+        return new DefaultMessage(getCamelContext());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
index 75a798e..607afff 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
@@ -84,7 +84,7 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
         if (context.isAllowUseOriginalMessage()) {
             // special for JmsMessage as it can cause it to loose headers later.
             if (exchange.getIn().getClass().getName().equals("org.apache.camel.component.jms.JmsMessage")) {
-                this.originalInMessage = new DefaultMessage();
+                this.originalInMessage = new DefaultMessage(context);
                 this.originalInMessage.setBody(exchange.getIn().getBody());
                 this.originalInMessage.getHeaders().putAll(exchange.getIn().getHeaders());
             } else {

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
index 828ff8f..41a94a7 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
@@ -100,7 +100,7 @@ public class ConvertBodyProcessor extends ServiceSupport implements AsyncProcess
         boolean copyNeeded = !(old.getClass().equals(DefaultMessage.class));
 
         if (copyNeeded) {
-            Message msg = new DefaultMessage();
+            Message msg = new DefaultMessage(exchange.getContext());
             msg.copyFromWithNewBody(old, value);
 
             // replace message on exchange

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SetBodyProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
index 58ef191..a41fe9a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
@@ -62,7 +62,7 @@ public class SetBodyProcessor extends ServiceSupport implements AsyncProcessor,
             boolean copyNeeded = !(old.getClass().equals(DefaultMessage.class));
 
             if (copyNeeded) {
-                Message msg = new DefaultMessage();
+                Message msg = new DefaultMessage(exchange.getContext());
                 msg.copyFromWithNewBody(old, newBody);
 
                 // replace message on exchange

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java
index 1ea97ab..4ad0a06 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java
@@ -63,7 +63,7 @@ public class TransformProcessor extends ServiceSupport implements AsyncProcessor
             boolean copyNeeded = !(old.getClass().equals(DefaultMessage.class));
 
             if (copyNeeded) {
-                Message msg = new DefaultMessage();
+                Message msg = new DefaultMessage(exchange.getContext());
                 msg.copyFromWithNewBody(old, newBody);
 
                 // replace message on exchange (must set as OUT)

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoAMoreComplexOverloadedTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoAMoreComplexOverloadedTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoAMoreComplexOverloadedTest.java
index 6dbfb21..6796d30 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoAMoreComplexOverloadedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoAMoreComplexOverloadedTest.java
@@ -32,7 +32,7 @@ public class BeanInfoAMoreComplexOverloadedTest extends ContextTestSupport {
     public void testRequestA() throws Exception {
         BeanInfo beanInfo = new BeanInfo(context, Bean.class);
 
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(context);
         message.setBody(new RequestA());
         Exchange exchange = new DefaultExchange(context);
         exchange.setIn(message);
@@ -48,7 +48,7 @@ public class BeanInfoAMoreComplexOverloadedTest extends ContextTestSupport {
     public void testRequestB() throws Exception {
         BeanInfo beanInfo = new BeanInfo(context, Bean.class);
 
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(context);
         message.setBody(new RequestB());
         Exchange exchange = new DefaultExchange(context);
         exchange.setIn(message);
@@ -64,7 +64,7 @@ public class BeanInfoAMoreComplexOverloadedTest extends ContextTestSupport {
     public void testAmbigious() throws Exception {
         BeanInfo beanInfo = new BeanInfo(context, Bean.class);
 
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(context);
         message.setBody("Hello World");
         Exchange exchange = new DefaultExchange(context);
         exchange.setIn(message);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoOverloadedTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoOverloadedTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoOverloadedTest.java
index 85f48b0..f16ebf2 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoOverloadedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoOverloadedTest.java
@@ -32,7 +32,7 @@ public class BeanInfoOverloadedTest extends ContextTestSupport {
     public void testBeanInfoOverloaded() throws Exception {
         BeanInfo beanInfo = new BeanInfo(context, Bean.class);
 
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(context);
         message.setBody(new RequestB());
         Exchange exchange = new DefaultExchange(context);
         exchange.setIn(message);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java b/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
index e918d31..0ee264e 100644
--- a/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
@@ -68,7 +68,7 @@ public class RestProducerBindingProcessorTest {
             jsonDataFormat, xmlDataFormat, outJsonDataFormat, outXmlDataFormat, "json", true, outType);
 
         final Exchange exchange = new DefaultExchange(context);
-        final Message input = new DefaultMessage();
+        final Message input = new DefaultMessage(context);
 
         final RequestPojo request = new RequestPojo();
         input.setBody(request);
@@ -107,7 +107,7 @@ public class RestProducerBindingProcessorTest {
             jsonDataFormat, xmlDataFormat, outJsonDataFormat, outXmlDataFormat, "xml", true, outType);
 
         final Exchange exchange = new DefaultExchange(context);
-        final Message input = new DefaultMessage();
+        final Message input = new DefaultMessage(context);
 
         final RequestPojo request = new RequestPojo();
         input.setBody(request);
@@ -146,7 +146,7 @@ public class RestProducerBindingProcessorTest {
             jsonDataFormat, xmlDataFormat, outJsonDataFormat, outXmlDataFormat, "off", true, outType);
 
         final Exchange exchange = new DefaultExchange(context);
-        final Message input = new DefaultMessage();
+        final Message input = new DefaultMessage(context);
 
         final RequestPojo request = new RequestPojo();
         input.setBody(request);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java
index f8073d2..112c2a9 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java
@@ -29,7 +29,7 @@ public class DefaultMessageTest {
 
     @Test
     public void testAttachmentsAreSorted() {
-        DefaultMessage message = new DefaultMessage();
+        DefaultMessage message = new DefaultMessage(new DefaultCamelContext());
 
         Map<String, Attachment> attachments = message.createAttachments();
 

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java b/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java
index 5182948..f5f0cc2 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java
@@ -36,7 +36,7 @@ public class DefaultExchangeFormatterTest {
     @Before
     public void setUp() {
         camelContext = new DefaultCamelContext();
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(camelContext);
         message.setBody("This is the message body");
         exchange = new DefaultExchange(camelContext);
         exchange.setIn(message);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java b/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
index 7592ee3..b6b02cb 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
@@ -55,7 +55,7 @@ public class UnmarshalProcessorTest extends TestSupport {
 
     public void testDataFormatReturnsMessage() throws Exception {
         Exchange exchange = createExchangeWithBody(new DefaultCamelContext(), "body");
-        Message out = new DefaultMessage();
+        Message out = new DefaultMessage(exchange.getContext());
         out.setBody(new Object());
         Processor processor = new UnmarshalProcessor(new MyDataFormat(out));
 

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
index f0d60a5..35def33 100644
--- a/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
@@ -741,7 +741,7 @@ public class ObjectHelperTest extends TestCase {
     }
 
     public void testIteratorWithMessage() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(new DefaultCamelContext());
         msg.setBody("a,b,c");
 
         Iterator<?> it = ObjectHelper.createIterator(msg);
@@ -758,7 +758,7 @@ public class ObjectHelperTest extends TestCase {
     }
 
     public void testIteratorWithEmptyMessage() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(new DefaultCamelContext());
         msg.setBody("");
 
         Iterator<Object> it = ObjectHelper.createIterator(msg);
@@ -773,7 +773,7 @@ public class ObjectHelperTest extends TestCase {
     }
 
     public void testIteratorWithNullMessage() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(new DefaultCamelContext());
         msg.setBody(null);
 
         Iterator<Object> it = ObjectHelper.createIterator(msg);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdBinding.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdBinding.java
index 38f6c09..5600490 100644
--- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdBinding.java
+++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdBinding.java
@@ -21,6 +21,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultMessage;
@@ -57,7 +58,6 @@ public class CometdBinding {
         this.bayeux = bayeux;
         this.enableSessionHeader = enableSessionHeader;
     }
-    
 
     public ServerMessage.Mutable createCometdMessage(ServerChannel channel, ServerSession serverSession, Message camelMessage) {
         ServerMessage.Mutable mutable = bayeux.newMessage();
@@ -71,12 +71,12 @@ public class CometdBinding {
         return mutable;
     }
 
-    public Message createCamelMessage(ServerSession remote, ServerMessage cometdMessage, Object data) {
+    public Message createCamelMessage(CamelContext camelContext, ServerSession remote, ServerMessage cometdMessage, Object data) {
         if (cometdMessage != null) {
             data = cometdMessage.getData();
         }
 
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(camelContext);
         message.setBody(data);
         Map headers = getHeadersFromMessage(cometdMessage);
         if (headers != null) {
@@ -112,7 +112,6 @@ public class CometdBinding {
         }
     }
 
-
     public void addHeadersToMessage(ServerMessage.Mutable cometdMessage, Message camelMessage) {
         if (camelMessage.hasHeaders()) {
             Map<String, Object> ext = cometdMessage.getExt(true);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
index 175715a..c35f48b 100644
--- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
+++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
@@ -94,7 +94,7 @@ public class CometdConsumer extends DefaultConsumer implements CometdProducerCon
         public void push(ServerSession remote, ServerMessage cometdMessage) throws Exception {
             Object data = null;
 
-            Message message = binding.createCamelMessage(remote, cometdMessage, data);
+            Message message = binding.createCamelMessage(endpoint.getCamelContext(), remote, cometdMessage, data);
 
             Exchange exchange = endpoint.createExchange();
             exchange.setIn(message);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometBindingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometBindingTest.java b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometBindingTest.java
index d289e2b..de88b56 100644
--- a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometBindingTest.java
+++ b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometBindingTest.java
@@ -20,7 +20,9 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Message;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.cometd.bayeux.server.ServerMessage;
 import org.cometd.bayeux.server.ServerSession;
 import org.cometd.server.BayeuxServerImpl;
@@ -56,6 +58,8 @@ public class CometBindingTest {
     @Mock
     private ServerMessage cometdMessage;
 
+    private final CamelContext camelContext = new DefaultCamelContext();
+
     @Before
     public void before() {
         testObj = new CometdBinding(bayeux);
@@ -79,7 +83,7 @@ public class CometBindingTest {
         testObj = new CometdBinding(bayeux, true);
 
         // act
-        Message result = testObj.createCamelMessage(remote, cometdMessage, null);
+        Message result = testObj.createCamelMessage(camelContext, remote, cometdMessage, null);
 
         // assert
         assertEquals(6, result.getHeaders().size());
@@ -94,7 +98,7 @@ public class CometBindingTest {
     @Test
     public void testBindingHonorsFlagForSessionAttributtes() {
         // act
-        Message result = testObj.createCamelMessage(remote, cometdMessage, null);
+        Message result = testObj.createCamelMessage(camelContext, remote, cometdMessage, null);
 
         // assert
         assertEquals(1, result.getHeaders().size());
@@ -114,7 +118,7 @@ public class CometBindingTest {
             .thenReturn(expectedSubscriptionInfo);
 
         // act
-        Message result = testObj.createCamelMessage(remote, cometdMessage, null);
+        Message result = testObj.createCamelMessage(camelContext, remote, cometdMessage, null);
 
         // assert
         assertEquals(2, result.getHeaders().size());

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java
index ca9fdf6..c2fc987 100644
--- a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java
+++ b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java
@@ -19,28 +19,22 @@ package org.apache.camel.component.cometd;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.component.cometd.CometdConsumer.ConsumerService;
 import org.cometd.bayeux.MarkedReference;
 import org.cometd.bayeux.server.LocalSession;
 import org.cometd.bayeux.server.ServerChannel;
-import org.cometd.bayeux.server.ServerMessage;
 import org.cometd.bayeux.server.ServerSession;
 import org.cometd.server.BayeuxServerImpl;
 import org.eclipse.jetty.util.log.Logger;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -98,24 +92,6 @@ public class CometdConsumerTest {
         assertEquals(expectedService, result);
     }
     
-    @Test
-    public void testSessionHeadersAdded() throws Exception {
-        // setup
-        when(endpoint.isSessionHeadersEnabled()).thenReturn(true);
-        testObj.start();
-        ServerMessage cometdMessage = mock(ServerMessage.class);
-        Exchange exchange = mock(Exchange.class);
-        when(endpoint.createExchange()).thenReturn(exchange);
-        ArgumentCaptor<Message> transferredMessage = ArgumentCaptor.forClass(Message.class);
-
-        // act
-        testObj.getConsumerService().push(remote, cometdMessage);
-
-        // verify
-        verify(exchange).setIn(transferredMessage.capture());
-        Message message = transferredMessage.getValue();
-        assertEquals(MEMEBER_USER_NAME, message.getHeader(USER_NAME));
-    }
 }
 
 

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInOutInteractiveMain.java
----------------------------------------------------------------------
diff --git a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInOutInteractiveMain.java b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInOutInteractiveMain.java
index 4844bd5..bd51a28 100644
--- a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInOutInteractiveMain.java
+++ b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInOutInteractiveMain.java
@@ -65,7 +65,7 @@ public class CometdProducerConsumerInOutInteractiveMain {
 
                 from(URI, URIS).setExchangePattern(ExchangePattern.InOut).process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
-                        Message out = new DefaultMessage();
+                        Message out = new DefaultMessage(exchange.getContext());
                         out.setBody("reply: " + exchange.getIn().getBody());
                         exchange.setOut(out);
                     }

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbEndpointTest.java b/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbEndpointTest.java
index e279d39..fc9456c 100644
--- a/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbEndpointTest.java
+++ b/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbEndpointTest.java
@@ -19,7 +19,9 @@ package org.apache.camel.component.couchdb;
 import java.util.UUID;
 
 import com.google.gson.JsonObject;
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -29,7 +31,7 @@ public class CouchDbEndpointTest {
 
     @Test
     public void testCreateCouchExchangeHeadersAreSet() throws Exception {
-        CouchDbEndpoint endpoint = new CouchDbEndpoint("couchdb:http://localhost/db", "http://localhost/db", new CouchDbComponent());
+        CouchDbEndpoint endpoint = new CouchDbEndpoint("couchdb:http://localhost/db", "http://localhost/db", new CouchDbComponent(new DefaultCamelContext()));
 
         String id = UUID.randomUUID().toString();
         String rev = UUID.randomUUID().toString();

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBindingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBindingTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBindingTest.java
index 2617a37..5472d5f 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBindingTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBindingTest.java
@@ -57,7 +57,7 @@ public class DefaultCxfRsBindingTest extends Assert {
         DefaultCxfRsBinding cxfRsBinding = new DefaultCxfRsBinding();
         cxfRsBinding.setHeaderFilterStrategy(new DefaultHeaderFilterStrategy());
         Exchange exchange = new DefaultExchange(context);
-        Message camelMessage = new DefaultMessage();
+        Message camelMessage = new DefaultMessage(context);
         org.apache.cxf.message.Message cxfMessage = new MessageImpl();
         Map<String, List<String>> headers = new HashMap<String, List<String>>();
         headers.put("emptyList", Collections.EMPTY_LIST);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerConfigurationTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerConfigurationTest.java
index 147bea5..e56dbad 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerConfigurationTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerConfigurationTest.java
@@ -19,7 +19,9 @@ package org.apache.camel.component.docker;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Message;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.junit.Before;
 import org.junit.Test;
@@ -29,17 +31,19 @@ import static org.junit.Assert.assertEquals;
 public class DockerConfigurationTest {
 
     private DockerConfiguration configuration;
+    private CamelContext camelContext;
 
     @Before
     public void setupTest() {
         configuration = new DockerConfiguration();
+        camelContext = new DefaultCamelContext();
     }
 
     @Test
     public void testPropertyFromHeader() {
         String host = "camelhost";
 
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(camelContext);
         message.setHeader(DockerConstants.DOCKER_HOST, host);
 
         String configurationProp = DockerHelper.getProperty(DockerConstants.DOCKER_HOST, configuration, message, String.class);
@@ -54,7 +58,7 @@ public class DockerConfigurationTest {
         parameters.put(DockerHelper.transformFromHeaderName(DockerConstants.DOCKER_HOST), host);
         configuration.setParameters(parameters);
 
-        Message message = new DefaultMessage();
+        Message message = new DefaultMessage(camelContext);
         String configurationProp = DockerHelper.getProperty(DockerConstants.DOCKER_HOST, configuration, message, String.class);
         assertEquals(host, configurationProp);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs/HdfsConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs/HdfsConsumer.java b/components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs/HdfsConsumer.java
index a8d09db..83b62cc 100644
--- a/components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs/HdfsConsumer.java
+++ b/components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs/HdfsConsumer.java
@@ -153,7 +153,7 @@ public final class HdfsConsumer extends ScheduledPollConsumer {
                 Holder<Object> value = new Holder<Object>();
                 while (this.istream.next(key, value) >= 0) {
                     Exchange exchange = this.getEndpoint().createExchange();
-                    Message message = new DefaultMessage();
+                    Message message = new DefaultMessage(this.getEndpoint().getCamelContext());
                     String fileName = StringUtils.substringAfterLast(status.getPath().toString(), "/");
                     message.setHeader(Exchange.FILE_NAME, fileName);
                     message.setHeader(Exchange.FILE_PATH, status.getPath().toString());

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsConsumer.java b/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsConsumer.java
index 3d5d8d4..36af8da 100644
--- a/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsConsumer.java
+++ b/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsConsumer.java
@@ -155,7 +155,7 @@ public final class HdfsConsumer extends ScheduledPollConsumer {
                 Holder<Object> value = new Holder<Object>();
                 while (this.istream.next(key, value) >= 0) {
                     Exchange exchange = this.getEndpoint().createExchange();
-                    Message message = new DefaultMessage();
+                    Message message = new DefaultMessage(this.getEndpoint().getCamelContext());
                     String fileName = StringUtils.substringAfterLast(status.getPath().toString(), "/");
                     message.setHeader(Exchange.FILE_NAME, fileName);
                     if (key.value != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/EndpointEventListener.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/EndpointEventListener.java b/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/EndpointEventListener.java
index cdad721..df42ba3 100644
--- a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/EndpointEventListener.java
+++ b/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/EndpointEventListener.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.component.jcr;
 
+import java.util.LinkedList;
+import java.util.List;
+import javax.jcr.observation.Event;
 import javax.jcr.observation.EventIterator;
 import javax.jcr.observation.EventListener;
 
@@ -30,8 +33,6 @@ import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
 /**
  * A JCR {@link EventListener} which can be used to delegate processing to a
  * Camel endpoint.
- *
- * @version $Id$
  */
 public class EndpointEventListener implements EventListener {
 
@@ -75,7 +76,16 @@ public class EndpointEventListener implements EventListener {
 
     private Exchange createExchange(EventIterator events) {
         Exchange exchange = endpoint.createExchange();
-        exchange.setIn(new JcrMessage(events));
+
+        List<Event> eventList = new LinkedList<Event>();
+        if (events != null) {
+            while (events.hasNext()) {
+                eventList.add(events.nextEvent());
+            }
+        }
+        exchange.getIn().setBody(eventList);
+
         return exchange;
     }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrMessage.java b/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrMessage.java
deleted file mode 100644
index 0cf02ac..0000000
--- a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrMessage.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * 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.component.jcr;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.jcr.observation.Event;
-import javax.jcr.observation.EventIterator;
-
-import org.apache.camel.impl.DefaultMessage;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * Represents a {@link org.apache.camel.Message} for working with JCR
- *
- * @version $Id$
- */
-public class JcrMessage extends DefaultMessage {
-
-    private EventIterator eventIterator;
-    private List<Event> eventList;
-
-    public JcrMessage(EventIterator eventIterator) {
-        this.eventIterator = eventIterator;
-    }
-
-    @Override
-    public String toString() {
-        if (eventIterator != null) {
-            return "JcrMessage[eventIterator: " + eventIterator + ", eventList: " + eventList + "]";
-        }
-
-        return "JcrMessage@" + ObjectHelper.getIdentityHashCode(this);
-    }
-
-    @Override
-    public void copyFrom(org.apache.camel.Message that) {
-        if (that == this) {
-            // the same instance so do not need to copy
-            return;
-        }
-
-        // must initialize headers before we set the JmsMessage to avoid Camel
-        // populating it before we do the copy
-        getHeaders().clear();
-
-        if (that instanceof JcrMessage) {
-            JcrMessage thatMessage = (JcrMessage) that;
-            this.eventIterator = thatMessage.eventIterator;
-            this.eventList = thatMessage.eventList;
-        }
-
-        // copy body and fault flag
-        setBody(that.getBody());
-        setFault(that.isFault());
-
-        // we have already cleared the headers
-        if (that.hasHeaders()) {
-            getHeaders().putAll(that.getHeaders());
-        }
-
-        getAttachments().clear();
-
-        if (that.hasAttachments()) {
-            getAttachmentObjects().putAll(that.getAttachmentObjects());
-        }
-    }
-
-    public EventIterator getEventIterator() {
-        return eventIterator;
-    }
-
-    @Override
-    protected Object createBody() {
-        if (eventList == null) {
-            eventList = new LinkedList<Event>();
-
-            if (eventIterator != null) {
-                while (eventIterator.hasNext()) {
-                    eventList.add(eventIterator.nextEvent());
-                }
-            }
-        }
-
-        return eventList;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConsumerTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConsumerTest.java
deleted file mode 100644
index 65a8ad0..0000000
--- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConsumerTest.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * 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.component.jcr;
-
-import java.util.List;
-import javax.jcr.Node;
-import javax.jcr.Session;
-import javax.jcr.observation.Event;
-import javax.jcr.observation.EventIterator;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * JcrConsumerTest
- *
- * @version $Id$
- */
-public class JcrConsumerTest extends JcrRouteTestSupport {
-
-    private static final Logger LOG = LoggerFactory.getLogger(JcrConsumerTest.class);
-
-    private String absPath = "/home/test";
-
-    @Test
-    public void testJcrConsumer() throws Exception {
-        // start consumer thread first
-        JcrConsumerThread consumerThread = new JcrConsumerThread();
-        consumerThread.start();
-        // wait until the consumer thread has tried to receive event at least once
-        while (consumerThread.getReceiveTrialTimes() < 1) {
-            Thread.sleep(10L);
-        }
-
-        // now create a node under the specified event node path
-
-        Session session = openSession();
-
-        try {
-            Node folderNode = session.getRootNode();
-
-            for (String folderNodeName : absPath.split("\\/")) {
-                if (!"".equals(folderNodeName)) {
-                    if (folderNode.hasNode(folderNodeName)) {
-                        folderNode.getNode(folderNodeName).remove();
-                    }
-
-                    folderNode = folderNode.addNode(folderNodeName, "nt:unstructured");
-                }
-            }
-
-            folderNode.addNode("node", "nt:unstructured");
-            session.save();
-        } finally {
-            if (session != null && session.isLive()) {
-                session.logout();
-            }
-        }
-
-        // wait until the consumer thread captures an event
-        consumerThread.join();
-
-        Exchange exchange = consumerThread.getExchange();
-        assertNotNull(exchange);
-
-        Message message = exchange.getIn();
-        assertNotNull(message);
-        assertTrue(message instanceof JcrMessage);
-        EventIterator eventIterator = ((JcrMessage)message).getEventIterator();
-        assertNotNull(eventIterator);
-        assertEquals(1, eventIterator.getSize());
-
-        List<?> eventList = message.getBody(List.class);
-        assertEquals(1, eventList.size());
-        Event event = (Event) eventList.get(0);
-        assertEquals(Event.NODE_ADDED, event.getType());
-        assertNotNull(event.getPath());
-        assertTrue(event.getPath().startsWith(absPath));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("jcr://user:pass@repository/home/test?eventTypes=1&deep=true&noLocal=false")
-                        .to("direct:a");
-            }
-        };
-    }
-
-    private class JcrConsumerThread extends Thread {
-
-        private Exchange exchange;
-        private int receiveTrialTimes;
-
-        public void run() {
-            while (exchange == null) {
-                exchange = consumer.receive("direct:a", 10L);
-                ++receiveTrialTimes;
-
-                try {
-                    Thread.sleep(10);
-                } catch (InterruptedException e) {
-                    break;
-                }
-            }
-
-            LOG.debug("JcrConsumerThread receive exchange, {} after {} trials", exchange, receiveTrialTimes);
-        }
-
-        public Exchange getExchange() {
-            return exchange;
-        }
-
-        public int getReceiveTrialTimes() {
-            return receiveTrialTimes;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaEndpointTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaEndpointTest.java
index 3e5300d..f968932 100644
--- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaEndpointTest.java
+++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaEndpointTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.kafka;
 import java.net.URISyntaxException;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.junit.Test;
 
@@ -29,7 +30,7 @@ public class KafkaEndpointTest {
 
     @Test
     public void testCreatingKafkaExchangeSetsHeaders() throws URISyntaxException {
-        KafkaEndpoint endpoint = new KafkaEndpoint("kafka:mytopic?brokers=localhost", new KafkaComponent());
+        KafkaEndpoint endpoint = new KafkaEndpoint("kafka:mytopic?brokers=localhost", new KafkaComponent(new DefaultCamelContext()));
 
         ConsumerRecord<String, String> record = new ConsumerRecord<String, String>("topic", 4, 56, "somekey", "");
         Exchange exchange = endpoint.createKafkaExchange(record);
@@ -41,7 +42,7 @@ public class KafkaEndpointTest {
 
     @Test
     public void assertSingleton() throws URISyntaxException {
-        KafkaEndpoint endpoint = new KafkaEndpoint("kafka:mytopic?brokers=localhost", new KafkaComponent());
+        KafkaEndpoint endpoint = new KafkaEndpoint("kafka:mytopic?brokers=localhost", new KafkaComponent(new DefaultCamelContext()));
         endpoint.getConfiguration().setBrokers("localhost");
         assertTrue(endpoint.isSingleton());
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java
index 41378b8..256208e 100644
--- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java
+++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultHeadersMapFactory;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.kafka.clients.producer.Callback;
 import org.apache.kafka.clients.producer.ProducerConfig;
@@ -52,8 +53,9 @@ public class KafkaProducerTest {
     private TypeConverter converter = Mockito.mock(TypeConverter.class);
     private CamelContext context = Mockito.mock(CamelContext.class);
     private Exchange exchange = Mockito.mock(Exchange.class);
-    private Message in = new DefaultMessage();
-    private Message out = new DefaultMessage();
+    private CamelContext camelContext = Mockito.mock(CamelContext.class);
+    private Message in = new DefaultMessage(camelContext);
+    private Message out = new DefaultMessage(camelContext);
     private AsyncCallback callback = Mockito.mock(AsyncCallback.class);
 
     @SuppressWarnings({"unchecked"})
@@ -75,6 +77,7 @@ public class KafkaProducerTest {
         Mockito.when(exchange.getContext()).thenReturn(context);
         Mockito.when(context.getTypeConverter()).thenReturn(converter);
         Mockito.when(converter.tryConvertTo(String.class, exchange, null)).thenReturn(null);
+        Mockito.when(camelContext.getHeadersMapFactory()).thenReturn(new DefaultHeadersMapFactory());
 
         producer.setKafkaProducer(kp);
         producer.setWorkerPool(Executors.newFixedThreadPool(1));

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-mail/src/main/java/org/apache/camel/component/mail/SplitAttachmentsExpression.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/SplitAttachmentsExpression.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/SplitAttachmentsExpression.java
index ca5aae5..569b99c 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/SplitAttachmentsExpression.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/SplitAttachmentsExpression.java
@@ -107,7 +107,7 @@ public class SplitAttachmentsExpression extends ExpressionAdapter {
     }
 
     private Message extractAttachment(Message inMessage, String attachmentName) throws Exception {
-        final Message outMessage = new DefaultMessage();
+        final Message outMessage = new DefaultMessage(inMessage.getExchange().getContext());
         outMessage.setHeader(HEADER_NAME, attachmentName);
         Object attachment = inMessage.getAttachment(attachmentName).getContent();
         if (attachment instanceof InputStream) {

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/AbstractMetricsProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/AbstractMetricsProducerTest.java b/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/AbstractMetricsProducerTest.java
index 037f473..d96f4d0 100644
--- a/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/AbstractMetricsProducerTest.java
+++ b/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/AbstractMetricsProducerTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.metrics;
 import com.codahale.metrics.MetricRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.junit.Before;
 import org.junit.Test;
@@ -171,7 +172,7 @@ public class AbstractMetricsProducerTest {
 
     @Test
     public void testClearRealHeaders() throws Exception {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(new DefaultCamelContext());
         Object val = new Object();
         msg.setHeader(HEADER_HISTOGRAM_VALUE, 109L);
         msg.setHeader(HEADER_METRIC_NAME, "the metric");

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConsumer.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConsumer.java
index b05ce87..57f08ed 100644
--- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConsumer.java
+++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConsumer.java
@@ -82,7 +82,7 @@ public class MiloClientConsumer extends DefaultConsumer {
             return null;
         }
 
-        final DefaultMessage result = new DefaultMessage();
+        final DefaultMessage result = new DefaultMessage(getEndpoint().getCamelContext());
 
         Messages.fillFromDataValue(value, result);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerConsumer.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerConsumer.java
index ca91d14..d0f05da 100644
--- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerConsumer.java
+++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerConsumer.java
@@ -68,7 +68,7 @@ public class MiloServerConsumer extends DefaultConsumer {
             return null;
         }
 
-        final DefaultMessage result = new DefaultMessage();
+        final DefaultMessage result = new DefaultMessage(getEndpoint().getCamelContext());
 
         Messages.fillFromDataValue(value, result);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java b/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java
index ea87b57..6caeddb 100644
--- a/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java
+++ b/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java
@@ -18,9 +18,11 @@ package org.apache.camel.component.openstack;
 
 import java.io.IOException;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Producer;
+import org.apache.camel.impl.DefaultHeadersMapFactory;
 import org.apache.camel.impl.DefaultMessage;
 import org.junit.Before;
 import org.junit.runner.RunWith;
@@ -39,13 +41,17 @@ public abstract class AbstractProducerTestSupport {
     @Mock
     protected Exchange exchange;
 
+    @Mock
+    protected CamelContext camelContext;
+
     protected Message msg;
 
     protected Producer producer;
 
     @Before
     public void before() throws IOException {
-        msg = new DefaultMessage();
+        msg = new DefaultMessage(camelContext);
         when(exchange.getIn()).thenReturn(msg);
+        when(camelContext.getHeadersMapFactory()).thenReturn(new DefaultHeadersMapFactory());
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
index b0d72d9..55d7cc2 100644
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
+++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
@@ -230,7 +230,7 @@ public class RabbitMQMessageConverter {
                 // Use the existing message so we keep the headers
                 message = camelExchange.getIn();
             } else {
-                message = new DefaultMessage();
+                message = new DefaultMessage(camelExchange.getContext());
                 camelExchange.setIn(message);
             }
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQProducerTest.java b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQProducerTest.java
index 523e5c7..602e4b7 100644
--- a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQProducerTest.java
+++ b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQProducerTest.java
@@ -30,6 +30,7 @@ import com.rabbitmq.client.Connection;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.junit.Before;
 import org.junit.Test;
@@ -44,7 +45,7 @@ public class RabbitMQProducerTest {
 
     private RabbitMQEndpoint endpoint = Mockito.mock(RabbitMQEndpoint.class);
     private Exchange exchange = Mockito.mock(Exchange.class);
-    private Message message = new DefaultMessage();
+    private Message message = new DefaultMessage(new DefaultCamelContext());
     private Connection conn = Mockito.mock(Connection.class);
 
     @Before

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessorApprovalTest.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessorApprovalTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessorApprovalTest.java
index 30a7768..12e3073 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessorApprovalTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessorApprovalTest.java
@@ -254,7 +254,7 @@ public class AbstractRestProcessorApprovalTest {
         final CamelContext context = new DefaultCamelContext();
         final Exchange exchange = new DefaultExchange(context);
 
-        final Message message = new DefaultMessage();
+        final Message message = new DefaultMessage(context);
         if (headers != null) {
             message.setHeaders(headers);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-spring-ldap/src/test/java/org/apache/camel/component/springldap/SpringLdapProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ldap/src/test/java/org/apache/camel/component/springldap/SpringLdapProducerTest.java b/components/camel-spring-ldap/src/test/java/org/apache/camel/component/springldap/SpringLdapProducerTest.java
index 7bda60e..cc53c30 100644
--- a/components/camel-spring-ldap/src/test/java/org/apache/camel/component/springldap/SpringLdapProducerTest.java
+++ b/components/camel-spring-ldap/src/test/java/org/apache/camel/component/springldap/SpringLdapProducerTest.java
@@ -67,7 +67,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
     @Test(expected = NullPointerException.class)
     public void testWrongBodyType() throws Exception {
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
         in.setBody("");
 
         exchange.setIn(in);
@@ -77,7 +77,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
     @Test(expected = UnsupportedOperationException.class)
     public void testNoDN() throws Exception {
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
 
@@ -87,7 +87,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
     @Test
     public void testNoDNForFunctionDrivenOperation() throws Exception {
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.FUNCTION, Mockito.mock(BiFunction.class));
@@ -106,7 +106,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
     @Test(expected = UnsupportedOperationException.class)
     public void testEmptyDN() throws Exception {
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, "");
@@ -117,7 +117,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
     @Test(expected = UnsupportedOperationException.class)
     public void testNullDN() throws Exception {
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, null);
@@ -128,7 +128,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
     @Test(expected = UnsupportedOperationException.class)
     public void testNullOperation() throws Exception {
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, " ");
@@ -143,7 +143,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
         Integer scope = SearchControls.SUBTREE_SCOPE;
 
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, dn);
@@ -162,7 +162,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
         BasicAttributes attributes = new BasicAttributes();
 
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, dn);
@@ -179,7 +179,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
         String dn = "some dn";
 
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, dn);
@@ -197,7 +197,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
         String password = "password";
 
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, dn);
@@ -216,7 +216,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
         ModificationItem[] modificationItems = new ModificationItem[] {new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute("key", "value"))};
 
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, dn);
@@ -233,7 +233,7 @@ public class SpringLdapProducerTest extends CamelTestSupport {
         String dn = "cn=dn";
 
         Exchange exchange = new DefaultExchange(context);
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
 
         Map<String, Object> body = new HashMap<String, Object>();
         body.put(SpringLdapProducer.DN, dn);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarIterator.java
----------------------------------------------------------------------
diff --git a/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarIterator.java b/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarIterator.java
index 8b7e22a..8dbcaa3 100644
--- a/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarIterator.java
+++ b/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarIterator.java
@@ -118,7 +118,7 @@ public class TarIterator implements Iterator<Message>, Closeable {
 
             if (current != null) {
                 LOGGER.debug("Reading tarEntry {}", current.getName());
-                Message answer = new DefaultMessage();
+                Message answer = new DefaultMessage(inputMessage.getExchange().getContext());
                 answer.getHeaders().putAll(inputMessage.getHeaders());
                 answer.setHeader(TARFILE_ENTRY_NAME_HEADER, current.getName());
                 answer.setHeader(Exchange.FILE_NAME, current.getName());

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
index 3d2578a..3b2449f 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.io.ObjectOutputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.net.URI;
 import java.nio.ByteBuffer;
 import java.nio.channels.ReadableByteChannel;
 import java.util.Deque;
@@ -101,7 +100,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
 
     @Override
     public Message toCamelMessage(HttpServerExchange httpExchange, Exchange exchange) throws Exception {
-        Message result = new DefaultMessage();
+        Message result = new DefaultMessage(exchange.getContext());
 
         populateCamelHeaders(httpExchange, result.getHeaders(), exchange);
 
@@ -137,7 +136,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
 
     @Override
     public Message toCamelMessage(ClientExchange clientExchange, Exchange exchange) throws Exception {
-        Message result = new DefaultMessage();
+        Message result = new DefaultMessage(exchange.getContext());
 
         //retrieve response headers
         populateCamelHeaders(clientExchange.getResponse(), result.getHeaders(), exchange);

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
----------------------------------------------------------------------
diff --git a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
index 0e64d2c..8d448c6 100644
--- a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
+++ b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
@@ -102,7 +102,7 @@ public class ZipIterator implements Iterator<Message>, Closeable {
 
             if (current != null) {
                 LOGGER.debug("read zipEntry {}", current.getName());
-                Message answer = new DefaultMessage();
+                Message answer = new DefaultMessage(inputMessage.getExchange().getContext());
                 answer.getHeaders().putAll(inputMessage.getHeaders());
                 answer.setHeader("zipFileName", current.getName());
                 answer.setHeader(Exchange.FILE_NAME, current.getName());

http://git-wip-us.apache.org/repos/asf/camel/blob/1184a527/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/ZooKeeperUtilsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/ZooKeeperUtilsTest.java b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/ZooKeeperUtilsTest.java
index 3b4329c..7cc4236 100644
--- a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/ZooKeeperUtilsTest.java
+++ b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/ZooKeeperUtilsTest.java
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.component.zookeeper;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Message;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.zookeeper.CreateMode;
 import org.junit.Test;
@@ -28,6 +30,8 @@ import static org.junit.Assert.assertEquals;
 
 public class ZooKeeperUtilsTest {
 
+    private CamelContext camelContext = new DefaultCamelContext();
+
     @Test
     public void testCreateModeExtraction() {
         assertEquals(CreateMode.EPHEMERAL, getCreateModeFromString("EPHEMERAL", CreateMode.EPHEMERAL));
@@ -47,7 +51,7 @@ public class ZooKeeperUtilsTest {
     }
 
     private CreateMode testModeInMessage(String mode, CreateMode defaultMode) {
-        Message m = new DefaultMessage();
+        Message m = new DefaultMessage(camelContext);
         m.setHeader(ZooKeeperMessage.ZOOKEEPER_CREATE_MODE, mode);
         return getCreateMode(m, defaultMode);
     }


[05/13] camel git commit: Make camel-spring test faster and disable JMX for non-JMX tests

Posted by da...@apache.org.
Make camel-spring test faster and disable JMX for non-JMX tests


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

Branch: refs/heads/master
Commit: a87544acfcd7ec0d256f19804628877dc2f2ad50
Parents: 28efd0d
Author: Claus Ibsen <da...@apache.org>
Authored: Wed May 24 19:15:04 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:52 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/spring/DefaultJMXAgentTest.java    | 5 +++++
 .../apache/camel/spring/LifecycleStrategyInjectionTest.java  | 4 ++--
 .../camel/spring/MultipleLifecycleStrategyInjectionTest.java | 4 ++--
 .../org/apache/camel/spring/SpringEndpointPropertyTest.java  | 6 ++++--
 .../test/java/org/apache/camel/spring/SpringTestSupport.java | 8 ++++++++
 .../management/ManagedEndpointInjectRefEndpointTest.java     | 5 +++++
 .../camel/spring/management/ManagedRefEndpointTest.java      | 5 +++++
 .../spring/management/SpringJmxDumpCBRRoutesAsXmlTest.java   | 5 +++++
 .../SpringJmxDumpRoutesAsXmlIncludeHostNameTest.java         | 5 +++++
 .../spring/management/SpringJmxDumpRoutesAsXmlTest.java      | 5 +++++
 .../management/SpringJmxEndpointInjectBeanRefTest.java       | 5 +++++
 .../management/SpringJmxEndpointInjectBeanRefTwoTest.java    | 5 +++++
 .../spring/management/SpringJmxEndpointInjectBeanTest.java   | 5 +++++
 .../management/SpringJmxRecipientListRegisterAlwaysTest.java | 5 +++++
 .../camel/spring/management/SpringJmxRecipientListTest.java  | 5 +++++
 .../spring/management/SpringLoggingEventNotifierTest.java    | 5 +++++
 .../spring/management/SpringManagedCamelContextTest.java     | 5 +++++
 .../spring/management/SpringManagedCustomProcessorTest.java  | 5 +++++
 .../spring/management/SpringManagedErrorHandlerTest.java     | 5 +++++
 .../spring/management/SpringManagedNamePatternFixedTest.java | 5 +++++
 .../spring/management/SpringManagedNamePatternTest.java      | 5 +++++
 .../camel/spring/management/SpringManagedResourceTest.java   | 6 ++++++
 ...pringManagedRouteRemoveContextScopedErrorHandlerTest.java | 5 +++++
 ...agedRouteRemoveRouteAndContextScopedErrorHandlerTest.java | 5 +++++
 .../SpringManagedRouteRemoveRouteScopedErrorHandlerTest.java | 5 +++++
 .../camel/spring/management/SpringManagedSanitizeTest.java   | 5 +++++
 .../spring/management/SpringManagedSedaEndpointTest.java     | 5 +++++
 .../management/SpringManagedStatisticsLevelOffTest.java      | 5 +++++
 .../SpringManagedStatisticsLevelRoutesOnlyTest.java          | 5 +++++
 .../management/SpringManagedTransactedProcessorTest.java     | 5 +++++
 .../spring/management/SpringPublishEventNotifierTest.java    | 5 +++++
 .../org/apache/camel/spring/SpringEndpointPropertyTest.xml   | 2 +-
 32 files changed, 153 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/DefaultJMXAgentTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/DefaultJMXAgentTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/DefaultJMXAgentTest.java
index b90cf4f..9929976 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/DefaultJMXAgentTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/DefaultJMXAgentTest.java
@@ -37,6 +37,11 @@ public class DefaultJMXAgentTest extends SpringTestSupport {
     protected long sleepForConnection = 3000;
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected void setUp() throws Exception {
         releaseMBeanServers();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/LifecycleStrategyInjectionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/LifecycleStrategyInjectionTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/LifecycleStrategyInjectionTest.java
index 5f41504..be54a63 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/LifecycleStrategyInjectionTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/LifecycleStrategyInjectionTest.java
@@ -32,8 +32,8 @@ public class LifecycleStrategyInjectionTest extends SpringTestSupport {
     }
 
     public void testInjectedStrategy() throws Exception {
-        assertEquals(3, context.getLifecycleStrategies().size());
-        assertIsInstanceOf(DummyLifecycleStrategy.class, context.getLifecycleStrategies().get(1));
+        assertEquals(2, context.getLifecycleStrategies().size());
+        assertIsInstanceOf(DummyLifecycleStrategy.class, context.getLifecycleStrategies().get(0));
     }
     
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/MultipleLifecycleStrategyInjectionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/MultipleLifecycleStrategyInjectionTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/MultipleLifecycleStrategyInjectionTest.java
index eae218a..155c122 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/MultipleLifecycleStrategyInjectionTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/MultipleLifecycleStrategyInjectionTest.java
@@ -32,9 +32,9 @@ public class MultipleLifecycleStrategyInjectionTest extends SpringTestSupport {
     }
 
     public void testInjectedStrategy() throws Exception {
-        assertEquals(4, context.getLifecycleStrategies().size());
+        assertEquals(3, context.getLifecycleStrategies().size());
+        assertIsInstanceOf(DummyLifecycleStrategy.class, context.getLifecycleStrategies().get(0));
         assertIsInstanceOf(DummyLifecycleStrategy.class, context.getLifecycleStrategies().get(1));
-        assertIsInstanceOf(DummyLifecycleStrategy.class, context.getLifecycleStrategies().get(2));
     }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/SpringEndpointPropertyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringEndpointPropertyTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringEndpointPropertyTest.java
index f2ae331..600c173 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringEndpointPropertyTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringEndpointPropertyTest.java
@@ -27,6 +27,8 @@ public class SpringEndpointPropertyTest extends SpringTestSupport {
 
     @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
+        System.clearProperty("CamelSedaPollTimeout");
+
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/SpringEndpointPropertyTest.xml");
     }
 
@@ -39,9 +41,9 @@ public class SpringEndpointPropertyTest extends SpringTestSupport {
         SedaEndpoint foo = applicationContext.getBean("foo", SedaEndpoint.class);
         assertNotNull(foo);
         assertEquals(100, foo.getSize());
-        assertEquals(5000, foo.getPollTimeout());
+        assertEquals(250, foo.getPollTimeout());
         assertEquals(true, foo.isBlockWhenFull());
-        assertEquals("seda://foo?blockWhenFull=true&pollTimeout=5000&size=100", foo.getEndpointUri());
+        assertEquals("seda://foo?blockWhenFull=true&pollTimeout=250&size=100", foo.getEndpointUri());
 
         SedaEndpoint bar = applicationContext.getBean("bar", SedaEndpoint.class);
         assertNotNull(bar);

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
index 1729b13..243a53c 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
@@ -50,6 +50,14 @@ public abstract class SpringTestSupport extends ContextTestSupport {
             System.setProperty(AbstractCamelContextFactoryBean.LAZY_LOAD_TYPE_CONVERTERS, "false");
         }
 
+        // we want SpringTestSupport to startup faster and not use JMX by default and should stop seda quicker
+        System.setProperty("CamelSedaPollTimeout", "10");
+        if(!this.useJmx()) {
+            this.disableJMX();
+        } else {
+            this.enableJMX();
+        }
+
         applicationContext = createApplicationContext();
         assertNotNull("Should have created a valid spring context", applicationContext);
         super.setUp();

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedEndpointInjectRefEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedEndpointInjectRefEndpointTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedEndpointInjectRefEndpointTest.java
index 1a35859..443ed3f 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedEndpointInjectRefEndpointTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedEndpointInjectRefEndpointTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class ManagedEndpointInjectRefEndpointTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/ManagedEndpointInjectRefEndpointTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedRefEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedRefEndpointTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedRefEndpointTest.java
index 75d93da..2abbfac 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedRefEndpointTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/ManagedRefEndpointTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class ManagedRefEndpointTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/ManagedRefEndpointTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpCBRRoutesAsXmlTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpCBRRoutesAsXmlTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpCBRRoutesAsXmlTest.java
index 2b4940e..de54ea0 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpCBRRoutesAsXmlTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpCBRRoutesAsXmlTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxDumpCBRRoutesAsXmlTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxDumpCBRRouteAsXmlTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlIncludeHostNameTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlIncludeHostNameTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlIncludeHostNameTest.java
index adca08d..fb7937e 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlIncludeHostNameTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlIncludeHostNameTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxDumpRoutesAsXmlIncludeHostNameTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxDumpRouteAsXmlIncludeHostNameTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlTest.java
index ab384e4..662aa6a 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxDumpRoutesAsXmlTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxDumpRoutesAsXmlTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxDumpRouteAsXmlTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTest.java
index 42d7e50..d7e54f4 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxEndpointInjectBeanRefTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTwoTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTwoTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTwoTest.java
index 2b427b7..64dde67 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTwoTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTwoTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxEndpointInjectBeanRefTwoTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxEndpointInjectBeanRefTwoTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanTest.java
index 679b385..ea7375b 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxEndpointInjectBeanTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxEndpointInjectBeanTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxEndpointInjectBeanTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListRegisterAlwaysTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListRegisterAlwaysTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListRegisterAlwaysTest.java
index d44baa2..fb4f13f 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListRegisterAlwaysTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListRegisterAlwaysTest.java
@@ -30,6 +30,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxRecipientListRegisterAlwaysTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxRecipientListTestRegisterAlways.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListTest.java
index 84ec19a..594aa28 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringJmxRecipientListTest.java
@@ -30,6 +30,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringJmxRecipientListTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringJmxRecipientListTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringLoggingEventNotifierTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringLoggingEventNotifierTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringLoggingEventNotifierTest.java
index aadd48c..a851e37 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringLoggingEventNotifierTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringLoggingEventNotifierTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringLoggingEventNotifierTest extends LoggingEventNotifierTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringLoggingEventNotifierTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCamelContextTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCamelContextTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCamelContextTest.java
index 674f88e..143b9ba 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCamelContextTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCamelContextTest.java
@@ -31,6 +31,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
 
 public class SpringManagedCamelContextTest extends ManagedCamelContextTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedCamelContextTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCustomProcessorTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCustomProcessorTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCustomProcessorTest.java
index b2c50a9..b48fbb0 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCustomProcessorTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedCustomProcessorTest.java
@@ -34,6 +34,11 @@ import org.springframework.jmx.export.annotation.ManagedResource;
 public class SpringManagedCustomProcessorTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringManagedCustomProcessorTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java
index a21c8e9..ee49974 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java
@@ -25,6 +25,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedErrorHandlerTest extends ManagedErrorHandlerTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedErrorHandlerTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternFixedTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternFixedTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternFixedTest.java
index 85c3869..05f6fc0 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternFixedTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternFixedTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedNamePatternFixedTest extends ManagedNamePatternFixedTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedNamePatternFixedTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternTest.java
index a08226a..cc8bcca 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedNamePatternTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedNamePatternTest extends ManagedNamePatternTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedNamePatternTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedResourceTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedResourceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedResourceTest.java
index 57b7f14..a21ecb0 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedResourceTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedResourceTest.java
@@ -22,6 +22,12 @@ import org.apache.camel.management.ManagedResourceTest;
 import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
 
 public class SpringManagedResourceTest extends ManagedResourceTest {
+
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedResourceTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveContextScopedErrorHandlerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveContextScopedErrorHandlerTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveContextScopedErrorHandlerTest.java
index f99293b..72ab638 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveContextScopedErrorHandlerTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveContextScopedErrorHandlerTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedRouteRemoveContextScopedErrorHandlerTest extends ManagedRouteRemoveContextScopedErrorHandlerTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedRouteRemoveContextScopedErrorHandlerTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
index e66bc25..185a507 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedRouteRemoveRouteAndContextScopedErrorHandlerTest extends ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteScopedErrorHandlerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteScopedErrorHandlerTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteScopedErrorHandlerTest.java
index 16a2ab8..54802dd 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteScopedErrorHandlerTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedRouteRemoveRouteScopedErrorHandlerTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedRouteRemoveRouteScopedErrorHandlerTest extends ManagedRouteRemoveRouteScopedErrorHandlerTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedRouteRemoveRouteScopedErrorHandlerTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSanitizeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSanitizeTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSanitizeTest.java
index e3b588c..9c8995d 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSanitizeTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSanitizeTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedSanitizeTest extends ManagedSanitizeTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedSanitizeTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSedaEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSedaEndpointTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSedaEndpointTest.java
index 8849080..faa7623 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSedaEndpointTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedSedaEndpointTest.java
@@ -29,6 +29,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringManagedSedaEndpointTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringManagedSedaEndpointTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
index 59f049f..31b6829 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
@@ -25,6 +25,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedStatisticsLevelOffTest extends ManagedStatisticsLevelOffTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java
index 619613a..d4ba03a 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java
@@ -25,6 +25,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringManagedStatisticsLevelRoutesOnlyTest extends ManagedStatisticsLevelRoutesOnlyTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedTransactedProcessorTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedTransactedProcessorTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedTransactedProcessorTest.java
index c32383d..4f29eb1 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedTransactedProcessorTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedTransactedProcessorTest.java
@@ -30,6 +30,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class SpringManagedTransactedProcessorTest extends SpringTestSupport {
 
     @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/SpringManagedTransactedProcessorTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringPublishEventNotifierTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringPublishEventNotifierTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringPublishEventNotifierTest.java
index 9ba0cd3..4969921 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringPublishEventNotifierTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringPublishEventNotifierTest.java
@@ -26,6 +26,11 @@ import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCam
  */
 public class SpringPublishEventNotifierTest extends PublishEventNotifierTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringPublishEventNotifierTest.xml");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a87544ac/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringEndpointPropertyTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringEndpointPropertyTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringEndpointPropertyTest.xml
index d3d6ce5..d6a64b0 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringEndpointPropertyTest.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringEndpointPropertyTest.xml
@@ -34,7 +34,7 @@
     <!-- inside camelContext -->
     <endpoint id="foo" uri="seda:foo">
       <property key="size" value="100"/>
-      <property key="pollTimeout" value="5000"/>
+      <property key="pollTimeout" value="250"/>
       <property key="blockWhenFull" value="true"/>
     </endpoint>
 


[02/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 28efd0d57e7d9e1b9cbb5d830c9872d537ce905b
Parents: 5b22da6
Author: Claus Ibsen <da...@apache.org>
Authored: Wed May 24 17:07:06 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:52 2017 +0200

----------------------------------------------------------------------
 .../component/file/GenericFileMessage.java      | 20 ++++-
 .../org/apache/camel/impl/DefaultExchange.java  |  1 +
 .../org/apache/camel/impl/DefaultMessage.java   | 28 +++++--
 .../org/apache/camel/impl/MessageSupport.java   | 33 +++++++-
 .../component/file/GenericFileMessageTest.java  | 11 ++-
 .../camel/component/rest/RestProducerTest.java  | 12 ++-
 .../impl/CustomHeadersMapFactoryRouteTest.java  | 83 ++++++++++++++++++++
 .../camel/impl/DefaultMessageHeaderTest.java    | 33 ++++----
 .../apache/camel/impl/MessageSupportTest.java   |  4 +-
 .../BeanProcessorSpecializedMessageTest.java    |  9 ++-
 .../camel/processor/SetBodyProcessorTest.java   |  9 ++-
 .../camel/processor/SplitterPojoTest.java       |  5 +-
 .../org/apache/camel/util/GZIPHelperTest.java   |  3 +-
 .../org/apache/camel/util/IOHelperTest.java     |  3 +-
 .../apache/camel/util/MessageHelperTest.java    |  7 +-
 .../ApiMethodPropertiesHelperTest.java          |  8 +-
 .../xml/AbstractCamelContextFactoryBean.java    |  6 ++
 17 files changed, 229 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
index 703c832..71c6d6b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.file;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultMessage;
 
@@ -25,13 +26,30 @@ import org.apache.camel.impl.DefaultMessage;
 public class GenericFileMessage<T> extends DefaultMessage {
     private GenericFile<T> file;
 
+    /**
+     * @deprecated use {@link #GenericFileMessage(CamelContext)}
+     */
+    @Deprecated
     public GenericFileMessage() {
     }
 
+    public GenericFileMessage(CamelContext camelContext) {
+        super(camelContext);
+    }
+
+    /**
+     * @deprecated use {@link #GenericFileMessage(CamelContext, GenericFile)}
+     */
+    @Deprecated
     public GenericFileMessage(GenericFile<T> file) {
         this.file = file;
     }
 
+    public GenericFileMessage(CamelContext camelContext, GenericFile<T> file) {
+        super(camelContext);
+        this.file = file;
+    }
+
     @Override
     protected Object createBody() {
         return file != null ? file.getBody() : super.createBody();
@@ -47,7 +65,7 @@ public class GenericFileMessage<T> extends DefaultMessage {
 
     @Override
     public GenericFileMessage<T> newInstance() {
-        return new GenericFileMessage<T>();
+        return new GenericFileMessage<T>(getCamelContext());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
index 0ee5e8f..b8e7a9d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
@@ -503,6 +503,7 @@ public final class DefaultExchange implements Exchange {
         if (message instanceof MessageSupport) {
             MessageSupport messageSupport = (MessageSupport)message;
             messageSupport.setExchange(this);
+            messageSupport.setCamelContext(getContext());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
index d6f44f4..7adb123 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
@@ -28,7 +28,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.util.AttachmentMap;
-import org.apache.camel.util.CaseInsensitiveMap;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ObjectHelper;
 
@@ -50,6 +49,17 @@ public class DefaultMessage extends MessageSupport {
     private Map<String, DataHandler> attachments;
     private Map<String, Attachment> attachmentObjects;
 
+    /**
+     * @deprecated use {@link #DefaultMessage(CamelContext)}
+     */
+    @Deprecated
+    public DefaultMessage() {
+    }
+
+    public DefaultMessage(CamelContext camelContext) {
+        setCamelContext(camelContext);
+    }
+
     public boolean isFault() {
         return fault;
     }
@@ -208,11 +218,13 @@ public class DefaultMessage extends MessageSupport {
     }
 
     public void setHeaders(Map<String, Object> headers) {
-        if (getExchange().getContext().getHeadersMapFactory().isInstanceOf(headers)) {
+        ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
+
+        if (getCamelContext().getHeadersMapFactory().isInstanceOf(headers)) {
             this.headers = headers;
         } else {
             // create a new map
-            this.headers = getExchange().getContext().getHeadersMapFactory().fromMap(headers);
+            this.headers = getCamelContext().getHeadersMapFactory().fromMap(headers);
         }
     }
 
@@ -225,7 +237,11 @@ public class DefaultMessage extends MessageSupport {
     }
 
     public DefaultMessage newInstance() {
-        return new DefaultMessage();
+        ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
+
+        DefaultMessage answer = new DefaultMessage();
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     /**
@@ -237,7 +253,9 @@ public class DefaultMessage extends MessageSupport {
      *         the underlying inbound transport
      */
     protected Map<String, Object> createHeaders() {
-        Map<String, Object> map = getExchange().getContext().getHeadersMapFactory().newMap();
+        ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
+
+        Map<String, Object> map = getCamelContext().getHeadersMapFactory().newMap();
         populateInitialHeaders(map);
         return map;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java b/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
index d02fbae..6b7c774 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.impl;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.Message;
@@ -33,7 +35,8 @@ import org.apache.camel.spi.DataTypeAware;
  *
  * @version 
  */
-public abstract class MessageSupport implements Message, DataTypeAware {
+public abstract class MessageSupport implements Message, CamelContextAware, DataTypeAware {
+    private CamelContext camelContext;
     private Exchange exchange;
     private Object body;
     private String messageId;
@@ -150,6 +153,10 @@ public abstract class MessageSupport implements Message, DataTypeAware {
 
     public Message copy() {
         Message answer = newInstance();
+        // must copy over CamelContext
+        if (answer instanceof CamelContextAware) {
+            ((CamelContextAware) answer).setCamelContext(getCamelContext());
+        }
         answer.copyFrom(this);
         return answer;
     }
@@ -159,10 +166,16 @@ public abstract class MessageSupport implements Message, DataTypeAware {
             // the same instance so do not need to copy
             return;
         }
-        copyFromWithNewBody(that, that.getBody());
+
+        // must copy over CamelContext
+        if (that instanceof CamelContextAware) {
+            setCamelContext(((CamelContextAware) that).getCamelContext());
+        }
         if (that instanceof DataTypeAware) {
             setDataType(((DataTypeAware)that).getDataType());
         }
+
+        copyFromWithNewBody(that, that.getBody());
     }
 
     public void copyFromWithNewBody(Message that, Object newBody) {
@@ -171,6 +184,12 @@ public abstract class MessageSupport implements Message, DataTypeAware {
             return;
         }
 
+        // must copy over CamelContext
+        if (that instanceof CamelContextAware) {
+            setCamelContext(((CamelContextAware) that).getCamelContext());
+        }
+        // should likely not set DataType as the new body may be a different type than the original body
+
         setMessageId(that.getMessageId());
         setBody(newBody);
         setFault(that.isFault());
@@ -202,7 +221,15 @@ public abstract class MessageSupport implements Message, DataTypeAware {
     public void setExchange(Exchange exchange) {
         this.exchange = exchange;
     }
-    
+
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
     public void copyAttachments(Message that) {
         // the attachments may be the same instance if the end user has made some mistake
         // and set the OUT message with the same attachment instance of the IN message etc

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/component/file/GenericFileMessageTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/file/GenericFileMessageTest.java b/camel-core/src/test/java/org/apache/camel/component/file/GenericFileMessageTest.java
index 6108029..37dcc79 100644
--- a/camel-core/src/test/java/org/apache/camel/component/file/GenericFileMessageTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/file/GenericFileMessageTest.java
@@ -18,22 +18,25 @@ package org.apache.camel.component.file;
 
 import java.io.File;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.util.FileUtil;
 
 public class GenericFileMessageTest extends ContextTestSupport {
 
+    private CamelContext camelContext = new DefaultCamelContext();
+
     public void testGenericMessageToStringConversion() throws Exception {
-        GenericFileMessage<File> message = new GenericFileMessage<File>(); 
+        GenericFileMessage<File> message = new GenericFileMessage<File>(camelContext);
         assertStringContains(message.toString(), "org.apache.camel.component.file.GenericFileMessage@");
         
         GenericFile<File> file = new GenericFile<File>(true);
         file.setFileName("target/test.txt");
         file.setFile(new File("target/test.txt"));
-        message = new GenericFileMessage<File>(file); 
+        message = new GenericFileMessage<File>(camelContext, file);
         assertEquals(FileUtil.isWindows() ? "target\\test.txt" : "target/test.txt", message.toString());
-        
     }
     
     public void testGenericFileContentType() throws Exception {
@@ -41,7 +44,7 @@ public class GenericFileMessageTest extends ContextTestSupport {
         file.setEndpointPath("target");
         file.setFileName("target");
         file.setFile(new File("target/camel-core-test.log"));
-        GenericFileMessage<File> message = new GenericFileMessage<File>(file);
+        GenericFileMessage<File> message = new GenericFileMessage<File>(camelContext, file);
         file.populateHeaders(message);
         assertEquals("Get a wrong file content type", "txt", message.getHeader(Exchange.FILE_CONTENT_TYPE));
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerTest.java b/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerTest.java
index 2ca0981..0145e2b 100644
--- a/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerTest.java
@@ -19,6 +19,8 @@ package org.apache.camel.component.rest;
 import java.io.UnsupportedEncodingException;
 import java.net.URISyntaxException;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.junit.Test;
 
@@ -27,6 +29,8 @@ import static org.junit.Assert.assertNull;
 
 public class RestProducerTest {
 
+    private CamelContext camelContext = new DefaultCamelContext();
+
     @Test
     public void shouldCreateDefinedQueryParameters() throws UnsupportedEncodingException, URISyntaxException {
         assertEquals("param=value", RestProducer.createQueryParameters("param=value", null));
@@ -35,7 +39,7 @@ public class RestProducerTest {
     @Test
     public void shouldCreateOptionalPlaceholderQueryParametersForPresentValues()
         throws UnsupportedEncodingException, URISyntaxException {
-        final DefaultMessage message = new DefaultMessage();
+        final DefaultMessage message = new DefaultMessage(camelContext);
         message.setHeader("param", "header");
 
         assertEquals("param=header", RestProducer.createQueryParameters("param={param?}", message));
@@ -43,7 +47,7 @@ public class RestProducerTest {
 
     @Test
     public void shouldCreatePlaceholderQueryParameters() throws UnsupportedEncodingException, URISyntaxException {
-        final DefaultMessage message = new DefaultMessage();
+        final DefaultMessage message = new DefaultMessage(camelContext);
         message.setHeader("param", "header");
 
         assertEquals("param=header", RestProducer.createQueryParameters("param={param}", message));
@@ -57,14 +61,14 @@ public class RestProducerTest {
     @Test
     public void shouldNotCreateOptionalPlaceholderQueryParametersForMissingValues()
         throws UnsupportedEncodingException, URISyntaxException {
-        final DefaultMessage message = new DefaultMessage();
+        final DefaultMessage message = new DefaultMessage(camelContext);
 
         assertEquals("", RestProducer.createQueryParameters("param={param?}", message));
     }
 
     @Test
     public void shouldSupportAllCombinations() throws UnsupportedEncodingException, URISyntaxException {
-        final DefaultMessage message = new DefaultMessage();
+        final DefaultMessage message = new DefaultMessage(camelContext);
         message.setHeader("required", "header_required");
         message.setHeader("optional_present", "header_optional_present");
 

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java b/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java
new file mode 100644
index 0000000..9c2faec
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/impl/CustomHeadersMapFactoryRouteTest.java
@@ -0,0 +1,83 @@
+/**
+ * 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.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.HeadersMapFactory;
+
+public class CustomHeadersMapFactoryRouteTest extends ContextTestSupport {
+
+    private HeadersMapFactory custom = new CustomHeadersMapFactory();
+
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext context = super.createCamelContext();
+        context.setHeadersMapFactory(custom);
+        return context;
+    }
+
+    public void testCustomHeaders() throws Exception {
+        getMockEndpoint("mock:result").expectedHeaderReceived("foo", 123);
+        getMockEndpoint("mock:result").expectedHeaderReceived("FOO", 456);
+        getMockEndpoint("mock:result").expectedHeaderReceived("Bar", "yes");
+
+        Map<String, Object> headers = new HashMap<>();
+        headers.put("foo", 123);
+        headers.put("FOO", 456);
+        headers.put("Bar", "yes");
+
+        template.sendBodyAndHeaders("direct:start", "Hello World", headers);
+
+        assertMockEndpointsSatisfied();
+
+        assertSame(custom, context.getHeadersMapFactory());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start")
+                    .to("mock:result");
+            }
+        };
+    }
+
+    private static class CustomHeadersMapFactory implements HeadersMapFactory {
+
+        @Override
+        public Map<String, Object> newMap() {
+            return new HashMap<>();
+        }
+
+        @Override
+        public Map<String, Object> fromMap(Map<String, Object> map) {
+            return new HashMap<>(map);
+        }
+
+        @Override
+        public boolean isInstanceOf(Map<String, Object> map) {
+            return map instanceof HashMap;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageHeaderTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageHeaderTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageHeaderTest.java
index ff66227..0cc5fb3 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageHeaderTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageHeaderTest.java
@@ -17,15 +17,18 @@
 package org.apache.camel.impl;
 
 import junit.framework.TestCase;
+import org.apache.camel.CamelContext;
 import org.apache.camel.Message;
 
 /**
  * @version 
  */
 public class DefaultMessageHeaderTest extends TestCase {
+    
+    private CamelContext camelContext = new DefaultCamelContext();
 
     public void testLookupCaseAgnostic() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("foo", "cheese");
@@ -36,7 +39,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testLookupCaseAgnosticAddHeader() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("foo", "cheese");
@@ -55,7 +58,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testLookupCaseAgnosticAddHeader2() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("foo", "cheese");
@@ -74,7 +77,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testLookupCaseAgnosticAddHeaderRemoveHeader() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("foo", "cheese");
@@ -97,7 +100,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testSetWithDifferentCase() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("foo", "cheese");
@@ -109,7 +112,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveWithDifferentCase() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("foo", "cheese");
@@ -129,7 +132,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeaderWithNullValue() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", null);
@@ -139,7 +142,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeadersWithWildcard() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", "bla");
@@ -156,7 +159,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeadersAllWithWildcard() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", "bla");
@@ -173,7 +176,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeadersWithExclude() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", "bla");
@@ -189,7 +192,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeadersAllWithExclude() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", "bla");
@@ -209,7 +212,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeadersWithWildcardInExclude() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", "bla");
@@ -225,7 +228,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeadersWithNulls() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", "bla");
@@ -244,7 +247,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testRemoveHeadersWithNonExcludeHeaders() {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(camelContext);
         assertNull(msg.getHeader("foo"));
 
         msg.setHeader("tick", "bla");
@@ -257,7 +260,7 @@ public class DefaultMessageHeaderTest extends TestCase {
     }
 
     public void testWithDefaults() {
-        DefaultMessage msg = new DefaultMessage();
+        DefaultMessage msg = new DefaultMessage(camelContext);
         // must have exchange so to leverage the type converters
         msg.setExchange(new DefaultExchange(new DefaultCamelContext()));
 

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/impl/MessageSupportTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/MessageSupportTest.java b/camel-core/src/test/java/org/apache/camel/impl/MessageSupportTest.java
index 910f95d..be97658 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/MessageSupportTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/MessageSupportTest.java
@@ -61,7 +61,7 @@ public class MessageSupportTest extends ContextTestSupport {
     }
     
     public void testGetMessageIdWithoutAnExchange() {
-        Message in = new DefaultMessage();
+        Message in = new DefaultMessage(context);
         
         assertNotNull(in.getMessageId());
     }
@@ -73,7 +73,7 @@ public class MessageSupportTest extends ContextTestSupport {
         Map<String, Object> headers = in.getHeaders();
         headers.put("foo", 123);
 
-        Message out = new DefaultMessage();
+        Message out = new DefaultMessage(context);
         out.setBody("Bye World");
         out.setHeaders(headers);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/processor/BeanProcessorSpecializedMessageTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/BeanProcessorSpecializedMessageTest.java b/camel-core/src/test/java/org/apache/camel/processor/BeanProcessorSpecializedMessageTest.java
index 6e86328..93a9f3c 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/BeanProcessorSpecializedMessageTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/BeanProcessorSpecializedMessageTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.processor;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
@@ -52,7 +53,7 @@ public class BeanProcessorSpecializedMessageTest extends ContextTestSupport {
 
         template.send("direct:start", new Processor() {
             public void process(Exchange exchange) throws Exception {
-                MyMessage my = new MyMessage();
+                MyMessage my = new MyMessage(exchange.getContext());
                 my.setBody("Hello World");
                 my.setHeader("foo", 123);
                 exchange.setIn(my);
@@ -77,9 +78,13 @@ public class BeanProcessorSpecializedMessageTest extends ContextTestSupport {
 
     public static class MyMessage extends DefaultMessage {
 
+        public MyMessage(CamelContext camelContext) {
+            super(camelContext);
+        }
+
         @Override
         public MyMessage newInstance() {
-            return new MyMessage();
+            return new MyMessage(getCamelContext());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java b/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java
index 0e311e5..93a7f6a 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.processor;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
@@ -52,7 +53,7 @@ public class SetBodyProcessorTest extends ContextTestSupport {
 
         template.send("direct:start", new Processor() {
             public void process(Exchange exchange) throws Exception {
-                MyMessage my = new MyMessage();
+                MyMessage my = new MyMessage(exchange.getContext());
                 my.setBody("World");
                 my.setHeader("foo", 123);
                 exchange.setIn(my);
@@ -89,9 +90,13 @@ public class SetBodyProcessorTest extends ContextTestSupport {
 
     private static class MyMessage extends DefaultMessage {
 
+        public MyMessage(CamelContext camelContext) {
+            super(camelContext);
+        }
+
         @Override
         public MyMessage newInstance() {
-            return new MyMessage();
+            return new MyMessage(getCamelContext());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java b/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java
index 70197df..2733c0e 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.Body;
+import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Header;
@@ -115,7 +116,7 @@ public class SplitterPojoTest extends ContextTestSupport {
          * @param body the payload of the incoming message
          * @return a list containing each part splitted
          */
-        public List<Message> splitMessage(@Header(value = "user") String header, @Body String body) {
+        public List<Message> splitMessage(@Header(value = "user") String header, @Body String body, CamelContext camelContext) {
             // we can leverage the Parameter Binding Annotations  
             // http://camel.apache.org/parameter-binding-annotations.html
             // to access the message header and body at same time, 
@@ -125,7 +126,7 @@ public class SplitterPojoTest extends ContextTestSupport {
             List<Message> answer = new ArrayList<Message>();
             String[] parts = header.split(",");
             for (String part : parts) {
-                DefaultMessage message = new DefaultMessage();
+                DefaultMessage message = new DefaultMessage(camelContext);
                 message.setHeader("user", part);
                 message.setBody(body);
                 answer.add(message);

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/util/GZIPHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/GZIPHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/GZIPHelperTest.java
index f4c90c4..f2894ed 100644
--- a/camel-core/src/test/java/org/apache/camel/util/GZIPHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/GZIPHelperTest.java
@@ -22,6 +22,7 @@ import java.io.InputStream;
 
 import org.apache.camel.Message;
 import org.apache.camel.converter.IOConverter;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.junit.Test;
 
@@ -83,7 +84,7 @@ public class GZIPHelperTest {
     }
 
     private Message createMessageWithContentEncodingHeader(String contentEncoding) {
-        Message msg = new DefaultMessage();
+        Message msg = new DefaultMessage(new DefaultCamelContext());
         msg.setHeader("Content-Encoding", contentEncoding);
 
         return msg;

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/util/IOHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/IOHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/IOHelperTest.java
index da2aecf..037c323 100644
--- a/camel-core/src/test/java/org/apache/camel/util/IOHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/IOHelperTest.java
@@ -28,6 +28,7 @@ import java.io.PrintWriter;
 import junit.framework.TestCase;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 
 /**
@@ -104,7 +105,7 @@ public class IOHelperTest extends TestCase {
     }
 
     public void testCharsetName() throws Exception {
-        Exchange exchange = new DefaultExchange((CamelContext) null);
+        Exchange exchange = new DefaultExchange(new DefaultCamelContext());
 
         assertNull(IOHelper.getCharsetName(exchange, false));
 

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
index f85ea83..c0c467c 100644
--- a/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
@@ -39,10 +39,11 @@ import org.apache.camel.impl.DefaultMessage;
 public class MessageHelperTest extends TestCase {
     
     private Message message;
+    private CamelContext camelContext = new DefaultCamelContext();
     
     @Override
     protected void setUp() throws Exception {
-        message = new DefaultMessage();
+        message = new DefaultMessage(camelContext);
     }
 
     /*
@@ -94,7 +95,7 @@ public class MessageHelperTest extends TestCase {
 
     public void testCopyHeaders() throws Exception {
         Message source = message;
-        Message target = new DefaultMessage();
+        Message target = new DefaultMessage(camelContext);
 
         source.setHeader("foo", 123);
         source.setHeader("bar", 456);
@@ -108,7 +109,7 @@ public class MessageHelperTest extends TestCase {
 
     public void testCopyHeadersOverride() throws Exception {
         Message source = message;
-        Message target = new DefaultMessage();
+        Message target = new DefaultMessage(camelContext);
 
         source.setHeader("foo", 123);
         source.setHeader("bar", 456);

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodPropertiesHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodPropertiesHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodPropertiesHelperTest.java
index f13f8a5..65cc5ae 100644
--- a/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodPropertiesHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodPropertiesHelperTest.java
@@ -18,7 +18,9 @@ package org.apache.camel.util.component;
 
 import java.util.HashMap;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.junit.Test;
 import static org.junit.Assert.assertEquals;
@@ -45,8 +47,12 @@ public class ApiMethodPropertiesHelperTest {
 
     @Test
     public void testGetExchangeProperties() throws Exception {
+        final CamelContext camelContext = new DefaultCamelContext();
+        MockEndpoint mock = new MockEndpoint();
+        mock.setCamelContext(camelContext);
+
         final HashMap<String, Object> properties = new HashMap<String, Object>();
-        final DefaultExchange exchange = new DefaultExchange(new MockEndpoint());
+        final DefaultExchange exchange = new DefaultExchange(mock);
         exchange.getIn().setHeader(PROPERTY_1, VALUE_1);
         exchange.getIn().setHeader(PROPERTY_2, VALUE_2);
         exchange.getIn().setHeader(PROPERTY_3, VALUE_3);

http://git-wip-us.apache.org/repos/asf/camel/blob/28efd0d5/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
----------------------------------------------------------------------
diff --git a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index f7a8b74..32f53f8 100644
--- a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -88,6 +88,7 @@ import org.apache.camel.spi.EventFactory;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.FactoryFinderResolver;
+import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
@@ -256,6 +257,11 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             LOG.info("Using custom RuntimeEndpointRegistry: {}", runtimeEndpointRegistry);
             getContext().setRuntimeEndpointRegistry(runtimeEndpointRegistry);
         }
+        HeadersMapFactory headersMapFactory = getBeanForType(HeadersMapFactory.class);
+        if (headersMapFactory != null) {
+            LOG.info("Using custom HeadersMapFactory: {}", headersMapFactory);
+            getContext().setHeadersMapFactory(headersMapFactory);
+        }
         // custom type converters defined as <bean>s
         Map<String, TypeConverters> typeConverters = getContext().getRegistry().findByTypeWithName(TypeConverters.class);
         if (typeConverters != null && !typeConverters.isEmpty()) {


[08/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 36c3512d80244d6c92d1f842e9ab973934fcc348
Parents: 6c73ae8
Author: Claus Ibsen <da...@apache.org>
Authored: Wed May 24 21:09:08 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:53 2017 +0200

----------------------------------------------------------------------
 .../apache/camel/http/common/HttpMessage.java   |  3 ++
 .../apache/camel/component/irc/IrcEndpoint.java | 45 ++++++++++++++++----
 .../apache/camel/component/irc/IrcMessage.java  |  4 +-
 .../apache/camel/component/jms/JmsMessage.java  |  4 +-
 .../camel/component/mail/MailMessage.java       |  4 +-
 .../netty/http/DefaultNettyHttpBinding.java     |  4 +-
 .../component/netty/http/NettyHttpMessage.java  |  6 ++-
 .../netty4/http/DefaultNettyHttpBinding.java    |  4 +-
 .../component/netty4/http/NettyHttpMessage.java |  6 ++-
 .../camel/component/paho/PahoEndpoint.java      |  6 +--
 .../camel/component/paho/PahoMessage.java       | 10 ++---
 .../camel/component/quartz/QuartzMessage.java   |  6 +++
 .../camel/component/quartz2/QuartzMessage.java  |  6 +++
 .../camel/component/sjms/SjmsMessage.java       |  4 +-
 .../camel/component/smpp/SmppMessage.java       |  4 +-
 .../camel/component/snmp/SnmpMessage.java       |  4 +-
 .../sparkrest/DefaultSparkBinding.java          |  2 +-
 .../camel/component/sparkrest/SparkMessage.java |  6 ++-
 .../integration/SpringIntegrationMessage.java   | 10 ++++-
 .../SpringIntegrationMessageTest.java           |  5 +++
 .../spring/ws/SpringWebserviceConsumer.java     |  2 +-
 .../spring/ws/SpringWebserviceMessage.java      |  9 +++-
 .../camel/component/xmpp/XmppMessage.java       |  4 +-
 23 files changed, 119 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
index 7dd296d..a96d580 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
@@ -35,6 +35,8 @@ public class HttpMessage extends DefaultMessage {
 
     public HttpMessage(Exchange exchange, HttpServletRequest request, HttpServletResponse response) {
         setExchange(exchange);
+        setCamelContext(exchange.getContext());
+
         this.request = request;
         this.response = response;
         // Put the request and response into the message header
@@ -56,6 +58,7 @@ public class HttpMessage extends DefaultMessage {
         this.request = request;
         this.response = response;
         setExchange(getExchange());
+        setCamelContext(exchange.getContext());
     }
 
     public HttpServletRequest getRequest() {

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
index 9572a63..79334cc 100644
--- a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
+++ b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
@@ -68,55 +68,82 @@ public class IrcEndpoint extends DefaultEndpoint {
 
     public Exchange createOnPrivmsgExchange(String target, IRCUser user, String msg) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("PRIVMSG", target, user, msg));
+        IrcMessage im = new IrcMessage("PRIVMSG", target, user, msg);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnNickExchange(IRCUser user, String newNick) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("NICK", user, newNick));
+        IrcMessage im = new IrcMessage("NICK", user, newNick);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnQuitExchange(IRCUser user, String msg) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("QUIT", user, msg));
+        IrcMessage im = new IrcMessage("QUIT", user, msg);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnJoinExchange(String channel, IRCUser user) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("JOIN", channel, user));
+        IrcMessage im = new IrcMessage("JOIN", channel, user);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnKickExchange(String channel, IRCUser user, String whoWasKickedNick, String msg) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
+        IrcMessage im = new IrcMessage("KICK", channel, user, whoWasKickedNick, msg);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnModeExchange(String channel, IRCUser user, IRCModeParser modeParser) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("MODE", channel, user, modeParser.getLine()));
+        IrcMessage im = new IrcMessage("MODE", channel, user, modeParser.getLine());
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnPartExchange(String channel, IRCUser user, String msg) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("PART", channel, user, msg));
+        IrcMessage im = new IrcMessage("PART", channel, user, msg);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnReplyExchange(int num, String value, String msg) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("REPLY", num, value, msg));
+        IrcMessage im = new IrcMessage("REPLY", num, value, msg);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 
     public Exchange createOnTopicExchange(String channel, IRCUser user, String topic) {
         Exchange exchange = createExchange();
-        exchange.setIn(new IrcMessage("TOPIC", channel, user, topic));
+        IrcMessage im = new IrcMessage("TOPIC", channel, user, topic);
+        im.setExchange(exchange);
+        im.setCamelContext(exchange.getContext());
+        exchange.setIn(im);
         return exchange;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java
index be4bc8a..1b3360a 100644
--- a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java
+++ b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java
@@ -122,7 +122,9 @@ public class IrcMessage extends DefaultMessage {
 
     @Override
     public IrcMessage newInstance() {
-        return new IrcMessage();
+        IrcMessage answer = new IrcMessage();
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
index 0408ff7..88428ec 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
@@ -191,7 +191,9 @@ public class JmsMessage extends DefaultMessage {
 
     @Override
     public JmsMessage newInstance() {
-        return new JmsMessage(null, null, binding);
+        JmsMessage answer = new JmsMessage(null, null, binding);
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
index b643b82..9119d98 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
@@ -94,7 +94,9 @@ public class MailMessage extends DefaultMessage {
 
     @Override
     public MailMessage newInstance() {
-        return new MailMessage(null, this.mapMailMessage);
+        MailMessage answer = new MailMessage(null, this.mapMailMessage);
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
index 192d4c1..5112762 100644
--- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
+++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
@@ -81,7 +81,7 @@ public class DefaultNettyHttpBinding implements NettyHttpBinding, Cloneable {
     public Message toCamelMessage(HttpRequest request, Exchange exchange, NettyHttpConfiguration configuration) throws Exception {
         LOG.trace("toCamelMessage: {}", request);
 
-        NettyHttpMessage answer = new NettyHttpMessage(request, null);
+        NettyHttpMessage answer = new NettyHttpMessage(exchange.getContext(), request, null);
         answer.setExchange(exchange);
         if (configuration.isMapHeaders()) {
             populateCamelHeaders(request, answer.getHeaders(), exchange, configuration);
@@ -252,7 +252,7 @@ public class DefaultNettyHttpBinding implements NettyHttpBinding, Cloneable {
     public Message toCamelMessage(HttpResponse response, Exchange exchange, NettyHttpConfiguration configuration) throws Exception {
         LOG.trace("toCamelMessage: {}", response);
 
-        NettyHttpMessage answer = new NettyHttpMessage(null, response);
+        NettyHttpMessage answer = new NettyHttpMessage(exchange.getContext(),null, response);
         answer.setExchange(exchange);
         if (configuration.isMapHeaders()) {
             populateCamelHeaders(response, answer.getHeaders(), exchange, configuration);

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java
index ba4ca55..81f493f 100644
--- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java
+++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.netty.http;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.jboss.netty.handler.codec.http.HttpRequest;
 import org.jboss.netty.handler.codec.http.HttpResponse;
@@ -31,7 +32,8 @@ public class NettyHttpMessage extends DefaultMessage {
     private final transient HttpRequest httpRequest;
     private final transient HttpResponse httpResponse;
 
-    public NettyHttpMessage(HttpRequest httpRequest, HttpResponse httpResponse) {
+    public NettyHttpMessage(CamelContext camelContext, HttpRequest httpRequest, HttpResponse httpResponse) {
+        super(camelContext);
         this.httpRequest = httpRequest;
         this.httpResponse = httpResponse;
     }
@@ -46,6 +48,6 @@ public class NettyHttpMessage extends DefaultMessage {
 
     @Override
     public DefaultMessage newInstance() {
-        return new NettyHttpMessage(httpRequest, httpResponse);
+        return new NettyHttpMessage(getCamelContext(), httpRequest, httpResponse);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
index 3d92f21..eb96cc8 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
@@ -84,7 +84,7 @@ public class DefaultNettyHttpBinding implements NettyHttpBinding, Cloneable {
     public Message toCamelMessage(FullHttpRequest request, Exchange exchange, NettyHttpConfiguration configuration) throws Exception {
         LOG.trace("toCamelMessage: {}", request);
 
-        NettyHttpMessage answer = new NettyHttpMessage(request, null);
+        NettyHttpMessage answer = new NettyHttpMessage(exchange.getContext(), request, null);
         answer.setExchange(exchange);
         if (configuration.isMapHeaders()) {
             populateCamelHeaders(request, answer.getHeaders(), exchange, configuration);
@@ -263,7 +263,7 @@ public class DefaultNettyHttpBinding implements NettyHttpBinding, Cloneable {
     public Message toCamelMessage(FullHttpResponse response, Exchange exchange, NettyHttpConfiguration configuration) throws Exception {
         LOG.trace("toCamelMessage: {}", response);
 
-        NettyHttpMessage answer = new NettyHttpMessage(null, response);
+        NettyHttpMessage answer = new NettyHttpMessage(exchange.getContext(), null, response);
         answer.setExchange(exchange);
         if (configuration.isMapHeaders()) {
             populateCamelHeaders(response, answer.getHeaders(), exchange, configuration);

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpMessage.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpMessage.java
index 2460bfa..54429f5 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpMessage.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpMessage.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.netty4.http;
 
 import io.netty.handler.codec.http.FullHttpRequest;
 import io.netty.handler.codec.http.FullHttpResponse;
+import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultMessage;
 
 /**
@@ -31,7 +32,8 @@ public class NettyHttpMessage extends DefaultMessage {
     private final transient FullHttpRequest httpRequest;
     private final transient FullHttpResponse httpResponse;
 
-    public NettyHttpMessage(FullHttpRequest httpRequest, FullHttpResponse httpResponse) {
+    public NettyHttpMessage(CamelContext camelContext, FullHttpRequest httpRequest, FullHttpResponse httpResponse) {
+        super(camelContext);
         this.httpRequest = httpRequest;
         this.httpResponse = httpResponse;
     }
@@ -46,6 +48,6 @@ public class NettyHttpMessage extends DefaultMessage {
 
     @Override
     public DefaultMessage newInstance() {
-        return new NettyHttpMessage(httpRequest, httpResponse);
+        return new NettyHttpMessage(getCamelContext(), httpRequest, httpResponse);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
index a926982..ed06f59 100644
--- a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
+++ b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
@@ -140,12 +140,12 @@ public class PahoEndpoint extends DefaultEndpoint {
     }
 
     public Exchange createExchange(MqttMessage mqttMessage, String topic) {
-        PahoMessage paho = new PahoMessage();
-        paho.setMqttMessage(mqttMessage);
+        Exchange exchange = createExchange();
+
+        PahoMessage paho = new PahoMessage(exchange.getContext(), mqttMessage);
         paho.setBody(mqttMessage.getPayload());
         paho.setHeader(PahoConstants.MQTT_TOPIC, topic);
 
-        Exchange exchange = createExchange();
         exchange.setIn(paho);
         return exchange;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoMessage.java b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoMessage.java
index a89e470..e805c4b 100644
--- a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoMessage.java
+++ b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoMessage.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.paho;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 
@@ -23,10 +24,8 @@ public class PahoMessage extends DefaultMessage {
 
     private transient MqttMessage mqttMessage;
 
-    public PahoMessage() {
-    }
-
-    public PahoMessage(MqttMessage mqttMessage) {
+    public PahoMessage(CamelContext camelContext, MqttMessage mqttMessage) {
+        super(camelContext);
         this.mqttMessage = mqttMessage;
     }
 
@@ -40,8 +39,7 @@ public class PahoMessage extends DefaultMessage {
 
     @Override
     public PahoMessage newInstance() {
-        return new PahoMessage(mqttMessage);
+        return new PahoMessage(getCamelContext(), mqttMessage);
     }
 
-
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzMessage.java b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzMessage.java
index 58291e8..6fde192 100644
--- a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzMessage.java
+++ b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzMessage.java
@@ -31,6 +31,7 @@ public class QuartzMessage extends DefaultMessage {
     private final JobExecutionContext jobExecutionContext;
 
     public QuartzMessage(Exchange exchange, JobExecutionContext jobExecutionContext) {
+        super(exchange.getContext());
         this.jobExecutionContext = jobExecutionContext;
         setExchange(exchange);
         // do not set body as it should be null
@@ -62,4 +63,9 @@ public class QuartzMessage extends DefaultMessage {
             map.put("triggerGroup", trigger.getGroup());
         }
     }
+
+    @Override
+    public DefaultMessage newInstance() {
+        return new QuartzMessage(getExchange(), jobExecutionContext);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzMessage.java b/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzMessage.java
index 945a405..bb4af65 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzMessage.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzMessage.java
@@ -30,6 +30,7 @@ public class QuartzMessage extends DefaultMessage {
     private final JobExecutionContext jobExecutionContext;
 
     public QuartzMessage(Exchange exchange, JobExecutionContext jobExecutionContext) {
+        super(exchange.getContext());
         this.jobExecutionContext = jobExecutionContext;
         setExchange(exchange);
         // do not set body as it should be null
@@ -61,4 +62,9 @@ public class QuartzMessage extends DefaultMessage {
             map.put("triggerGroup", trigger.getKey().getGroup());
         }
     }
+
+    @Override
+    public DefaultMessage newInstance() {
+        return new QuartzMessage(getExchange(), jobExecutionContext);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java
index 907985e..fa5b60b 100644
--- a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java
+++ b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java
@@ -204,7 +204,9 @@ public class SjmsMessage extends DefaultMessage {
 
     @Override
     public SjmsMessage newInstance() {
-        return new SjmsMessage(null, null, binding);
+        SjmsMessage answer = new SjmsMessage(null, null, binding);
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
index 760c920..c108812 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
@@ -60,7 +60,9 @@ public class SmppMessage extends DefaultMessage {
 
     @Override
     public SmppMessage newInstance() {
-        return new SmppMessage(this.configuration);
+        SmppMessage answer = new SmppMessage(this.configuration);
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
     
     public boolean isAlertNotification() {

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
index 0ba0156..7cc9d3b 100644
--- a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
+++ b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpMessage.java
@@ -56,7 +56,9 @@ public class SnmpMessage extends DefaultMessage {
 
     @Override
     public SnmpMessage newInstance() {
-        return new SnmpMessage(this.pdu);
+        SnmpMessage answer = new SnmpMessage(this.pdu);
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java
index b04a4f1..b677ed4 100644
--- a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java
+++ b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java
@@ -48,7 +48,7 @@ public class DefaultSparkBinding implements SparkBinding {
     public Message toCamelMessage(Request request, Exchange exchange, SparkConfiguration configuration) throws Exception {
         LOG.trace("toCamelMessage: {}", request);
 
-        SparkMessage answer = new SparkMessage(request, null);
+        SparkMessage answer = new SparkMessage(exchange.getContext(), request, null);
         answer.setExchange(exchange);
         if (configuration.isMapHeaders()) {
             populateCamelHeaders(request, answer.getHeaders(), exchange, configuration);

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkMessage.java b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkMessage.java
index d38cb5e..c613cdd 100644
--- a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkMessage.java
+++ b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkMessage.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.sparkrest;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import spark.Request;
 import spark.Response;
@@ -31,7 +32,8 @@ public class SparkMessage extends DefaultMessage {
     private final transient Request request;
     private final transient Response response;
 
-    public SparkMessage(Request request, Response response) {
+    public SparkMessage(CamelContext camelContext, Request request, Response response) {
+        super(camelContext);
         this.request = request;
         this.response = response;
     }
@@ -46,6 +48,6 @@ public class SparkMessage extends DefaultMessage {
 
     @Override
     public DefaultMessage newInstance() {
-        return new SparkMessage(request, response);
+        return new SparkMessage(getCamelContext(), request, response);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationMessage.java b/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationMessage.java
index 16187a9..9c0be06 100644
--- a/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationMessage.java
+++ b/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationMessage.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.spring.integration;
 
 import java.util.Map;
 
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.impl.DefaultMessage;
 
 /**
@@ -51,6 +52,10 @@ public class SpringIntegrationMessage extends DefaultMessage {
             return;
         }
 
+        if (that instanceof CamelContextAware) {
+            this.setCamelContext(((CamelContextAware) that).getCamelContext());
+        }
+
         setMessageId(that.getMessageId());
         setBody(that.getBody());
         super.getHeaders().putAll(that.getHeaders());
@@ -89,7 +94,10 @@ public class SpringIntegrationMessage extends DefaultMessage {
 
     @Override
     public SpringIntegrationMessage newInstance() {
-        return new SpringIntegrationMessage();
+        // create new empty message
+        SpringIntegrationMessage answer = new SpringIntegrationMessage();
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/SpringIntegrationMessageTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/SpringIntegrationMessageTest.java b/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/SpringIntegrationMessageTest.java
index 2a28f24..45e2161 100644
--- a/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/SpringIntegrationMessageTest.java
+++ b/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/SpringIntegrationMessageTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.spring.integration;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.Test;
 import org.springframework.messaging.support.MessageBuilder;
 
@@ -25,6 +27,8 @@ public class SpringIntegrationMessageTest {
 
     @Test
     public void testCopyFrom() {
+        CamelContext camelContext = new DefaultCamelContext();
+
         org.springframework.messaging.Message testSpringMessage =
             MessageBuilder.withPayload("Test")
                 .setHeader("header1", "value1")
@@ -32,6 +36,7 @@ public class SpringIntegrationMessageTest {
                 .build();
 
         SpringIntegrationMessage original = new SpringIntegrationMessage(testSpringMessage);
+        original.setCamelContext(camelContext);
 
         SpringIntegrationMessage copy = new SpringIntegrationMessage(testSpringMessage);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
index 19f40fc..5c9b72f 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
@@ -107,7 +107,7 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
 
         // create inbound message
         WebServiceMessage request = messageContext.getRequest();
-        SpringWebserviceMessage inMessage = new SpringWebserviceMessage(request);
+        SpringWebserviceMessage inMessage = new SpringWebserviceMessage(exchange.getContext(), request);
         extractSourceFromSoapHeader(inMessage.getHeaders(), request);
         extractAttachmentsFromRequest(request, inMessage);
         exchange.setIn(inMessage);

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceMessage.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceMessage.java
index 79f0086..2291fdf 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceMessage.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceMessage.java
@@ -16,13 +16,15 @@
  */
 package org.apache.camel.component.spring.ws;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.springframework.ws.WebServiceMessage;
 
 public class SpringWebserviceMessage extends DefaultMessage {
     private WebServiceMessage webServiceMessage;
 
-    public SpringWebserviceMessage(WebServiceMessage webServiceMessage) {
+    public SpringWebserviceMessage(CamelContext camelContext, WebServiceMessage webServiceMessage) {
+        super(camelContext);
         this.webServiceMessage = webServiceMessage;
     }
 
@@ -43,6 +45,11 @@ public class SpringWebserviceMessage extends DefaultMessage {
     }
 
     @Override
+    public DefaultMessage newInstance() {
+        return new SpringWebserviceMessage(getCamelContext(), webServiceMessage);
+    }
+
+    @Override
     public String toString() {
         return "SpringWebserviceMessage[" + webServiceMessage + "]";
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/36c3512d/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
index 90c5540..495c373 100644
--- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
+++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
@@ -74,7 +74,9 @@ public class XmppMessage extends DefaultMessage {
 
     @Override
     public XmppMessage newInstance() {
-        return new XmppMessage();
+        XmppMessage answer = new XmppMessage();
+        answer.setCamelContext(getCamelContext());
+        return answer;
     }
 
     @Override


[03/13] camel git commit: CAMEL-11149: SPI - Allow to plugin different headers map implementation

Posted by da...@apache.org.
CAMEL-11149: SPI - Allow to plugin different headers map implementation


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

Branch: refs/heads/master
Commit: 5b22da69159d06f71743d09625782595690508c1
Parents: 888fdf7
Author: Claus Ibsen <da...@apache.org>
Authored: Wed May 24 15:22:25 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 25 11:09:52 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/CamelContext.java     | 11 ++++
 .../src/main/java/org/apache/camel/Message.java |  6 ++
 .../camel/component/mock/MockEndpoint.java      |  6 +-
 .../apache/camel/impl/DefaultCamelContext.java  | 13 ++++
 .../org/apache/camel/impl/DefaultExchange.java  | 11 ++--
 .../camel/impl/DefaultHeadersMapFactory.java    | 47 ++++++++++++++
 .../org/apache/camel/impl/DefaultMessage.java   | 12 ++--
 .../org/apache/camel/spi/HeadersMapFactory.java | 57 ++++++++++++++++
 .../impl/DefaultHeadersMapFactoryTest.java      | 68 ++++++++++++++++++++
 9 files changed, 217 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/CamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 00702d1..ff0eb9a 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -53,6 +53,7 @@ import org.apache.camel.spi.EndpointStrategy;
 import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.FactoryFinderResolver;
+import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.InterceptStrategy;
@@ -1988,4 +1989,14 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
      */
     SSLContextParameters getSSLContextParameters();
 
+    /**
+     * Gets the {@link HeadersMapFactory} to use.
+     */
+    HeadersMapFactory getHeadersMapFactory();
+
+    /**
+     * Sets a custom {@link HeadersMapFactory} to be used.
+     */
+    void setHeadersMapFactory(HeadersMapFactory factory);
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/Message.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/Message.java b/camel-core/src/main/java/org/apache/camel/Message.java
index 3b45316..d420a19 100644
--- a/camel-core/src/main/java/org/apache/camel/Message.java
+++ b/camel-core/src/main/java/org/apache/camel/Message.java
@@ -21,6 +21,8 @@ import java.util.Set;
 import java.util.function.Supplier;
 import javax.activation.DataHandler;
 
+import org.apache.camel.spi.HeadersMapFactory;
+
 /**
  * Implements the <a
  * href="http://camel.apache.org/message.html">Message</a> pattern and
@@ -28,6 +30,8 @@ import javax.activation.DataHandler;
  * <p/>
  * See {@link org.apache.camel.impl.DefaultMessage DefaultMessage} for how headers
  * is represented in Camel using a {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
+ * The implementation of the map can be configured by the {@link HeadersMapFactory} which can be set
+ * on the {@link CamelContext}. The default implementation uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
  *
  * @version 
  */
@@ -172,6 +176,8 @@ public interface Message {
      * <p/>
      * See {@link org.apache.camel.impl.DefaultMessage DefaultMessage} for how headers
      * is represented in Camel using a {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
+     * The implementation of the map can be configured by the {@link HeadersMapFactory} which can be set
+     * on the {@link CamelContext}. The default implementation uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
      * <p/>
      * <b>Important:</b> If you want to walk the returned {@link Map} and fetch all the keys and values, you should use
      * the {@link java.util.Map#entrySet()} method, which ensure you get the keys in the original case.

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index a45d03c..fb10f5f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -523,7 +523,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
      */
     public void expectedHeaderReceived(final String name, final Object value) {
         if (expectedHeaderValues == null) {
-            expectedHeaderValues = new CaseInsensitiveMap();
+            expectedHeaderValues = getCamelContext().getHeadersMapFactory().newMap();
             // we just wants to expects to be called once
             expects(new Runnable() {
                 public void run() {
@@ -1310,7 +1310,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
 
         if (expectedHeaderValues != null) {
             if (actualHeaderValues == null) {
-                actualHeaderValues = new CaseInsensitiveMap();
+                actualHeaderValues = getCamelContext().getHeadersMapFactory().newMap();
             }
             if (in.hasHeaders()) {
                 actualHeaderValues.putAll(in.getHeaders());
@@ -1319,7 +1319,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
 
         if (expectedPropertyValues != null) {
             if (actualPropertyValues == null) {
-                actualPropertyValues = new ConcurrentHashMap<String, Object>();
+                actualPropertyValues = getCamelContext().getHeadersMapFactory().newMap();
             }
             actualPropertyValues.putAll(copy.getProperties());
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 13cf55b..7a1c772 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -136,6 +136,7 @@ import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.FactoryFinderResolver;
+import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.InterceptStrategy;
@@ -235,6 +236,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private List<InterceptStrategy> interceptStrategies = new ArrayList<InterceptStrategy>();
     private List<RoutePolicyFactory> routePolicyFactories = new ArrayList<RoutePolicyFactory>();
     private Set<LogListener> logListeners = new LinkedHashSet<>();
+    private HeadersMapFactory headersMapFactory = new DefaultHeadersMapFactory();
 
     // special flags to control the first startup which can are special
     private volatile boolean firstStartDone;
@@ -304,6 +306,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private final RuntimeCamelCatalog runtimeCamelCatalog = new DefaultRuntimeCamelCatalog(this, true);
     private SSLContextParameters sslContextParameters;
     private final ThreadLocal<Set<String>> componentsInCreation = ThreadLocal.withInitial(HashSet::new);
+
     /**
      * Creates the {@link CamelContext} using {@link JndiRegistry} as registry,
      * but will silently fallback and use {@link SimpleRegistry} if JNDI cannot be used.
@@ -4475,6 +4478,16 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return this.sslContextParameters;
     }
 
+    @Override
+    public HeadersMapFactory getHeadersMapFactory() {
+        return headersMapFactory;
+    }
+
+    @Override
+    public void setHeadersMapFactory(HeadersMapFactory headersMapFactory) {
+        this.headersMapFactory = headersMapFactory;
+    }
+
     protected Map<String, RouteService> getRouteServices() {
         return routeServices;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
index d1bbab2..0ee5e8f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
@@ -128,24 +128,21 @@ public final class DefaultExchange implements Exchange {
         return exchange;
     }
 
-    private static Map<String, Object> safeCopyHeaders(Map<String, Object> headers) {
+    private Map<String, Object> safeCopyHeaders(Map<String, Object> headers) {
         if (headers == null) {
             return null;
         }
 
-        Map<String, Object> answer = new CaseInsensitiveMap();
-        answer.putAll(headers);
-        return answer;
+        return context.getHeadersMapFactory().fromMap(headers);
     }
 
     @SuppressWarnings("unchecked")
-    private static Map<String, Object> safeCopyProperties(Map<String, Object> properties) {
+    private Map<String, Object> safeCopyProperties(Map<String, Object> properties) {
         if (properties == null) {
             return null;
         }
 
-        // TODO: properties should use same map kind as headers
-        Map<String, Object> answer = new ConcurrentHashMap<String, Object>(properties);
+        Map<String, Object> answer = context.getHeadersMapFactory().fromMap(properties);
 
         // safe copy message history using a defensive copy
         List<MessageHistory> history = (List<MessageHistory>) answer.remove(Exchange.MESSAGE_HISTORY);

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java
new file mode 100644
index 0000000..efc7e5e
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultHeadersMapFactory.java
@@ -0,0 +1,47 @@
+/**
+ * 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.impl;
+
+import java.util.Map;
+
+import org.apache.camel.spi.HeadersMapFactory;
+import org.apache.camel.util.CaseInsensitiveMap;
+
+/**
+ * Default {@link HeadersMapFactory} which uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
+ * This implementation uses a {@link org.apache.camel.util.CaseInsensitiveMap} storing the headers.
+ * This allows us to be able to lookup headers using case insensitive keys, making it easier for end users
+ * as they do not have to be worried about using exact keys.
+ * See more details at {@link org.apache.camel.util.CaseInsensitiveMap}.
+ */
+public class DefaultHeadersMapFactory implements HeadersMapFactory {
+
+    @Override
+    public Map<String, Object> newMap() {
+        return new CaseInsensitiveMap();
+    }
+
+    @Override
+    public Map<String, Object> fromMap(Map<String, Object> map) {
+        return new CaseInsensitiveMap(map);
+    }
+
+    @Override
+    public boolean isInstanceOf(Map<String, Object> map) {
+        return map instanceof CaseInsensitiveMap;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
index 57bedfa..d6f44f4 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
@@ -24,7 +24,9 @@ import java.util.function.Supplier;
 import javax.activation.DataHandler;
 
 import org.apache.camel.Attachment;
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.util.AttachmentMap;
 import org.apache.camel.util.CaseInsensitiveMap;
 import org.apache.camel.util.EndpointHelper;
@@ -37,6 +39,8 @@ import org.apache.camel.util.ObjectHelper;
  * This allows us to be able to lookup headers using case insensitive keys, making it easier for end users
  * as they do not have to be worried about using exact keys.
  * See more details at {@link org.apache.camel.util.CaseInsensitiveMap}.
+ * The implementation of the map can be configured by the {@link HeadersMapFactory} which can be set
+ * on the {@link CamelContext}. The default implementation uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
  *
  * @version 
  */
@@ -204,11 +208,11 @@ public class DefaultMessage extends MessageSupport {
     }
 
     public void setHeaders(Map<String, Object> headers) {
-        if (headers instanceof CaseInsensitiveMap) {
+        if (getExchange().getContext().getHeadersMapFactory().isInstanceOf(headers)) {
             this.headers = headers;
         } else {
-            // wrap it in a case insensitive map
-            this.headers = new CaseInsensitiveMap(headers);
+            // create a new map
+            this.headers = getExchange().getContext().getHeadersMapFactory().fromMap(headers);
         }
     }
 
@@ -233,7 +237,7 @@ public class DefaultMessage extends MessageSupport {
      *         the underlying inbound transport
      */
     protected Map<String, Object> createHeaders() {
-        Map<String, Object> map = new CaseInsensitiveMap();
+        Map<String, Object> map = getExchange().getContext().getHeadersMapFactory().newMap();
         populateInitialHeaders(map);
         return map;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java b/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
new file mode 100644
index 0000000..bb4556d
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
@@ -0,0 +1,57 @@
+/**
+ * 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.spi;
+
+import java.util.Map;
+
+import org.apache.camel.Message;
+
+/**
+ * Factory to create the {@link Map} implementation to use for storing headers and properties
+ * on {@link Message} and {@link org.apache.camel.Exchange}.
+ *
+ * @see org.apache.camel.impl.DefaultHeadersMapFactory
+ */
+public interface HeadersMapFactory {
+
+    /**
+     * Creates a new empty {@link Map}
+     *
+     * @return new empty map
+     */
+    Map<String, Object> newMap();
+
+    /**
+     * Creates a new {@link Map} and copies over all the content from the existing map.
+     * <p/>
+     * The copy of the content should use defensive copy, so the returned map
+     * can add/remove/change the content without affecting the existing map.
+     *
+     * @param map  existing map to copy over (must use defensive copy)
+     * @return new map with the content from the existing map
+     */
+    Map<String, Object> fromMap(Map<String, Object> map);
+
+    /**
+     * Whether the given {@link Map} implementation is created by this factory?
+     *
+     * @return <tt>true</tt> if created from this factory, <tt>false</tt> if not
+     */
+    boolean isInstanceOf(Map<String, Object> map);
+
+}
+

http://git-wip-us.apache.org/repos/asf/camel/blob/5b22da69/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java
new file mode 100644
index 0000000..c23d3e6
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java
@@ -0,0 +1,68 @@
+/**
+ * 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.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+/**
+ * @version 
+ */
+public class DefaultHeadersMapFactoryTest extends TestCase {
+
+    public void testLookupCaseAgnostic() {
+        Map<String, Object> map = new DefaultHeadersMapFactory().newMap();
+        assertNull(map.get("foo"));
+
+        map.put("foo", "cheese");
+
+        assertEquals("cheese", map.get("foo"));
+        assertEquals("cheese", map.get("Foo"));
+        assertEquals("cheese", map.get("FOO"));
+    }
+
+    public void testConstructFromOther() {
+        Map<String, Object> other = new DefaultHeadersMapFactory().newMap();
+        other.put("Foo", "cheese");
+        other.put("bar", 123);
+
+        Map<String, Object> map = new DefaultHeadersMapFactory().fromMap(other);
+
+        assertEquals("cheese", map.get("FOO"));
+        assertEquals("cheese", map.get("foo"));
+        assertEquals("cheese", map.get("Foo"));
+
+        assertEquals(123, map.get("BAR"));
+        assertEquals(123, map.get("bar"));
+        assertEquals(123, map.get("BaR"));
+    }
+
+    public void testIsInstance() {
+        Map<String, Object> map = new DefaultHeadersMapFactory().newMap();
+
+        Map<String, Object> other = new DefaultHeadersMapFactory().fromMap(map);
+        other.put("Foo", "cheese");
+        other.put("bar", 123);
+
+        assertTrue(new DefaultHeadersMapFactory().isInstanceOf(map));
+        assertTrue(new DefaultHeadersMapFactory().isInstanceOf(other));
+        assertFalse(new DefaultHeadersMapFactory().isInstanceOf(new HashMap<>()));
+    }
+
+}
\ No newline at end of file