[
https://issues.apache.org/activemq/browse/CAMEL-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mark White updated CAMEL-1867:
------------------------------
Attachment: log.out
MessageTester.java
And attached;
1. the bean to print out headers from map and through getHeader()
2. the log output
> 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: 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.