[ https://issues.apache.org/activemq/browse/CAMEL-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=53046#action_53046 ]
Mark White commented on CAMEL-1867: ----------------------------------- Here is the Camel route we use to test; <bean id="MessageTester" class="route.test.camel.bean.MessageTester"/> <camelContext id="myroute" trace="true" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="jms:IN_QUEUE"/> <bean ref="MessageTester" method="prettyPrintHeaders"/> <setHeader headerName="HEADER_1"><constant>VALUE_2</constant></setHeader> <bean ref="MessageTester" method="prettyPrintHeaders"/> <bean ref="MessageTester" method="setHeader"/> <bean ref="MessageTester" method="prettyPrintHeaders"/> <to uri="log:route.log"/> </route> </camelContext> > 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.