This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-13788
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 30dd06d358febe817106c90d0653007a9d2f8fc5
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Jul 25 16:15:42 2019 +0200

    CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
---
 .../camel-bean/src/main/docs/bean-language.adoc     | 21 ++++++++++++++++++---
 .../bean/AbstractCamelInvocationHandler.java        | 15 +++------------
 .../apache/camel/language/bean/BeanExpression.java  |  3 ++-
 .../apache/camel/component/seda/SedaProducer.java   |  2 +-
 .../org/apache/camel/language/spel/RootObject.java  |  5 +++++
 .../apache/camel/language/spel/SpelRouteTest.java   |  2 +-
 .../org/apache/camel/language/spel/SpelTest.java    |  2 ++
 .../processor/SpringComplexBlockWithEndTest.java    |  2 +-
 .../org/apache/camel/converter/CamelConverter.java  | 11 ++++++++---
 9 files changed, 41 insertions(+), 22 deletions(-)

diff --git a/components/camel-bean/src/main/docs/bean-language.adoc 
b/components/camel-bean/src/main/docs/bean-language.adoc
index ce5a1c4..08023f6 100644
--- a/components/camel-bean/src/main/docs/bean-language.adoc
+++ b/components/camel-bean/src/main/docs/bean-language.adoc
@@ -3,9 +3,6 @@
 == Bean Language
 *Available as of Camel version 1.3*
 
-
-*Available as of Camel version 1.3*
-
 The purpose of the Bean Language is to be able to implement an
 xref:manual::expression.adoc[Expression] or 
xref:manual::predicate.adoc[Predicate] using
 a simple method on a bean. The bean name is resolved using a 
xref:manual::registry.adoc[Registry], such as the
@@ -21,6 +18,24 @@ xref:manual::message.adoc[Message] Exchange to the method 
parameters; so you can
 annotate the bean to extract headers or other expressions such as
 xref:components::xpath-language.adoc[XPath] or 
xref:components::xquery-language.adoc[XQuery] from the message.
 
+=== Bean Language options
+
+// language options: START
+The Bean method language supports 4 options, which are listed below.
+
+
+
+[width="100%",cols="2,1m,1m,6",options="header"]
+|===
+| Name | Default | Java Type | Description
+| ref |  | String | Reference to bean to lookup in the registry
+| method |  | String | Name of method to call
+| beanType |  | String | Class name of the bean to use
+| trim | true | Boolean | Whether to trim the value to remove leading and 
trailing whitespaces and line breaks
+|===
+// language options: END
+
+
 [[BeanLanguage-UsingBeanExpressionsinJava]]
 === Using Bean Expressions in Java
 
diff --git 
a/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
 
b/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
index ec92342..3ab758a 100644
--- 
a/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
+++ 
b/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
@@ -68,19 +68,10 @@ public abstract class AbstractCamelInvocationHandler 
implements InvocationHandle
     }
 
     private static Object getBody(Exchange exchange, Class<?> type) throws 
InvalidPayloadException {
-        // get the body from the Exchange from either OUT or IN
-        if (exchange.hasOut()) {
-            if (exchange.getOut().getBody() != null) {
-                return exchange.getOut().getMandatoryBody(type);
-            } else {
-                return null;
-            }
+        if (exchange.getMessage().getBody() != null) {
+            return exchange.getMessage().getMandatoryBody(type);
         } else {
-            if (exchange.getIn().getBody() != null) {
-                return exchange.getIn().getMandatoryBody(type);
-            } else {
-                return null;
-            }
+            return null;
         }
     }
 
diff --git 
a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
 
b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
index c38c3f2..b39ca6f 100644
--- 
a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
+++ 
b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
@@ -293,7 +293,8 @@ public class BeanExpression implements Expression, 
Predicate, AfterPropertiesCon
             // force to use InOut to retrieve the result on the OUT message
             resultExchange.setPattern(ExchangePattern.InOut);
             processor.process(resultExchange);
-            result = resultExchange.getOut().getBody();
+            // the response is always stored in OUT
+            result = resultExchange.hasOut() ? 
resultExchange.getOut().getBody() : null;
 
             // propagate properties and headers from result
             if (resultExchange.hasProperties()) {
diff --git 
a/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaProducer.java
 
b/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaProducer.java
index 8f9cde3..a43abae 100644
--- 
a/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaProducer.java
+++ 
b/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaProducer.java
@@ -70,7 +70,7 @@ public class SedaProducer extends DefaultAsyncProducer {
                     // check for timeout, which then already would have 
invoked the latch
                     if (latch.getCount() == 0) {
                         if (log.isTraceEnabled()) {
-                            log.trace("{}. Timeout occurred so response will 
be ignored: {}", this, response.hasOut() ? response.getOut() : 
response.getIn());
+                            log.trace("{}. Timeout occurred so response will 
be ignored: {}", this, response.getMessage());
                         }
                         return;
                     } else {
diff --git 
a/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java
 
b/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java
index 25c6557..7725ae4 100644
--- 
a/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java
+++ 
b/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java
@@ -53,6 +53,11 @@ public final class RootObject {
         return exchange.getIn();
     }
 
+    public Message getMessage() {
+        return exchange.getMessage();
+    }
+
+    @Deprecated
     public Message getResponse() {
         return exchange.getOut();
     }
diff --git 
a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelRouteTest.java
 
b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelRouteTest.java
index 0b02876..03b0d5c 100644
--- 
a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelRouteTest.java
+++ 
b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelRouteTest.java
@@ -46,7 +46,7 @@ public class SpelRouteTest extends ContextTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("direct:test").setBody(spel("Hello #{request.body}! What 
a beautiful #{request.headers['dayOrNight']}")).to("mock:result");
+                from("direct:test").setBody(spel("Hello #{message.body}! What 
a beautiful #{request.headers['dayOrNight']}")).to("mock:result");
                 from("direct:loop").loop(4).setBody(spel("#{body + ':' + 
properties['CamelLoopIndex']}")).to("mock:loopResult");
             }
         };
diff --git 
a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
 
b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
index 529238e..e8d6880 100644
--- 
a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
+++ 
b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
@@ -27,6 +27,7 @@ public class SpelTest extends LanguageTestSupport {
         assertExpression("#{exchange.getIn().body}", "<hello 
id='m123'>world!</hello>");
         assertExpression("#{getRequest().body}", "<hello 
id='m123'>world!</hello>");
         assertExpression("#{request.body}", "<hello id='m123'>world!</hello>");
+        assertExpression("#{message.body}", "<hello id='m123'>world!</hello>");
         assertExpression("#{request.Headers['foo']}", "abc");
         assertExpression("#{getRequest().Headers['foo']}", "abc");
         assertExpression("#{request.Headers['foo'] == 'abc'}", true);
@@ -48,6 +49,7 @@ public class SpelTest extends LanguageTestSupport {
         assertPredicate("#{request.headers.foo.startsWith('a')}");
         assertPredicate("#{request.headers.foo == 'abc'}");
         assertPredicateFails("#{request.headers.foo == 'badString'}");
+        assertPredicate("#{message.headers.foo == 'abc'}");
     }
     
     @Test
diff --git 
a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringComplexBlockWithEndTest.java
 
b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringComplexBlockWithEndTest.java
index 9b2fcb1..c592aac 100644
--- 
a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringComplexBlockWithEndTest.java
+++ 
b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringComplexBlockWithEndTest.java
@@ -71,7 +71,7 @@ public class SpringComplexBlockWithEndTest extends 
ContextTestSupport {
     public static class SplitAggregate implements AggregationStrategy {
 
         public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
-            newExchange.getOut().setBody("Cowboys");
+            newExchange.getMessage().setBody("Cowboys");
             return newExchange;
         }
 
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java 
b/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java
index 1459406..1dd114b 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java
@@ -38,17 +38,22 @@ public final class CamelConverter {
     @Converter
     public static Processor toProcessor(final Predicate predicate) {
         return exchange -> {
+            // the response from a predicate should be set on OUT
             boolean answer = predicate.matches(exchange);
-            exchange.getMessage().setBody(answer);
+            Message out = exchange.getOut();
+            out.copyFrom(exchange.getIn());
+            out.setBody(answer);
         };
-
     }
 
     @Converter
     public static Processor toProcessor(final Expression expression) {
         return exchange -> {
+            // the response from a expression should be set on OUT
             Object answer = expression.evaluate(exchange, Object.class);
-            exchange.getMessage().setBody(answer);
+            Message out = exchange.getOut();
+            out.copyFrom(exchange.getIn());
+            out.setBody(answer);
         };
     }
 

Reply via email to