Author: davsclaus
Date: Wed Apr 18 13:00:33 2012
New Revision: 1327494

URL: http://svn.apache.org/viewvc?rev=1327494&view=rev
Log:
CAMEL-5189: method call expression should propagate exchange properties and 
message headers, so we can support stateful EIPs such as dynamic router etc. 
This is also consistent what we do in with other EIPs and components.

Added:
    
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/DynamicRouterExchangeHeadersTest.java
      - copied unchanged from r1327493, 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DynamicRouterExchangeHeadersTest.java
    
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/DynamicRouterExchangePropertiesTest.java
      - copied unchanged from r1327493, 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DynamicRouterExchangePropertiesTest.java
Modified:
    camel/branches/camel-2.9.x/   (props changed)
    
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1327493

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java?rev=1327494&r1=1327493&r2=1327494&view=diff
==============================================================================
--- 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
 (original)
+++ 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
 Wed Apr 18 13:00:33 2012
@@ -162,6 +162,14 @@ public class BeanExpression implements E
                 processor.process(resultExchange);
                 result = resultExchange.getOut().getBody();
 
+                // propagate properties and headers from result
+                if (resultExchange.hasProperties()) {
+                    
exchange.getProperties().putAll(resultExchange.getProperties());
+                }
+                if (resultExchange.getOut().hasHeaders()) {
+                    
exchange.getIn().getHeaders().putAll(resultExchange.getOut().getHeaders());
+                }
+
                 // propagate exceptions
                 if (resultExchange.getException() != null) {
                     exchange.setException(resultExchange.getException());


Reply via email to