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 2020/10/03 10:08:48 UTC
[camel] 01/04: CAMEL-15606: Optimize simple language and expression
builder a bit
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7f28e5670b8d9d8ccae40776d79e227e2e364d0e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 2 19:07:55 2020 +0200
CAMEL-15606: Optimize simple language and expression builder a bit
---
.../camel/support/builder/ExpressionBuilder.java | 29 ++++++++++------------
1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
index 7c2997e..e3ba768 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
@@ -32,7 +32,6 @@ import org.apache.camel.CamelContext;
import org.apache.camel.CamelExecutionException;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.InvalidPayloadException;
import org.apache.camel.Message;
import org.apache.camel.NoSuchLanguageException;
@@ -300,7 +299,11 @@ public class ExpressionBuilder {
* @return an expression object which will return the bean
*/
public static Expression refExpression(final String ref) {
- return refExpression(simpleExpression(ref));
+ if (LanguageSupport.hasSimpleFunction(ref)) {
+ return refExpression(simpleExpression(ref));
+ } else {
+ return refExpression(constantExpression(ref));
+ }
}
/**
@@ -1632,21 +1635,23 @@ public class ExpressionBuilder {
StringHelper.notEmpty(path, "path");
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
+ // TODO: resolve language early
Language language = exchange.getContext().resolveLanguage("xtokenize");
+ Map<String, Object> map = new HashMap<>(5);
if (headerName != null) {
- setProperty(exchange.getContext(), language, "headerName", headerName);
+ map.put("headerName", headerName);
}
if (mode != 'i') {
- setProperty(exchange.getContext(), language, "mode", mode);
+ map.put("mode", mode);
}
if (group > 1) {
- setProperty(exchange.getContext(), language, "group", group);
+ map.put("group", group);
}
if (namespaces != null) {
- setProperty(exchange.getContext(), language, "namespaces", namespaces);
+ map.put("namespaces", namespaces);
}
- setProperty(exchange.getContext(), language, "path", path);
- return language.createExpression((String)null).evaluate(exchange, Object.class);
+ map.put("path", path);
+ return language.createExpression(map).evaluate(exchange, Object.class);
}
@Override
@@ -1677,12 +1682,4 @@ public class ExpressionBuilder {
};
}
- protected static void setProperty(CamelContext camelContext, Object bean, String name, Object value) {
- try {
- camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection().setProperty(camelContext, bean, name, value);
- } catch (Exception e) {
- throw new IllegalArgumentException("Failed to set property " + name + " on " + bean + ". Reason: " + e, e);
- }
- }
-
}