[ 
https://issues.apache.org/activemq/browse/CAMEL-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=53052#action_53052
 ] 

Mark White commented on CAMEL-1867:
-----------------------------------

We use a Spring test to wrap the route we're testing with other routes to 
generate input and trap output; 'direct:' input and 'mock:' outputs.  So we go 
through;

So, say the route we're testing

<route>
<from uri="jms:IN_QUEUE"/>
...
<to uri="jms:OUT_QUEUE"/>
</route>

and so the Spring test creates;

from("direct:RouteTestProducer").to("jms:IN_QUEUE");
from("jms:OUT_QUEUE").to("mock:OutConsumer");
from("jms:ERROR").to("mock:ErrorConsumer")

We then ProducerTemplate.send() to send an Exchange created from 
DefaultExchange.

I'll look at the UnitTest and see if I can't reproduce through that somehow.

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

Reply via email to