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);