[
https://issues.apache.org/activemq/browse/CAMEL-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=53433#action_53433
]
Claus Ibsen commented on CAMEL-1867:
------------------------------------
getHeader(String name) should also consider jms key format strategy so it can
do lookup based on key decoded
So you can lookup with {{Content-Type}} and where the key has been decoded to
{{Content_HYPHEN_Type}}. That should be tested without the passthrough ket
strategy but the default one.
> JmsKeyFormatStrategy not used consistently and JmsMessage.getHeader() not
> returning correct value
> -------------------------------------------------------------------------------------------------
>
> Key: CAMEL-1867
> URL: https://issues.apache.org/activemq/browse/CAMEL-1867
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-jms
> Affects Versions: 2.0-M3
> Environment: 2.0-M3
> Reporter: Mark White
> Attachments: JmsPassThroughtJmsKeyFormatStrategyTest.java, log.out,
> MessageTester.java
>
>
> On entry to a route from a JMS endpoint configured with
> PassthroughJmsKeyFormatStrategy the headers with underscores (_) are passed
> through correctly.
> However, when any header value in the message is then changed, the original
> headers are added back into the message using the
> DefaultJmsKeyFormatStrategy. For example, sending a JMS message with headers;
> HEADER_1=VALUE_1
> HEADER_2=VALUE_1
> we do see just these two headers in the message received into the route.
> However, if we then set a header value in the route, say HEADER_1=VALUE_2, we
> now see the headers;
> HEADER.1=VALUE_1
> HEADER.2=VALUE_1
> HEADER_1=VALUE_2
> HEADER_2=VALUE_1
> For some reason in the set header process the original message headers and
> values get added into the message after being passed through the
> DefaultJmsKeyFormatStrategy. This has the implication of unnecessary
> duplication of the headers.
> Also, when a message header is accessed using the getHeader(key) method it
> also goes through the DefaultJmsKeyFormatStrategy to decode the key that is
> passed.
> In the example above, if after we have updated 'HEADER_1' to 'VALUE_2', we do;
> message.getHeader("HEADER_1") this goes through the
> DefaultJmsKeyFormatStrategy and actually gets executed as
> message.getHeader("HEADER.1") which returns VALUE_1 (wrong!).
> Note: if instead we lookup the header through message.getHeaders() which
> returns the all headers in a Map, we can correctly access the 'HEADER_1' key.
> (Why is getHeader(key) even going through the KeyFormatStrategy anyway if
> setHeader() isn't?)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.