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/23 15:29:52 UTC
(camel) 02/19: CAMEL-19749: EIPs should make it easy to use together with variables.
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 <cl...@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)
+ }
+
+}