You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/01/24 18:31:08 UTC

(camel) 01/02: CAMEL-20359: camel-groovy - Consistent name to refer to exchangeProperties. Note this will also apply to other template based components like freemarker.

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

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

commit 67a38be2f0ecbb041d41860da1a4ff15a019d48c
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jan 24 19:28:27 2024 +0100

    CAMEL-20359: camel-groovy - Consistent name to refer to exchangeProperties. Note this will also apply to other template based components like freemarker.
---
 .../src/main/docs/groovy-language.adoc             | 27 ++++++++++++++++++++++
 .../camel/language/groovy/GroovyLanguageTest.java  | 12 ++++++++++
 .../org/apache/camel/support/ExchangeHelper.java   |  1 +
 3 files changed, 40 insertions(+)

diff --git a/components/camel-groovy/src/main/docs/groovy-language.adoc b/components/camel-groovy/src/main/docs/groovy-language.adoc
index 7a5765eecd9..82250fd595d 100644
--- a/components/camel-groovy/src/main/docs/groovy-language.adoc
+++ b/components/camel-groovy/src/main/docs/groovy-language.adoc
@@ -54,6 +54,33 @@ And in XML DSL:
 </route>
 ----
 
+== Groovy Context
+
+Camel will provide exchange information in the Groovy context (just
+a `Map`). The `Exchange` is transferred as:
+
+[width="100%",cols="50%,50%",options="header",]
+|=======================================================================
+|key |value
+
+|`exchange` |The `Exchange` itself.
+
+|`exchangeProperties` |The `Exchange` properties.
+
+|`variables` |The variables
+
+|`headers` |The headers of the In message.
+
+|`camelContext` |The Camel Context.
+
+|`request` |The In message.
+
+|`body` |The In message body.
+
+|`response` |The Out message (only for InOut message exchange pattern).
+|=======================================================================
+
+
 == How to get the result from multiple statements script
 
 As the Groovy script engine evaluate method just return a `Null` if it runs a
diff --git a/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyLanguageTest.java b/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyLanguageTest.java
index 4e5aadfc201..dbf9968df54 100644
--- a/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyLanguageTest.java
+++ b/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyLanguageTest.java
@@ -28,6 +28,18 @@ public class GroovyLanguageTest extends LanguageTestSupport {
         assertExpression("headers.foo", "abc");
     }
 
+    @Test
+    public void testGroovyExchangeProperty() {
+        exchange.setProperty("myProp1", "myValue");
+        exchange.setProperty("myProp2", 123);
+
+        assertExpression("exchange.properties.myProp1", "myValue");
+        assertExpression("exchange.properties.myProp2", 123);
+
+        assertExpression("exchangeProperties.myProp1", "myValue");
+        assertExpression("exchangeProperties.myProp2", 123);
+    }
+
     @Override
     protected String getLanguageName() {
         return "groovy";
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
index f1bd96981c1..d55f4e1ce57 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
@@ -481,6 +481,7 @@ public final class ExchangeHelper {
             map.put("in", in);
             map.put("request", in);
             map.put("exchange", exchange);
+            map.put("exchangeProperties", exchange.getAllProperties());
             if (isOutCapable(exchange)) {
                 // if we are out capable then set out and response as well
                 // however only grab OUT if it exists, otherwise reuse IN