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

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


The following commit(s) were added to refs/heads/main by this push:
     new c5d13eb711b CAMEL-21412: camel-test - Make it easy to use expression 
outside route builder (#16136)
c5d13eb711b is described below

commit c5d13eb711b9a8ce321be103dc6a78054c5b1864
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Oct 31 19:20:25 2024 +0100

    CAMEL-21412: camel-test - Make it easy to use expression outside route 
builder (#16136)
---
 .../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));

Reply via email to