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

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

commit 599cbb6413b35cda72f7bb3f208e9bb58a837e6c
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Dec 30 16:09:38 2023 +0100

    CAMEL-19749: Add variables as concept to Camel
---
 .../org/apache/camel/builder/BuilderSupport.java   | 34 +++++++++++++
 docs/user-manual/modules/ROOT/pages/variables.adoc | 58 +++++++++++++++++++++-
 2 files changed, 91 insertions(+), 1 deletion(-)

diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
index efd82afa711..1fabeee1813 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -124,18 +124,38 @@ public abstract class BuilderSupport implements 
CamelContextAware {
 
     /**
      * Returns a JOOR expression value builder
+     *
+     * @deprecated use java instead
      */
+    @Deprecated
     public ValueBuilder joor(String value) {
         return Builder.joor(value);
     }
 
     /**
      * Returns a JOOR expression value builder
+     *
+     * @deprecated use java instead
      */
+    @Deprecated
     public ValueBuilder joor(String value, Class<?> resultType) {
         return Builder.joor(value, resultType);
     }
 
+    /**
+     * Returns a Java expression value builder
+     */
+    public ValueBuilder java(String value) {
+        return Builder.java(value);
+    }
+
+    /**
+     * Returns a Java expression value builder
+     */
+    public ValueBuilder java(String value, Class<?> resultType) {
+        return Builder.java(value, resultType);
+    }
+
     /**
      * Returns a JSonPath expression value builder
      */
@@ -153,6 +173,20 @@ public abstract class BuilderSupport implements 
CamelContextAware {
         return Builder.jsonpath(value, resultType);
     }
 
+    /**
+     * Returns a JQ expression value builder
+     */
+    public ValueBuilder jq(String value) {
+        return Builder.jq(value);
+    }
+
+    /**
+     * Returns a JQ expression value builder
+     */
+    public ValueBuilder jq(String value, Class<?> resultType) {
+        return Builder.jq(value, resultType);
+    }
+
     /**
      * Returns a compiled simple expression value builder
      */
diff --git a/docs/user-manual/modules/ROOT/pages/variables.adoc 
b/docs/user-manual/modules/ROOT/pages/variables.adoc
index 4715d124d98..f3fb2e7f989 100644
--- a/docs/user-manual/modules/ROOT/pages/variables.adoc
+++ b/docs/user-manual/modules/ROOT/pages/variables.adoc
@@ -79,4 +79,60 @@ xref:components:eips:setVariable-eip.adoc[SetVariable], and 
xref:components:eips
 
 These EIPs makes it possible to set and remove variables from routes. And you 
can also access variables from the 
xref:components:languages:simple-language.adoc[Simple] language.
 
-TODO: Some examples here
+In the following route we set a variable on the exchange which we use later to 
build a human-readable event message:
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("kafka:order.in")
+  .setVariable("customerId", jq(".customer.custId"))
+  .setVariable("country", jq(".customer.address.co"))
+  .transform().simple("Order received from customer ${variable.customerId} in 
${variable.country}")
+  .to("kafka:order.event");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+    <from uri="kafka:order.in"/>
+    <setVariable name="customerId">
+        <jq>.customer.custId</jq>
+    </setVariable>
+    <setVariable name="country">
+        <jq>.customer.address.co</jq>
+    </setVariable>
+    <transform>
+        <simple>Order received from customer ${variable.customerId} in 
${variable.country}</simple>
+    </transform>
+    <to uri="kafka:order.event"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: kafka:order.in
+      steps:
+        - setVariable:
+            name: customerId
+            jq:
+              expression: .customer.custId
+        - setVariable:
+            name: country
+            jq:
+              expression: .customer.address.co
+        - transform:
+            simple:
+              expression: "Order received from customer ${variable.customerId} 
in ${variable.country}"
+        - to:
+            uri: kafka:order.event
+----
+====

Reply via email to