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 2017/06/02 10:55:53 UTC

[2/4] camel git commit: Optimise - Bean component - Dont set multi parameter header if not really needed. Also it should be deprecated as its some old cruft.

Optimise - Bean component - Dont set multi parameter header if not really needed. Also it should be deprecated as its some old cruft.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cec467ff
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cec467ff
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cec467ff

Branch: refs/heads/master
Commit: cec467ff7c512e9b04e05448273aa6938dc406a8
Parents: 40db0a7
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Jun 2 11:14:08 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jun 2 11:16:09 2017 +0200

----------------------------------------------------------------------
 .../src/main/java/org/apache/camel/Exchange.java   |  1 +
 .../component/bean/AbstractBeanProcessor.java      | 16 ++++++++++------
 .../apache/camel/component/bean/MethodInfo.java    | 17 ++++++++---------
 3 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/cec467ff/camel-core/src/main/java/org/apache/camel/Exchange.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java
index 87fcf13..56e0780 100644
--- a/camel-core/src/main/java/org/apache/camel/Exchange.java
+++ b/camel-core/src/main/java/org/apache/camel/Exchange.java
@@ -89,6 +89,7 @@ public interface Exchange {
     String BATCH_SIZE                 = "CamelBatchSize";
     String BATCH_COMPLETE             = "CamelBatchComplete";
     String BEAN_METHOD_NAME           = "CamelBeanMethodName";
+    @Deprecated
     String BEAN_MULTI_PARAMETER_ARRAY = "CamelBeanMultiParameterArray";
     String BINDING                    = "CamelBinding";
     // do not prefix with Camel and use lower-case starting letter as its a shared key

http://git-wip-us.apache.org/repos/asf/camel/blob/cec467ff/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
index 858253e..88d78c7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
@@ -146,15 +146,15 @@ public abstract class AbstractBeanProcessor implements AsyncProcessor {
         }
 
         // set temporary header which is a hint for the bean info that introspect the bean
-        if (in.getHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY) == null) {
-            in.setHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, isMultiParameterArray());
+        if (isMultiParameterArray()) {
+            in.setHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, Boolean.TRUE);
         }
-
-        MethodInvocation invocation;
         // set explicit method name to invoke as a header, which is how BeanInfo can detect it
         if (explicitMethodName != null) {
             in.setHeader(Exchange.BEAN_METHOD_NAME, explicitMethodName);
         }
+
+        MethodInvocation invocation;
         try {
             invocation = beanInfo.createInvocation(bean, exchange);
         } catch (Throwable e) {
@@ -163,8 +163,12 @@ public abstract class AbstractBeanProcessor implements AsyncProcessor {
             return true;
         } finally {
             // must remove headers as they were provisional
-            in.removeHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY);
-            in.removeHeader(Exchange.BEAN_METHOD_NAME);
+            if (isMultiParameterArray()) {
+                in.removeHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY);
+            }
+            if (explicitMethodName != null) {
+                in.removeHeader(Exchange.BEAN_METHOD_NAME);
+            }
         }
 
         if (invocation == null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/cec467ff/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index fa04efc..f2aedb9 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -639,14 +639,11 @@ public class MethodInfo {
         @SuppressWarnings("unchecked")
         public <T> T evaluate(Exchange exchange, Class<T> type) {
             Object body = exchange.getIn().getBody();
-            boolean multiParameterArray = false;
-            if (exchange.getIn().getHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY) != null) {
-                multiParameterArray = exchange.getIn().getHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, Boolean.class);
-                if (multiParameterArray) {
-                    // Just change the message body to an Object array
-                    if (!(body instanceof Object[])) {
-                        body = exchange.getIn().getBody(Object[].class);
-                    }
+            boolean multiParameterArray = exchange.getIn().getHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, false, boolean.class);
+            if (multiParameterArray) {
+                // Just change the message body to an Object array
+                if (!(body instanceof Object[])) {
+                    body = exchange.getIn().getBody(Object[].class);
                 }
             }
 
@@ -668,7 +665,9 @@ public class MethodInfo {
             // we need to do this before the expressions gets evaluated as it may contain
             // a @Bean expression which would by mistake read these headers. So the headers
             // must be removed at this point of time
-            exchange.getIn().removeHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY);
+            if (multiParameterArray) {
+                exchange.getIn().removeHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY);
+            }
             exchange.getIn().removeHeader(Exchange.BEAN_METHOD_NAME);
 
             Object[] answer = evaluateParameterExpressions(exchange, body, multiParameterArray, it);