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/02 10:35:08 UTC

[camel] 03/04: CAMEL-15606: camel-core - Simple with bean function should resolve language once

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 eedd9a81941c72ea8428cac70c5fedd72c8e7d49
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 2 11:27:03 2020 +0200

    CAMEL-15606: camel-core - Simple with bean function should resolve language once
---
 .../camel/impl/engine/AbstractCamelContext.java     |  1 -
 .../camel/language/simple/SimpleLanguage.java       |  6 ++++--
 .../language/simple/SimplePredicateParser.java      |  3 ++-
 .../camel/language/simple/ast/BinaryExpression.java | 21 ++++++++++++++-------
 .../simple/ast/SimpleFunctionExpression.java        | 10 +++++-----
 .../camel/language/simple/ast/SimpleNode.java       |  6 +++---
 .../simple/SimpleBackwardsCompatibleTest.java       |  6 ++++--
 .../language/simple/SimpleParserExpressionTest.java |  9 ++++++---
 .../simple/SimpleParserPredicateInvalidTest.java    |  6 ++++--
 .../language/simple/SimpleParserPredicateTest.java  |  9 ++++++---
 .../simple/SimpleParserRegexpPredicateTest.java     |  3 ++-
 11 files changed, 50 insertions(+), 30 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 8e4e940..93c92b5 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -1638,7 +1638,6 @@ public abstract class AbstractCamelContext extends BaseService
     @Override
     public Language resolveLanguage(String language) {
         LOG.debug("Resolving language: {}", language);
-        System.out.println("Resolving language: " + language);
 
         Language answer;
         synchronized (languages) {
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
index 2f1e16d..b7e05ce 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
@@ -104,7 +104,8 @@ public class SimpleLanguage extends LanguageSupport implements StaticService {
 
             expression = loadResource(expression);
 
-            SimplePredicateParser parser = new SimplePredicateParser(getCamelContext(), expression, allowEscape, cacheExpression);
+            SimplePredicateParser parser
+                    = new SimplePredicateParser(getCamelContext(), expression, allowEscape, cacheExpression);
             answer = parser.parsePredicate();
 
             if (cachePredicate != null && answer != null) {
@@ -124,7 +125,8 @@ public class SimpleLanguage extends LanguageSupport implements StaticService {
 
             expression = loadResource(expression);
 
-            SimpleExpressionParser parser = new SimpleExpressionParser(getCamelContext(), expression, allowEscape, cacheExpression);
+            SimpleExpressionParser parser
+                    = new SimpleExpressionParser(getCamelContext(), expression, allowEscape, cacheExpression);
             answer = parser.parseExpression();
 
             if (cacheExpression != null && answer != null) {
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
index 392953b..6cc77d3 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
@@ -63,7 +63,8 @@ public class SimplePredicateParser extends BaseSimpleParser {
     // use caches to avoid re-parsing the same expressions over and over again
     private Map<String, Expression> cacheExpression;
 
-    public SimplePredicateParser(CamelContext camelContext, String expression, boolean allowEscape, Map<String, Expression> cacheExpression) {
+    public SimplePredicateParser(CamelContext camelContext, String expression, boolean allowEscape,
+                                 Map<String, Expression> cacheExpression) {
         super(camelContext, expression, allowEscape);
         this.cacheExpression = cacheExpression;
     }
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
index f0fbaeb..a995946 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
@@ -86,7 +86,8 @@ public class BinaryExpression extends BaseSimpleNode {
         } else if (operator == BinaryOperatorType.GT) {
             return createExpression(camelContext, leftExp, rightExp, PredicateBuilder.isGreaterThan(leftExp, rightExp));
         } else if (operator == BinaryOperatorType.GTE) {
-            return createExpression(camelContext, leftExp, rightExp, PredicateBuilder.isGreaterThanOrEqualTo(leftExp, rightExp));
+            return createExpression(camelContext, leftExp, rightExp,
+                    PredicateBuilder.isGreaterThanOrEqualTo(leftExp, rightExp));
         } else if (operator == BinaryOperatorType.LT) {
             return createExpression(camelContext, leftExp, rightExp, PredicateBuilder.isLessThan(leftExp, rightExp));
         } else if (operator == BinaryOperatorType.LTE) {
@@ -99,7 +100,8 @@ public class BinaryExpression extends BaseSimpleNode {
         } else if (operator == BinaryOperatorType.CONTAINS) {
             return createExpression(camelContext, leftExp, rightExp, PredicateBuilder.contains(leftExp, rightExp));
         } else if (operator == BinaryOperatorType.NOT_CONTAINS) {
-            return createExpression(camelContext, leftExp, rightExp, PredicateBuilder.not(PredicateBuilder.contains(leftExp, rightExp)));
+            return createExpression(camelContext, leftExp, rightExp,
+                    PredicateBuilder.not(PredicateBuilder.contains(leftExp, rightExp)));
         } else if (operator == BinaryOperatorType.CONTAINS_IGNORECASE) {
             return createExpression(camelContext, leftExp, rightExp, PredicateBuilder.containsIgnoreCase(leftExp, rightExp));
         } else if (operator == BinaryOperatorType.NOT_CONTAINS_IGNORECASE) {
@@ -122,7 +124,8 @@ public class BinaryExpression extends BaseSimpleNode {
         throw new SimpleParserException("Unknown binary operator " + operator, token.getIndex());
     }
 
-    private Expression createIsExpression(final CamelContext camelContext, final String expression, final Expression leftExp, final Expression rightExp) {
+    private Expression createIsExpression(
+            final CamelContext camelContext, final String expression, final Expression leftExp, final Expression rightExp) {
         return new Expression() {
             @Override
             public <T> T evaluate(Exchange exchange, Class<T> type) {
@@ -156,7 +159,8 @@ public class BinaryExpression extends BaseSimpleNode {
         };
     }
 
-    private Expression createRegexExpression(final CamelContext camelContext, final Expression leftExp, final Expression rightExp) {
+    private Expression createRegexExpression(
+            final CamelContext camelContext, final Expression leftExp, final Expression rightExp) {
         return new Expression() {
             @Override
             public <T> T evaluate(Exchange exchange, Class<T> type) {
@@ -176,7 +180,8 @@ public class BinaryExpression extends BaseSimpleNode {
         };
     }
 
-    private Expression createInExpression(final CamelContext camelContext, final Expression leftExp, final Expression rightExp) {
+    private Expression createInExpression(
+            final CamelContext camelContext, final Expression leftExp, final Expression rightExp) {
         return new Expression() {
             @Override
             public <T> T evaluate(Exchange exchange, Class<T> type) {
@@ -205,7 +210,8 @@ public class BinaryExpression extends BaseSimpleNode {
         };
     }
 
-    private Expression createRangeExpression(final CamelContext camelContext, final String expression, final Expression leftExp, final Expression rightExp) {
+    private Expression createRangeExpression(
+            final CamelContext camelContext, final String expression, final Expression leftExp, final Expression rightExp) {
         return new Expression() {
             @Override
             public <T> T evaluate(Exchange exchange, Class<T> type) {
@@ -241,7 +247,8 @@ public class BinaryExpression extends BaseSimpleNode {
         };
     }
 
-    private Expression createExpression(final CamelContext camelContext, final Expression left, final Expression right, final Predicate predicate) {
+    private Expression createExpression(
+            final CamelContext camelContext, final Expression left, final Expression right, final Predicate predicate) {
         return new Expression() {
             @Override
             public <T> T evaluate(Exchange exchange, Class<T> type) {
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index 5f848e3..12ddf6c 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -63,11 +63,11 @@ public class SimpleFunctionExpression extends LiteralExpression {
     /**
      * Creates a Camel {@link Expression} based on this model.
      *
-     * @param expression not in use
-     * @param strict     whether to throw exception if the expression
-     *                   was not a function, otherwise <tt>null</tt>
-     *                   is returned
-     * @return the created {@link Expression}
+     * @param  expression                                                   not in use
+     * @param  strict                                                       whether to throw exception if the expression
+     *                                                                      was not a function, otherwise <tt>null</tt>
+     *                                                                      is returned
+     * @return                                                              the created {@link Expression}
      * @throws org.apache.camel.language.simple.types.SimpleParserException should be thrown if error parsing the model
      */
     public Expression createExpression(CamelContext camelContext, String expression, boolean strict) {
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java
index afe5921..1bef48f 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java
@@ -36,9 +36,9 @@ public interface SimpleNode {
     /**
      * Creates a Camel {@link Expression} based on this model.
      *
-     * @param camelContext the camel context
-     * @param expression   the input string
-     * @return the created {@link Expression}
+     * @param  camelContext                                                 the camel context
+     * @param  expression                                                   the input string
+     * @return                                                              the created {@link Expression}
      * @throws org.apache.camel.language.simple.types.SimpleParserException should be thrown if error parsing the model
      */
     Expression createExpression(CamelContext camelContext, String expression) throws SimpleParserException;
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java
index 97a4a1c..7364925 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java
@@ -55,7 +55,8 @@ public class SimpleBackwardsCompatibleTest extends LanguageTestSupport {
         exchange.getIn().setHeader("high", true);
         exchange.getIn().setHeader("foo", 123);
 
-        SimplePredicateParser parser = new SimplePredicateParser(context, "${header.high} == true && ${header.foo} == 123", true, null);
+        SimplePredicateParser parser
+                = new SimplePredicateParser(context, "${header.high} == true && ${header.foo} == 123", true, null);
         Predicate pre = parser.parsePredicate();
 
         assertTrue(pre.matches(exchange), "Should match");
@@ -67,7 +68,8 @@ public class SimpleBackwardsCompatibleTest extends LanguageTestSupport {
         exchange.getIn().setHeader("high", true);
         exchange.getIn().setHeader("foo", 123);
 
-        SimplePredicateParser parser = new SimplePredicateParser(context, "${header.high} == false || ${header.foo} == 123", true, null);
+        SimplePredicateParser parser
+                = new SimplePredicateParser(context, "${header.high} == false || ${header.foo} == 123", true, null);
         Predicate pre = parser.parsePredicate();
 
         assertTrue(pre.matches(exchange), "Should match");
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java
index 31d5107..cf8e019 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java
@@ -64,7 +64,8 @@ public class SimpleParserExpressionTest extends ExchangeTestSupport {
     @Test
     public void testSimpleSingleQuoteWithFunctionBodyAs() throws Exception {
         exchange.getIn().setBody("World");
-        SimpleExpressionParser parser = new SimpleExpressionParser(context, "'Hello ${bodyAs(String)} how are you?'", true, null);
+        SimpleExpressionParser parser
+                = new SimpleExpressionParser(context, "'Hello ${bodyAs(String)} how are you?'", true, null);
         Expression exp = parser.parseExpression();
 
         assertEquals("'Hello World how are you?'", exp.evaluate(exchange, String.class));
@@ -216,7 +217,8 @@ public class SimpleParserExpressionTest extends ExchangeTestSupport {
         exchange.getIn().setHeader("JMSMessageID", "JMSMessageID-123");
         exchange.getIn().setBody("THE MSG ID ${header.JMSMessageID} isA --");
 
-        SimpleExpressionParser parser = new SimpleExpressionParser(context, "THE MSG ID ${header.JMSMessageID} isA --", true, null);
+        SimpleExpressionParser parser
+                = new SimpleExpressionParser(context, "THE MSG ID ${header.JMSMessageID} isA --", true, null);
         Expression exp = parser.parseExpression();
 
         assertEquals("THE MSG ID JMSMessageID-123 isA --", exp.evaluate(exchange, String.class));
@@ -240,7 +242,8 @@ public class SimpleParserExpressionTest extends ExchangeTestSupport {
         exchange.getIn().setBody("------------ THE MSG ID ${header.JMSMessageID} ------------");
 
         SimpleExpressionParser parser
-                = new SimpleExpressionParser(context, "------------ THE MSG ID ${header.JMSMessageID} ------------", true, null);
+                = new SimpleExpressionParser(
+                        context, "------------ THE MSG ID ${header.JMSMessageID} ------------", true, null);
         Expression exp = parser.parseExpression();
 
         assertEquals("------------ THE MSG ID JMSMessageID-123 ------------", exp.evaluate(exchange, String.class));
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java
index 56938c7..404ec9f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java
@@ -86,7 +86,8 @@ public class SimpleParserPredicateInvalidTest extends ExchangeTestSupport {
     public void testSimpleTwoAnd() throws Exception {
         exchange.getIn().setBody("foo");
 
-        SimplePredicateParser parser = new SimplePredicateParser(context, "${body} == 'foo' && && ${header} == 123", true, null);
+        SimplePredicateParser parser
+                = new SimplePredicateParser(context, "${body} == 'foo' && && ${header} == 123", true, null);
         try {
             parser.parsePredicate();
             fail("Should thrown exception");
@@ -99,7 +100,8 @@ public class SimpleParserPredicateInvalidTest extends ExchangeTestSupport {
     public void testSimpleTwoOr() throws Exception {
         exchange.getIn().setBody("foo");
 
-        SimplePredicateParser parser = new SimplePredicateParser(context, "${body} == 'foo' || || ${header} == 123", true, null);
+        SimplePredicateParser parser
+                = new SimplePredicateParser(context, "${body} == 'foo' || || ${header} == 123", true, null);
         try {
             parser.parsePredicate();
             fail("Should thrown exception");
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java
index 7fcb6f3..1068715 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java
@@ -146,7 +146,8 @@ public class SimpleParserPredicateTest extends ExchangeTestSupport {
         exchange.getIn().setHeader("high", true);
         exchange.getIn().setHeader("foo", 123);
 
-        SimplePredicateParser parser = new SimplePredicateParser(context, "${header.high} == true && ${header.foo} == 123", true, null);
+        SimplePredicateParser parser
+                = new SimplePredicateParser(context, "${header.high} == true && ${header.foo} == 123", true, null);
         Predicate pre = parser.parsePredicate();
 
         assertTrue(pre.matches(exchange), "Should match");
@@ -158,7 +159,8 @@ public class SimpleParserPredicateTest extends ExchangeTestSupport {
         exchange.getIn().setHeader("high", true);
         exchange.getIn().setHeader("foo", 123);
 
-        SimplePredicateParser parser = new SimplePredicateParser(context, "${header.high} == false || ${header.foo} == 123", true, null);
+        SimplePredicateParser parser
+                = new SimplePredicateParser(context, "${header.high} == false || ${header.foo} == 123", true, null);
         Predicate pre = parser.parsePredicate();
 
         assertTrue(pre.matches(exchange), "Should match");
@@ -171,7 +173,8 @@ public class SimpleParserPredicateTest extends ExchangeTestSupport {
         exchange.getIn().setHeader("foo", 123);
         exchange.getIn().setHeader("bar", "beer");
 
-        SimplePredicateParser parser = new SimplePredicateParser(context,
+        SimplePredicateParser parser = new SimplePredicateParser(
+                context,
                 "${header.high} == true && ${header.foo} == 123 && ${header.bar} == 'beer'", true, null);
         Predicate pre = parser.parsePredicate();
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserRegexpPredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserRegexpPredicateTest.java
index 35ec401..e954f8e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserRegexpPredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserRegexpPredicateTest.java
@@ -32,7 +32,8 @@ public class SimpleParserRegexpPredicateTest extends ExchangeTestSupport {
     public void testSimpleRegexp() throws Exception {
         exchange.getIn().setBody("12.34.5678");
 
-        SimplePredicateParser parser = new SimplePredicateParser(context, "${body} regex '^\\d{2}\\.\\d{2}\\.\\d{4}$'", true, null);
+        SimplePredicateParser parser
+                = new SimplePredicateParser(context, "${body} regex '^\\d{2}\\.\\d{2}\\.\\d{4}$'", true, null);
         Predicate pre = parser.parsePredicate();
 
         assertTrue(pre.matches(exchange));