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 91ddabd9fe0b010124f4439a4fa6019cd7f6a529 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Oct 3 10:25:45 2020 +0200 CAMEL-15627: Optimize to eager initialize language for expressions. --- .../java/org/apache/camel/language/spel/SpelLanguage.java | 12 ------------ .../src/main/java/org/apache/camel/spi/Language.java | 8 ++++++-- .../org/apache/camel/support/builder/ExpressionBuilder.java | 10 ++++++++-- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java b/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java index 30f29b42..1f6f550 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java +++ b/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java @@ -16,8 +16,6 @@ */ package org.apache.camel.language.spel; -import java.util.Map; - import org.apache.camel.Expression; import org.apache.camel.Predicate; import org.apache.camel.Service; @@ -51,16 +49,6 @@ public class SpelLanguage extends LanguageSupport implements Service { } @Override - public Predicate createPredicate(String expression, Map<String, Object> properties) { - return createPredicate(expression); - } - - @Override - public Expression createExpression(String expression, Map<String, Object> properties) { - return createExpression(expression); - } - - @Override public void init() { ObjectHelper.notNull(getCamelContext(), "CamelContext", this); diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/Language.java b/core/camel-api/src/main/java/org/apache/camel/spi/Language.java index 191ef86..a79a71d 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/Language.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/Language.java @@ -52,7 +52,9 @@ public interface Language { * @param properties configuration properties * @return the created predicate */ - Predicate createPredicate(String expression, Map<String, Object> properties); + default Predicate createPredicate(String expression, Map<String, Object> properties) { + return createPredicate(expression); + } /** * Creates an expression based on the input with properties @@ -64,5 +66,7 @@ public interface Language { * @param properties configuration properties * @return the created expression */ - Expression createExpression(String expression, Map<String, Object> properties); + default Expression createExpression(String expression, Map<String, Object> properties) { + return createExpression(expression); + } } 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 f07384a..0209ddf 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 @@ -1634,9 +1634,8 @@ public class ExpressionBuilder { public static Expression tokenizeXMLAwareExpression(String headerName, String path, char mode, int group, Namespaces namespaces) { StringHelper.notEmpty(path, "path"); return new ExpressionAdapter() { + private Language language; public Object evaluate(Exchange exchange) { - // TODO: resolve language early - Language language = exchange.getContext().resolveLanguage("xtokenize"); Map<String, Object> map = new HashMap<>(4); map.put("mode", mode); map.put("group", group); @@ -1650,6 +1649,13 @@ public class ExpressionBuilder { } @Override + public void init(CamelContext context) { + if (this.language == null) { + this.language = context.resolveLanguage("xtokenize"); + } + } + + @Override public String toString() { return "xtokenize(" + path + ")"; }