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


The following commit(s) were added to refs/heads/master by this push:
     new ed8d414  camel-core - Small optimize in simple when creating 
expression/predicate and not have tangle to the reifier.
ed8d414 is described below

commit ed8d41413464a1fa65b69dfb6042b4a5d8f50676
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Oct 21 10:28:46 2020 +0200

    camel-core - Small optimize in simple when creating expression/predicate 
and not have tangle to the reifier.
---
 .../org/apache/camel/builder/SimpleBuilder.java    |  6 ++--
 .../reifier/language/SimpleExpressionReifier.java  | 37 ++++------------------
 .../apache/camel/builder/NotifyBuilderTest.java    |  2 +-
 .../apache/camel/model/ChoiceDefinitionTest.java   |  2 +-
 .../apache/camel/processor/ValidateSimpleTest.java |  2 +-
 5 files changed, 13 insertions(+), 36 deletions(-)

diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/builder/SimpleBuilder.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/builder/SimpleBuilder.java
index 61a7c12..ee38e24 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/builder/SimpleBuilder.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/builder/SimpleBuilder.java
@@ -27,7 +27,7 @@ import org.apache.camel.support.PredicateToExpressionAdapter;
 import org.apache.camel.support.ScriptHelper;
 
 /**
- * Creates an {@link org.apache.camel.language.simple.Simple} language builder.
+ * Creates an Simple language builder.
  * <p/>
  * This builder is available in the Java DSL from the {@link RouteBuilder} 
which means that using simple language for
  * {@link Expression}s or {@link Predicate}s is very easy with the help of 
this builder.
@@ -147,6 +147,7 @@ public class SimpleBuilder implements Predicate, 
Expression, ExpressionResultTyp
             Expression exp;
             // and optional it be refer to an external script on the 
file/classpath
             if (ScriptHelper.hasExternalScript(resolve)) {
+                // TODO: Optimize to load this eager
                 exp = new Expression() {
                     @Override
                     public <T> T evaluate(Exchange exchange, Class<T> type) {
@@ -160,6 +161,7 @@ public class SimpleBuilder implements Predicate, 
Expression, ExpressionResultTyp
                         return text;
                     }
                 };
+                exp.init(context);
             } else {
                 exp = simple.createExpression(resolve);
                 exp.init(context);
@@ -175,7 +177,7 @@ public class SimpleBuilder implements Predicate, 
Expression, ExpressionResultTyp
 
     @Override
     public String toString() {
-        return "Simple: " + text;
+        return text;
     }
 
 }
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/SimpleExpressionReifier.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/SimpleExpressionReifier.java
index 66e1b78..3731ba3 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/SimpleExpressionReifier.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/SimpleExpressionReifier.java
@@ -17,7 +17,6 @@
 package org.apache.camel.reifier.language;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.RuntimeCamelException;
@@ -34,38 +33,16 @@ public class SimpleExpressionReifier extends 
ExpressionReifier<SimpleExpression>
 
     @Override
     public Expression createExpression() {
-        Expression expr = createBuilder().createExpression(camelContext);
-        return new Expression() {
-            @Override
-            public <T> T evaluate(Exchange exchange, Class<T> type) {
-                return expr.evaluate(exchange, type);
-            }
-
-            @Override
-            public String toString() {
-                return definition.getExpression();
-            }
-        };
+        return 
createBuilder(definition.getExpression()).createExpression(camelContext);
     }
 
     @Override
     public Predicate createPredicate() {
-        Predicate pred = createBuilder().createPredicate(camelContext);
-        return new Predicate() {
-            @Override
-            public boolean matches(Exchange exchange) {
-                return pred.matches(exchange);
-            }
-
-            @Override
-            public String toString() {
-                return definition.getExpression();
-            }
-        };
+        return 
createBuilder(definition.getExpression()).createPredicate(camelContext);
     }
 
-    protected SimpleBuilder createBuilder() {
-        String exp = parseString(definition.getExpression());
+    protected SimpleBuilder createBuilder(String expression) {
+        String exp = parseString(expression);
         // should be true by default
         boolean isTrim = parseBoolean(definition.getTrim(), true);
         if (exp != null && isTrim) {
@@ -80,14 +57,12 @@ public class SimpleExpressionReifier extends 
ExpressionReifier<SimpleExpression>
 
     @Override
     protected Expression createExpression(Language language, String exp) {
-        definition.setExpression(exp);
-        return createBuilder();
+        return createBuilder(exp);
     }
 
     @Override
     protected Predicate createPredicate(Language language, String exp) {
-        definition.setExpression(exp);
-        return createBuilder();
+        return createBuilder(exp);
     }
 
     @Override
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java 
b/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java
index a94e27c..6f7b4a3 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java
@@ -363,7 +363,7 @@ public class NotifyBuilderTest extends ContextTestSupport {
     public void testFilterWhenExchangeDone() throws Exception {
         NotifyBuilder notify = new 
NotifyBuilder(context).filter(body().contains("World")).whenDone(3).create();
 
-        assertEquals("filter(${body} contains World).whenDone(3)", 
notify.toString());
+        assertEquals("filter(body contains World).whenDone(3)", 
notify.toString());
 
         assertEquals(false, notify.matches());
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/model/ChoiceDefinitionTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/model/ChoiceDefinitionTest.java
index 4cceb1e..2a12b74 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/model/ChoiceDefinitionTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/model/ChoiceDefinitionTest.java
@@ -41,7 +41,7 @@ public class ChoiceDefinitionTest extends TestSupport {
         assertEquals(when1, choice.getOutputs().get(0));
         assertEquals(when2, choice.getOutputs().get(1));
         assertEquals(other, choice.getOutputs().get(2));
-        assertEquals("choice[when[{${body} contains Camel}],when[{${body} 
contains Donkey}],otherwise[]]", choice.getLabel());
+        assertEquals("choice[when[{body contains Camel}],when[{body contains 
Donkey}],otherwise[]]", choice.getLabel());
     }
 
     @Test
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java
index 06ee47d..cd8c6db 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java
@@ -60,7 +60,7 @@ public class ValidateSimpleTest extends ContextTestSupport {
         } catch (CamelExecutionException e) {
             // expected
             assertIsInstanceOf(PredicateValidationException.class, 
e.getCause());
-            String s = "Validation failed for Predicate[${body} contains 
'Camel'].";
+            String s = "Validation failed for Predicate[body contains Camel].";
             assertStringContains(e.getCause().getMessage(), s);
         }
 

Reply via email to