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/2dc3a599
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2dc3a599
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2dc3a599

Branch: refs/heads/master
Commit: 2dc3a599cd5264d944c547cd8afdef8b702d3fd2
Parents: 6dcfe8f
Author: Claus Ibsen <davscl...@apache.org>
Authored: Thu May 25 16:39:44 2017 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Thu May 25 16:39:44 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/impl/DefaultCamelContext.java  |  3 ++-
 .../main/java/org/apache/camel/impl/DefaultExchange.java | 11 ++++++++---
 .../java/org/apache/camel/spi/HeadersMapFactory.java     |  3 +--
 3 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2dc3a599/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 656e963..5869183 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
@@ -3303,8 +3303,9 @@ public class DefaultCamelContext extends ServiceSupport 
implements ModelCamelCon
             log.debug("AllowUseOriginalMessage enabled because 
UseOriginalMessage is in use");
         }
 
+        log.debug("Using HeadersMapFactory: {}", getHeadersMapFactory());
         if (!getHeadersMapFactory().isCaseInsensitive()) {
-            log.info("HeadersMapFactory is case-sensitive which can cause 
problems for protocols such as HTTP based, which rely on case-insensitive 
headers.");
+            log.info("HeadersMapFactory: {} is case-sensitive which can cause 
problems for protocols such as HTTP based, which rely on case-insensitive 
headers.", getHeadersMapFactory());
         }
 
         // start routes

http://git-wip-us.apache.org/repos/asf/camel/blob/2dc3a599/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 520dcad..229b274 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
@@ -141,7 +141,7 @@ public final class DefaultExchange implements Exchange {
             return null;
         }
 
-        Map<String, Object> answer = 
context.getHeadersMapFactory().newMap(properties);
+        Map<String, Object> answer = createProperties();
 
         // safe copy message history using a defensive copy
         List<MessageHistory> history = (List<MessageHistory>) 
answer.remove(Exchange.MESSAGE_HISTORY);
@@ -253,7 +253,7 @@ public final class DefaultExchange implements Exchange {
 
     public Map<String, Object> getProperties() {
         if (properties == null) {
-            properties = new ConcurrentHashMap<String, Object>();
+            properties = createProperties();
         }
         return properties;
     }
@@ -517,7 +517,12 @@ public final class DefaultExchange implements Exchange {
         }
         return answer;
     }
-    
+
+    protected Map<String, Object> createProperties() {
+        // TODO: a concurrent map is likely not needed
+        return new ConcurrentHashMap<String, Object>();
+    }
+
     private static boolean isExcludePatternMatch(String key, String... 
excludePatterns) {
         for (String pattern : excludePatterns) {
             if (EndpointHelper.matchPattern(key, pattern)) {

http://git-wip-us.apache.org/repos/asf/camel/blob/2dc3a599/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 57a226f..fe2543e 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
@@ -21,8 +21,7 @@ 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}.
+ * Factory to create the {@link Map} implementation to use for storing headers 
on {@link Message}.
  *
  * @see org.apache.camel.impl.DefaultHeadersMapFactory
  */

Reply via email to