You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/12/05 11:44:59 UTC

svn commit: r1042310 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/ExpressionBuilder.java test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java

Author: davsclaus
Date: Sun Dec  5 10:44:58 2010
New Revision: 1042310

URL: http://svn.apache.org/viewvc?rev=1042310&view=rev
Log:
CAMEL-3388: Fixed @OutHeaders when exchange is InOnly.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=1042310&r1=1042309&r2=1042310&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Sun Dec  5 10:44:58 2010
@@ -254,12 +254,18 @@ public final class ExpressionBuilder {
     /**
      * Returns an expression for the outbound message headers
      *
-     * @return an expression object which will return the headers
+     * @return an expression object which will return the headers, will be <tt>null</tt> if the
+     * exchange is not out capable.
      */
     public static Expression outHeadersExpression() {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
-                return exchange.getOut().getHeaders();
+                // only get out headers if the MEP is out capable
+                if (ExchangeHelper.isOutCapable(exchange)) {
+                    return exchange.getOut().getHeaders();
+                } else {
+                    return null;
+                }
             }
 
             @Override

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java?rev=1042310&r1=1042309&r2=1042310&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java Sun Dec  5 10:44:58 2010
@@ -40,15 +40,34 @@ public class BeanWithHeadersAndBodyInjec
         };
     }
 
-    public void testAnnotations() throws Exception {
+    public void testInOnly() throws Exception {
         MockEndpoint end = getMockEndpoint("mock:finish");
-        end.setExpectedMessageCount(1);
+        end.expectedBodiesReceived("Hello!");
+        end.message(0).header("out").isNull();
+
         sendBody("direct:start", "Test Input");
-        end.assertIsSatisfied();
+
+        assertMockEndpointsSatisfied();
+
         assertNotNull(end.getExchanges().get(0).getIn().getBody());
         assertEquals("Hello!", end.getExchanges().get(0).getIn().getBody());
     }
 
+    public void testInOut() throws Exception {
+        MockEndpoint end = getMockEndpoint("mock:finish");
+        end.expectedBodiesReceived("Hello!");
+        end.expectedHeaderReceived("out", 123);
+
+        String out = template.requestBody("direct:start", "Test Input", String.class);
+        assertEquals("Hello!", out);
+
+        assertMockEndpointsSatisfied();
+
+        assertNotNull(end.getExchanges().get(0).getIn().getBody());
+        assertEquals("Hello!", end.getExchanges().get(0).getIn().getBody());
+        assertEquals(123, end.getExchanges().get(0).getIn().getHeader("out"));
+    }
+
     @Override
     protected Context createJndiContext() throws Exception {
         JndiContext answer = new JndiContext();
@@ -57,7 +76,12 @@ public class BeanWithHeadersAndBodyInjec
     }
 
     public static class MyBean {
+
         public String doSomething(@Body String body, @Headers Map headers, @OutHeaders Map outHeaders) {
+            if (outHeaders != null) {
+                outHeaders.put("out", 123);
+            }
+
             return "Hello!";
         }
     }