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 f85e00bc80d33ffb0fba9d4271e445eb06a148e7 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri Jan 19 12:34:03 2024 +0100 CAMEL-19749: EIPs should make it easy to use together with variables. --- .../deserializers/FromDefinitionDeserializer.java | 7 +++ .../OutputAwareFromDefinitionDeserializer.java | 8 +++ .../generated/resources/schema/camelYamlDsl.json | 9 ++++ .../apache/camel/dsl/yaml/FromVariableTest.groovy | 57 ++++++++++++++++++++++ 4 files changed, 81 insertions(+) diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java index 5e17eeff940..041eb98795a 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java @@ -38,6 +38,7 @@ import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.getDeseri order = YamlDeserializerResolver.ORDER_DEFAULT, properties = { @YamlProperty(name = "uri", type = "string", required = true), + @YamlProperty(name = "variable", type = "string"), @YamlProperty(name = "id", type = "string"), @YamlProperty(name = "description", type = "string"), @YamlProperty(name = "parameters", type = "object"), @@ -54,6 +55,7 @@ public class FromDefinitionDeserializer implements ConstructNode { String desc = null; String id = null; + String variable = null; if (node.getNodeType() == NodeType.MAPPING) { final MappingNode mn = (MappingNode) node; for (NodeTuple tuple : mn.getValue()) { @@ -67,6 +69,8 @@ public class FromDefinitionDeserializer implements ConstructNode { desc = asText(tuple.getValueNode()); } else if ("id".equals(key)) { id = asText(tuple.getValueNode()); + } else if ("variable".equals(key)) { + variable = asText(tuple.getValueNode()); } } } @@ -91,6 +95,9 @@ public class FromDefinitionDeserializer implements ConstructNode { if (id != null) { target.setId(id); } + if (variable != null) { + target.setVariable(variable); + } // enrich model with line number if (line != -1) { diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/OutputAwareFromDefinitionDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/OutputAwareFromDefinitionDeserializer.java index c356d78cbd2..b932c448e10 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/OutputAwareFromDefinitionDeserializer.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/OutputAwareFromDefinitionDeserializer.java @@ -36,6 +36,7 @@ import org.snakeyaml.engine.v2.nodes.NodeTuple; order = YamlDeserializerResolver.ORDER_DEFAULT, properties = { @YamlProperty(name = "uri", type = "string", required = true), + @YamlProperty(name = "variable", type = "string"), @YamlProperty(name = "id", type = "string"), @YamlProperty(name = "description", type = "string"), @YamlProperty(name = "parameters", type = "object"), @@ -69,6 +70,7 @@ public class OutputAwareFromDefinitionDeserializer extends YamlDeserializerBase< String uri = null; String id = null; String desc = null; + String variable = null; Map<String, Object> parameters = null; for (NodeTuple tuple : node.getValue()) { @@ -88,6 +90,9 @@ public class OutputAwareFromDefinitionDeserializer extends YamlDeserializerBase< case "uri": uri = asText(val); break; + case "variable": + variable = asText(val); + break; case "parameters": parameters = parseParameters(tuple); break; @@ -114,6 +119,9 @@ public class OutputAwareFromDefinitionDeserializer extends YamlDeserializerBase< if (desc != null) { from.setDescription(desc); } + if (variable != null) { + from.setVariable(variable); + } target.setDelegate(from); } } diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json index 5ab84e6d6ef..e4c6f9e3fdc 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json @@ -313,6 +313,9 @@ }, "uri" : { "type" : "string" + }, + "variable" : { + "type" : "string" } }, "required" : [ "steps", "uri" ] @@ -339,6 +342,9 @@ }, "uri" : { "type" : "string" + }, + "variable" : { + "type" : "string" } }, "required" : [ "steps", "uri" ] @@ -1961,6 +1967,9 @@ }, "uri" : { "type" : "string" + }, + "variable" : { + "type" : "string" } }, "required" : [ "steps", "uri" ] 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 new file mode 100644 index 00000000000..08eecb16ad2 --- /dev/null +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FromVariableTest.groovy @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.dsl.yaml + +import org.apache.camel.component.mock.MockEndpoint +import org.apache.camel.dsl.yaml.support.YamlTestSupport + +class FromVariableTest extends YamlTestSupport { + + def "fromVariable"() { + setup: + loadRoutes ''' + - from: + uri: "direct:start" + variable: "myKey" + steps: + - transform: + simple: "Bye ${body}" + - to: "mock:foo" + - setBody: + simple: "${variable:myKey}" + - to: "mock:result" + ''' + + withMock('mock:foo') { + expectedBodiesReceived 'Bye World' + } + withMock('mock:result') { + expectedBodiesReceived 'World' + } + + when: + context.start() + + withTemplate { + to('direct:start').withBody('World').send() + } + + then: + MockEndpoint.assertIsSatisfied(context) + } + +}