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 */