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 <[email protected]>
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));