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));