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>