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!";
}
}