[ 
https://issues.apache.org/activemq/browse/CAMEL-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-1867:
-------------------------------

    Fix Version/s: 2.0.0

> 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
>            Assignee: Claus Ibsen
>             Fix For: 2.0.0
>
>         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.

Reply via email to