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
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.