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>


Reply via email to