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 b1495dc845d CAMEL-20407: camel-datasonnet - Add support for variables
b1495dc845d is described below
commit b1495dc845d2f8cfd34f2c9d238a3ad6d8e75931
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon May 20 10:25:56 2024 +0200
CAMEL-20407: camel-datasonnet - Add support for variables
---
.../src/main/docs/datasonnet-language.adoc | 2 ++
.../org/apache/camel/language/datasonnet/CML.java | 10 +++++++++
.../language/datasonnet/CamelDatasonnetTest.java | 7 ++++++
.../camel/language.datasonnet/camel-context.xml | 26 ++++++++++++++++++++++
4 files changed, 45 insertions(+)
diff --git a/components/camel-datasonnet/src/main/docs/datasonnet-language.adoc
b/components/camel-datasonnet/src/main/docs/datasonnet-language.adoc
index 5020ed32f2a..1011870fae7 100644
--- a/components/camel-datasonnet/src/main/docs/datasonnet-language.adoc
+++ b/components/camel-datasonnet/src/main/docs/datasonnet-language.adoc
@@ -171,6 +171,8 @@ xref:ROOT:properties-component.adoc[Properties] component
(property placeholders
|cml.header |the header name |String |Will return the message header.
|cml.exchangeProperty |key for property |String |Will return the exchange
property.
+
+|cml.variable |the variable name |String |Will return the exchange variable.
|===
Here's an example showing some of these functions in use:
diff --git
a/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/CML.java
b/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/CML.java
index 756bacfbc3b..e759f5b978c 100644
---
a/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/CML.java
+++
b/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/CML.java
@@ -66,6 +66,9 @@ public final class CML extends Library {
answer.put("header", makeSimpleFunc(
Collections.singletonList("key"), //parameters list
params -> header(params.get(0), dataFormats)));
+ answer.put("variable", makeSimpleFunc(
+ Collections.singletonList("key"), //parameters list
+ params -> variable(params.get(0), dataFormats)));
answer.put("exchangeProperty", makeSimpleFunc(
Collections.singletonList("key"), //parameters list
params -> exchangeProperty(params.get(0), dataFormats)));
@@ -91,6 +94,13 @@ public final class CML extends Library {
throw new IllegalArgumentException("Expected String got: " +
key.prettyName());
}
+ private Val variable(Val key, DataFormatService dataformats) {
+ if (key instanceof Val.Str) {
+ return valFrom(exchange.get().getVariable(((Val.Str)
key).value()), dataformats);
+ }
+ throw new IllegalArgumentException("Expected String got: " +
key.prettyName());
+ }
+
private Val exchangeProperty(Val key, DataFormatService dataformats) {
if (key instanceof Val.Str) {
return valFrom(exchange.get().getProperty(((Val.Str)
key).value()), dataformats);
diff --git
a/components/camel-datasonnet/src/test/java/org/apache/camel/language/datasonnet/CamelDatasonnetTest.java
b/components/camel-datasonnet/src/test/java/org/apache/camel/language/datasonnet/CamelDatasonnetTest.java
index 22486236499..3b0251cda88 100644
---
a/components/camel-datasonnet/src/test/java/org/apache/camel/language/datasonnet/CamelDatasonnetTest.java
+++
b/components/camel-datasonnet/src/test/java/org/apache/camel/language/datasonnet/CamelDatasonnetTest.java
@@ -85,6 +85,13 @@ public class CamelDatasonnetTest extends
CamelSpringTestSupport {
"direct:expressionLanguage");
}
+ @Test
+ public void testVariable() throws Exception {
+ runCamelTest("World",
+ "{ \"test\":\"Hello, World\"}",
+ "direct:variable");
+ }
+
@Test
public void testNullInput() throws Exception {
runCamelTest("",
diff --git
a/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
b/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
index a7ca6d87cdc..055885542b4 100644
---
a/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
+++
b/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
@@ -165,6 +165,32 @@
<to uri="mock:direct:end"/>
</route>
+ <route id="variable">
+ <from uri="direct:variable"/>
+
+ <setHeader name="CamelDatasonnetOutputMediaType">
+ <constant>text/plain</constant>
+ </setHeader>
+ <setVariable name="HelloVar">
+ <language language="datasonnet">"Hello, " + payload</language>
+ </setVariable>
+
+ <setHeader name="CamelDatasonnetOutputMediaType">
+ <constant>application/json</constant>
+ </setHeader>
+ <setBody>
+ <language language="datasonnet">
+ <![CDATA[
+ {
+ test: cml.variable('HelloVar')
+ }
+ ]]>
+ </language>
+ </setBody>
+
+ <to uri="mock:direct:end"/>
+ </route>
+
<route id="nullInput">
<from uri="direct:nullInput"/>
<setBody>