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:50 UTC
[camel] 03/04: CAMEL-15627: Optimize to eager initialize language
for expressions.
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 <cl...@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 + ")";
}