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/03/28 11:49:19 UTC

(camel) branch main updated: CAMEL-20615: camel-yaml-dsl - Fix variableReceive when using route as top elemenet

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 d9e4e114947 CAMEL-20615: camel-yaml-dsl - Fix variableReceive when using route as top elemenet
d9e4e114947 is described below

commit d9e4e1149477142c756e7c428d825c8c4acc58d2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Mar 28 12:49:04 2024 +0100

    CAMEL-20615: camel-yaml-dsl - Fix variableReceive when using route as top elemenet
---
 .../apache/camel/dsl/yaml/common/YamlSupport.java  |  3 ++
 .../apache/camel/dsl/yaml/FromVariableTest.groovy  | 46 ++++++++++++++++++++++
 2 files changed, 49 insertions(+)

diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
index 1c2b53f465f..245f8f1b815 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
@@ -178,6 +178,9 @@ public final class YamlSupport {
                         // steps must be set on the route
                         setSteps(route, val);
                         break;
+                    case "variableReceive":
+                        // is handled in FromDefinitionSerializer
+                        break;
                     default:
                         throw new UnsupportedFieldException(val, key);
                 }
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FromVariableTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FromVariableTest.groovy
index 5112cb1a9ca..841751929f3 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FromVariableTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FromVariableTest.groovy
@@ -67,4 +67,50 @@ class FromVariableTest extends YamlTestSupport {
             MockEndpoint.assertIsSatisfied(context)
     }
 
+    def "routeFromVariable"() {
+        setup:
+        loadRoutes '''
+              - route:
+                  from:
+                    uri: "direct:start"
+                    variableReceive: "myKey"
+                    steps:
+                      - setHeader:
+                          name: foo
+                          constant: "456"
+                      - setHeader:
+                          name: bar
+                          constant: "Murphy"
+                      - transform:
+                          simple: "Bye ${body}"
+                      - to: "mock:foo"
+                      - setBody:
+                          simple: "${variable:myKey}"
+                      - to: "mock:result"
+            '''
+
+        withMock('mock:foo') {
+            expectedBodiesReceived 'Bye '
+            whenAnyExchangeReceived { e -> {
+                Map m = e.getVariable("header:myKey", Map.class)
+                Assertions.assertNotNull(m)
+                Assertions.assertEquals(1, m.size())
+                Assertions.assertEquals(123, m.get("foo"))
+            }}
+        }
+        withMock('mock:result') {
+            expectedBodiesReceived 'World'
+        }
+
+        when:
+        context.start()
+
+        withTemplate {
+            to('direct:start').withBody('World').withHeader("foo", 123).send()
+        }
+
+        then:
+        MockEndpoint.assertIsSatisfied(context)
+    }
+
 }