Author: ningjiang Date: Mon Aug 25 02:13:47 2008 New Revision: 688672 URL: http://svn.apache.org/viewvc?rev=688672&view=rev Log: CAMEL-846 make sure the header's RETURN_ADDRESS value will be used if the output channel is not set
Modified: activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationProducer.java activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java activemq/camel/trunk/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapterTest.java activemq/camel/trunk/components/camel-spring-integration/src/test/resources/org/apache/camel/component/spring/integration/adapter/CamelTarget.xml Modified: activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationProducer.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationProducer.java?rev=688672&r1=688671&r2=688672&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationProducer.java (original) +++ activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationProducer.java Mon Aug 25 02:13:47 2008 @@ -89,7 +89,7 @@ if (exchange.getPattern().isInCapable()) { headers.put(MessageHeaders.RETURN_ADDRESS , inputChannel); } - org.springframework.integration.message.Message siOutmessage = SpringIntegrationBinding.createSpringIntegrationMessage(exchange); + org.springframework.integration.message.Message siOutmessage = SpringIntegrationBinding.createSpringIntegrationMessage(exchange, headers); outputChannel.send(siOutmessage); if (exchange.getPattern().isInCapable()) { Modified: activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java?rev=688672&r1=688671&r2=688672&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java (original) +++ activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java Mon Aug 25 02:13:47 2008 @@ -87,9 +87,13 @@ if (isExpectReply()) { //Check the message header for the return address response = SpringIntegrationBinding.storeToSpringIntegrationMessage(outExchange.getOut()); - MessageChannel messageReplyChannel = (MessageChannel) message.getHeaders().get(MessageHeaders.RETURN_ADDRESS); - if (messageReplyChannel != null) { - result = messageReplyChannel.send(response); + if (replyChannel == null) { + MessageChannel messageReplyChannel = (MessageChannel) message.getHeaders().get(MessageHeaders.RETURN_ADDRESS); + if (messageReplyChannel != null) { + result = messageReplyChannel.send(response); + } else { + throw new MessageDeliveryException(response, "Can't find reply channel from the CamelTargetAdapter or MessageHeaders"); + } } else { result = replyChannel.send(response); } Modified: activemq/camel/trunk/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapterTest.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapterTest.java?rev=688672&r1=688671&r2=688672&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapterTest.java (original) +++ activemq/camel/trunk/components/camel-spring-integration/src/test/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapterTest.java Mon Aug 25 02:13:47 2008 @@ -52,17 +52,16 @@ assertEquals("Get the wrong result", MESSAGE_BODY + " is processed", result); } - + public void testSendingTwoWayMessageWithMessageAddress() throws Exception { - MessageChannel requestChannel = (MessageChannel) applicationContext.getBean("channelB"); - PollableChannel responseChannel = (PollableChannel) applicationContext.getBean("channelD"); + MessageChannel requestChannel = (MessageChannel) applicationContext.getBean("channelD"); + PollableChannel responseChannel = (PollableChannel) applicationContext.getBean("channelC"); Map<String, Object> headers = new HashMap<String, Object>(); headers.put(MessageHeaders.RETURN_ADDRESS, responseChannel); GenericMessage<String> message = new GenericMessage<String>(MESSAGE_BODY, headers); requestChannel.send(message); - Message responseMessage = responseChannel.receive(); String result = (String) responseMessage.getPayload(); Modified: activemq/camel/trunk/components/camel-spring-integration/src/test/resources/org/apache/camel/component/spring/integration/adapter/CamelTarget.xml URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring-integration/src/test/resources/org/apache/camel/component/spring/integration/adapter/CamelTarget.xml?rev=688672&r1=688671&r2=688672&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-spring-integration/src/test/resources/org/apache/camel/component/spring/integration/adapter/CamelTarget.xml (original) +++ activemq/camel/trunk/components/camel-spring-integration/src/test/resources/org/apache/camel/component/spring/integration/adapter/CamelTarget.xml Mon Aug 25 02:13:47 2008 @@ -36,7 +36,7 @@ <channel-adapter id="channelA" target="camelTargetA"/> <channel-adapter id="channelB" target="camelTargetB"/> <channel id="channelC"/> - <channel id="channelD"/> + <channel-adapter id="channelD" target="camelTargetD"/> <!-- START SNIPPET: example --> <!-- Create the camel context here --> <camelContext id="camelTargetContext" xmlns="http://activemq.apache.org/camel/schema/spring"> @@ -59,6 +59,10 @@ <camel-si:camelContextRef>camelTargetContext</camel-si:camelContextRef> </camel-si:camelTarget> + <camel-si:camelTarget id="camelTargetD" camelEndpointUri="direct:EndpointC" expectReply="true"> + <camel-si:camelContextRef>camelTargetContext</camel-si:camelContextRef> + </camel-si:camelTarget> + <beans:bean id="myProcessor" class="org.apache.camel.component.spring.integration.MyProcessor"/> <!-- END SNIPPET: example --> </beans:beans>