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 2024/10/31 17:27:19 UTC

(camel) branch tb created (now 2b6e381cf17)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch tb
in repository https://gitbox.apache.org/repos/asf/camel.git


      at 2b6e381cf17 CAMEL-21412: camel-test - Make it easy to use expression outside route builder

This branch includes the following new commits:

     new 2b6e381cf17 CAMEL-21412: camel-test - Make it easy to use expression outside route builder

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel) 01/01: CAMEL-21412: camel-test - Make it easy to use expression outside route builder

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch tb
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2b6e381cf179ac7daba3fd9f5679da113c2d2da7
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Oct 31 18:26:55 2024 +0100

    CAMEL-21412: camel-test - Make it easy to use expression outside route builder
---
 .../camel/builder/LanguageBuilderFactory.java      | 252 ++++++++++++++++++++-
 .../camel/model/language/ConstantExpression.java   |  11 +
 .../camel/issues/MockExpectedHeaderXPathTest.java  |   2 +-
 3 files changed, 261 insertions(+), 4 deletions(-)

diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/LanguageBuilderFactory.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/LanguageBuilderFactory.java
index ec59df20ee1..17eb16f7b22 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/LanguageBuilderFactory.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/LanguageBuilderFactory.java
@@ -55,6 +55,15 @@ public final class LanguageBuilderFactory {
         return new ConstantExpression.Builder();
     }
 
+    /**
+     * Uses the Constant language
+     */
+    public ConstantExpression.Builder constant(Object value) {
+        var builder = constant();
+        builder.value(value);
+        return builder;
+    }
+
     /**
      * Uses the CSimple language
      */
@@ -62,6 +71,15 @@ public final class LanguageBuilderFactory {
         return new CSimpleExpression.Builder();
     }
 
+    /**
+     * Uses the CSimple language
+     */
+    public CSimpleExpression.Builder csimple(String expression) {
+        var builder = csimple();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Datasonnet language
      */
@@ -69,6 +87,15 @@ public final class LanguageBuilderFactory {
         return new DatasonnetExpression.Builder();
     }
 
+    /**
+     * Uses the Datasonnet language
+     */
+    public DatasonnetExpression.Builder datasonnet(String expression) {
+        var builder = datasonnet();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the ExchangeProperty language
      */
@@ -76,6 +103,15 @@ public final class LanguageBuilderFactory {
         return new ExchangePropertyExpression.Builder();
     }
 
+    /**
+     * Uses the ExchangeProperty language
+     */
+    public ExchangePropertyExpression.Builder exchangeProperty(String name) {
+        var builder = exchangeProperty();
+        builder.expression(name);
+        return builder;
+    }
+
     /**
      * Uses the Groovy language
      */
@@ -83,6 +119,15 @@ public final class LanguageBuilderFactory {
         return new GroovyExpression.Builder();
     }
 
+    /**
+     * Uses the Groovy language
+     */
+    public GroovyExpression.Builder groovy(String expression) {
+        var builder = groovy();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Header language
      */
@@ -90,6 +135,15 @@ public final class LanguageBuilderFactory {
         return new HeaderExpression.Builder();
     }
 
+    /**
+     * Uses the Header language
+     */
+    public HeaderExpression.Builder header(String name) {
+        var builder = header();
+        builder.expression(name);
+        return builder;
+    }
+
     /**
      * Uses the Hl7Terser language
      */
@@ -97,6 +151,15 @@ public final class LanguageBuilderFactory {
         return new Hl7TerserExpression.Builder();
     }
 
+    /**
+     * Uses the Hl7Terser language
+     */
+    public Hl7TerserExpression.Builder hl7terser(String expression) {
+        var builder = hl7terser();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the JavaScript language
      */
@@ -104,6 +167,15 @@ public final class LanguageBuilderFactory {
         return new JavaScriptExpression.Builder();
     }
 
+    /**
+     * Uses the JavaScript language
+     */
+    public JavaScriptExpression.Builder js(String expression) {
+        var builder = js();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Java language
      */
@@ -111,6 +183,15 @@ public final class LanguageBuilderFactory {
         return new JavaExpression.Builder();
     }
 
+    /**
+     * Uses the Java language
+     */
+    public JavaExpression.Builder java(String expression) {
+        var builder = java();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the JOOR language
      */
@@ -126,6 +207,15 @@ public final class LanguageBuilderFactory {
         return new JqExpression.Builder();
     }
 
+    /**
+     * Uses the JQ language
+     */
+    public JqExpression.Builder jq(String expression) {
+        var builder = jq();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the JsonPath language
      */
@@ -133,6 +223,15 @@ public final class LanguageBuilderFactory {
         return new JsonPathExpression.Builder();
     }
 
+    /**
+     * Uses the JsonPath language
+     */
+    public JsonPathExpression.Builder jsonpath(String expression) {
+        var builder = jsonpath();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses a custom language
      */
@@ -141,26 +240,82 @@ public final class LanguageBuilderFactory {
     }
 
     /**
-     * Uses the MethodCall language
+     * Uses a custom language
+     */
+    public LanguageExpression.Builder language(String language, String expression) {
+        var builder = language();
+        builder.language(language);
+        builder.expression(expression);
+        return builder;
+    }
+
+    /**
+     * Uses the bean language
      */
     public MethodCallExpression.Builder bean() {
         return new MethodCallExpression.Builder();
     }
 
     /**
-     * Uses the Mvel language
+     * Uses the bean language
+     */
+    public MethodCallExpression.Builder bean(String ref) {
+        var builder = bean();
+        builder.ref(ref);
+        return builder;
+    }
+
+    /**
+     * Uses the bean language
+     */
+    public MethodCallExpression.Builder bean(Class<?> beanType) {
+        var builder = bean();
+        builder.beanType(beanType);
+        return builder;
+    }
+
+    /**
+     * Uses the bean language
+     */
+    public MethodCallExpression.Builder bean(Object instance) {
+        var builder = bean();
+        builder.instance(instance);
+        return builder;
+    }
+
+    /**
+     * Uses the MVEL language
      */
     public MvelExpression.Builder mvel() {
         return new MvelExpression.Builder();
     }
 
     /**
-     * Uses the Ognl language
+     * Uses the MVEL language
+     */
+    public MvelExpression.Builder mvel(String expression) {
+        var builder = mvel();
+        builder.expression(expression);
+        return builder;
+
+    }
+
+    /**
+     * Uses the OGNL language
      */
     public OgnlExpression.Builder ognl() {
         return new OgnlExpression.Builder();
     }
 
+    /**
+     * Uses the OGNL language
+     */
+    public OgnlExpression.Builder ognl(String expression) {
+        var builder = ognl();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Python language
      */
@@ -168,6 +323,15 @@ public final class LanguageBuilderFactory {
         return new PythonExpression.Builder();
     }
 
+    /**
+     * Uses the Python language
+     */
+    public PythonExpression.Builder python(String expression) {
+        var builder = python();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Ref language
      */
@@ -175,6 +339,15 @@ public final class LanguageBuilderFactory {
         return new RefExpression.Builder();
     }
 
+    /**
+     * Uses the Ref language
+     */
+    public RefExpression.Builder ref(String ref) {
+        var builder = ref();
+        builder.expression(ref);
+        return builder;
+    }
+
     /**
      * Uses the Simple language
      */
@@ -182,6 +355,15 @@ public final class LanguageBuilderFactory {
         return new SimpleExpression.Builder();
     }
 
+    /**
+     * Uses the Simple language
+     */
+    public SimpleExpression.Builder simple(String expression) {
+        var builder = simple();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the SpEL language
      */
@@ -189,6 +371,15 @@ public final class LanguageBuilderFactory {
         return new SpELExpression.Builder();
     }
 
+    /**
+     * Uses the SpEL language
+     */
+    public SpELExpression.Builder spel(String expression) {
+        var builder = spel();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Tokenizer language
      */
@@ -196,6 +387,15 @@ public final class LanguageBuilderFactory {
         return new TokenizerExpression.Builder();
     }
 
+    /**
+     * Uses the Tokenizer language
+     */
+    public TokenizerExpression.Builder tokenize(String expression) {
+        var builder = tokenize();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Variable language
      */
@@ -203,6 +403,15 @@ public final class LanguageBuilderFactory {
         return new VariableExpression.Builder();
     }
 
+    /**
+     * Uses the Variable language
+     */
+    public VariableExpression.Builder variable(String name) {
+        var builder = variable();
+        builder.expression(name);
+        return builder;
+    }
+
     /**
      * Uses the XMLTokenizer language
      */
@@ -210,6 +419,15 @@ public final class LanguageBuilderFactory {
         return new XMLTokenizerExpression.Builder();
     }
 
+    /**
+     * Uses the XMLTokenizer language
+     */
+    public XMLTokenizerExpression.Builder xtokenize(String expression) {
+        var builder = xtokenize();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the XPath language
      */
@@ -217,6 +435,15 @@ public final class LanguageBuilderFactory {
         return new XPathExpression.Builder();
     }
 
+    /**
+     * Uses the XPath language
+     */
+    public XPathExpression.Builder xpath(String expression) {
+        var builder = xpath();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the XQuery language
      */
@@ -224,10 +451,29 @@ public final class LanguageBuilderFactory {
         return new XQueryExpression.Builder();
     }
 
+    /**
+     * Uses the XQuery language
+     */
+    public XQueryExpression.Builder xquery(String expression) {
+        var builder = xquery();
+        builder.expression(expression);
+        return builder;
+    }
+
     /**
      * Uses the Wasm language
      */
     public WasmExpression.Builder wasm() {
         return new WasmExpression.Builder();
     }
+
+    /**
+     * Uses the Wasm language
+     */
+    public WasmExpression.Builder wasm(String module, String expression) {
+        var builder = wasm();
+        builder.module(module);
+        builder.expression(expression);
+        return builder;
+    }
 }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/language/ConstantExpression.java b/core/camel-core-model/src/main/java/org/apache/camel/model/language/ConstantExpression.java
index 621d5a112dd..493983c9f86 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/language/ConstantExpression.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/language/ConstantExpression.java
@@ -21,6 +21,7 @@ import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;
 
+import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.spi.Metadata;
 
 /**
@@ -44,6 +45,9 @@ public class ConstantExpression extends TypedExpressionDefinition {
 
     private ConstantExpression(Builder builder) {
         super(builder);
+        if (builder.value != null) {
+            setExpressionValue(ExpressionBuilder.constantExpression(builder.value));
+        }
     }
 
     @Override
@@ -62,6 +66,13 @@ public class ConstantExpression extends TypedExpressionDefinition {
     @XmlTransient
     public static class Builder extends AbstractBuilder<Builder, ConstantExpression> {
 
+        private Object value;
+
+        public Builder value(Object value) {
+            this.value = value;
+            return this;
+        }
+
         @Override
         public ConstantExpression end() {
             return new ConstantExpression(this);
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/MockExpectedHeaderXPathTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/MockExpectedHeaderXPathTest.java
index 0d71d912634..07d7ade49b0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/MockExpectedHeaderXPathTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/MockExpectedHeaderXPathTest.java
@@ -35,7 +35,7 @@ public class MockExpectedHeaderXPathTest extends ContextTestSupport {
         mock.expectedMessageCount(3);
 
         // xpath that takes input from a header
-        var xpath = expression().xpath().expression("/person[@name='James']").source("header:cheese").end();
+        var xpath = expression().xpath("/person[@name='James']").source("header:cheese").end();
 
         // validate that some of the headers match and others do not
         mock.message(0).predicate(not(xpath));