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 <claus.ib...@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) + } + }