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 2022/08/10 07:18:07 UTC
[camel] branch camel-3.18.x updated: CAMEL-18375: camel-yaml-dsl - Added id and description to from
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.18.x by this push:
new 68adcfc9ba3 CAMEL-18375: camel-yaml-dsl - Added id and description to from
68adcfc9ba3 is described below
commit 68adcfc9ba376a833e94c8788c1a558a97cc1082
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Aug 10 09:17:33 2022 +0200
CAMEL-18375: camel-yaml-dsl - Added id and description to from
---
.../dsl/yaml/common/YamlDeserializerSupport.java | 2 +-
.../apache/camel/dsl/yaml/common/YamlSupport.java | 8 +++-
.../deserializers/FromDefinitionDeserializer.java | 20 +++++++-
.../OutputAwareFromDefinitionDeserializer.java | 22 +++++++--
.../generated/resources/schema/camel-yaml-dsl.json | 18 +++++++
.../generated/resources/schema/camelYamlDsl.json | 18 +++++++
.../org/apache/camel/dsl/yaml/RoutesTest.groovy | 55 ++++++++++++++++++++++
7 files changed, 136 insertions(+), 7 deletions(-)
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java
index 2fc3ecc78cd..a8f0d0632f8 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java
@@ -374,7 +374,7 @@ public class YamlDeserializerSupport {
return node;
}
- public static Map<String, Object> parseParameters(Block target, NodeTuple node) {
+ public static Map<String, Object> parseParameters(NodeTuple node) {
Node value = node.getValueNode();
final YamlDeserializationContext dc = getDeserializationContext(value);
Map<String, Object> answer = asScalarMap(value);
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 2676da4f0f9..ce8339d7420 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
@@ -224,11 +224,17 @@ public final class YamlSupport {
setDeserializationContext(val, dc);
switch (key) {
+ case "id":
+ // ignore
+ break;
+ case "description":
+ // ignore
+ break;
case "uri":
uri = asText(val);
break;
case "parameters":
- parameters = parseParameters(route, tuple);
+ parameters = parseParameters(tuple);
break;
case "steps":
// steps must be set on the route
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 fefa8052298..81ec92fb738 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
@@ -30,6 +30,7 @@ import org.snakeyaml.engine.v2.nodes.NodeTuple;
import org.snakeyaml.engine.v2.nodes.NodeType;
import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asText;
+import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asType;
import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.getDeserializationContext;
@YamlType(
@@ -38,6 +39,8 @@ import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.getDeseri
order = YamlDeserializerResolver.ORDER_DEFAULT,
properties = {
@YamlProperty(name = "uri", type = "string", required = true),
+ @YamlProperty(name = "id", type = "string"),
+ @YamlProperty(name = "description", type = "string"),
@YamlProperty(name = "parameters", type = "object"),
@YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition", required = true)
})
@@ -50,16 +53,21 @@ public class FromDefinitionDeserializer implements ConstructNode {
line = node.getStartMark().get().getLine();
}
- // we want the line number of the "uri" when using from
+ org.apache.camel.model.DescriptionDefinition desc = null;
+ String id = null;
if (node.getNodeType() == NodeType.MAPPING) {
final MappingNode mn = (MappingNode) node;
for (NodeTuple tuple : mn.getValue()) {
final String key = asText(tuple.getKeyNode());
if ("uri".equals(key)) {
+ // we want the line number of the "uri" when using from
if (tuple.getKeyNode().getStartMark().isPresent()) {
line = tuple.getKeyNode().getStartMark().get().getLine() + 1;
}
- break;
+ } else if ("description".equals(key)) {
+ desc = asType(tuple.getValueNode(), org.apache.camel.model.DescriptionDefinition.class);
+ } else if ("id".equals(key)) {
+ id = asText(tuple.getValueNode());
}
}
}
@@ -78,6 +86,13 @@ public class FromDefinitionDeserializer implements ConstructNode {
// set from as input on the route
route.setInput(target);
+ if (desc != null) {
+ target.setDescription(desc);
+ }
+ if (id != null) {
+ target.setId(id);
+ }
+
// enrich model with line number
if (line != -1) {
target.setLineNumber(line);
@@ -88,4 +103,5 @@ public class FromDefinitionDeserializer implements ConstructNode {
}
return target;
}
+
}
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 1b560bcc8cd..b3757ec10c3 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,8 @@ import org.snakeyaml.engine.v2.nodes.NodeTuple;
order = YamlDeserializerResolver.ORDER_DEFAULT,
properties = {
@YamlProperty(name = "uri", type = "string", required = true),
+ @YamlProperty(name = "id", type = "string"),
+ @YamlProperty(name = "description", type = "string"),
@YamlProperty(name = "parameters", type = "object"),
@YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition", required = true)
})
@@ -64,6 +66,8 @@ public class OutputAwareFromDefinitionDeserializer extends YamlDeserializerBase<
}
String uri = null;
+ String id = null;
+ org.apache.camel.model.DescriptionDefinition desc = null;
Map<String, Object> parameters = null;
for (NodeTuple tuple : node.getValue()) {
@@ -73,14 +77,20 @@ public class OutputAwareFromDefinitionDeserializer extends YamlDeserializerBase<
setDeserializationContext(val, dc);
switch (key) {
- case "steps":
- setSteps(target, val);
+ case "id":
+ id = asText(val);
+ break;
+ case "description":
+ desc = asType(val, org.apache.camel.model.DescriptionDefinition.class);
break;
case "uri":
uri = asText(val);
break;
case "parameters":
- parameters = parseParameters(target, tuple);
+ parameters = parseParameters(tuple);
+ break;
+ case "steps":
+ setSteps(target, val);
break;
default:
throw new UnsupportedFieldException(node, key);
@@ -96,6 +106,12 @@ public class OutputAwareFromDefinitionDeserializer extends YamlDeserializerBase<
from.setLineNumber(line);
from.setLocation(dc.getResource().getLocation());
}
+ if (id != null) {
+ from.setId(id);
+ }
+ if (desc != null) {
+ from.setDescription(desc);
+ }
target.setDelegate(from);
}
}
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camel-yaml-dsl.json b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camel-yaml-dsl.json
index e69696798ee..7630c7f567d 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camel-yaml-dsl.json
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camel-yaml-dsl.json
@@ -342,6 +342,12 @@
"org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition" : {
"type" : "object",
"properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string"
+ },
"parameters" : {
"type" : "object"
},
@@ -363,6 +369,12 @@
"$ref" : "#/items/definitions/org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition"
} ],
"properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string"
+ },
"parameters" : {
"type" : "object"
},
@@ -1001,6 +1013,12 @@
"org.apache.camel.model.FromDefinition" : {
"type" : "object",
"properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string"
+ },
"parameters" : {
"type" : "object"
},
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 c7b206791da..800351a0e61 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
@@ -249,6 +249,12 @@
"org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition" : {
"type" : "object",
"properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string"
+ },
"parameters" : {
"type" : "object"
},
@@ -270,6 +276,12 @@
"$ref" : "#/items/definitions/org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition"
} ],
"properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string"
+ },
"parameters" : {
"type" : "object"
},
@@ -905,6 +917,12 @@
"org.apache.camel.model.FromDefinition" : {
"type" : "object",
"properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string"
+ },
"parameters" : {
"type" : "object"
},
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy
index 9df266b0f33..00e25ad3545 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy
@@ -42,6 +42,30 @@ class RoutesTest extends YamlTestSupport {
}
}
+ def "load from description"() {
+ when:
+ loadRoutes '''
+ - from:
+ id: from-demo
+ description: from something cool
+ uri: "direct:info"
+ steps:
+ - log: "message"
+ '''
+ then:
+ context.routeDefinitions.size() == 1
+
+ with(context.routeDefinitions[0], RouteDefinition) {
+ input.id == 'from-demo'
+ input.description.text == 'from something cool'
+ input.endpointUri == 'direct:info'
+
+ with (outputs[0], LogDefinition) {
+ message == 'message'
+ }
+ }
+ }
+
def "load from with parameters"() {
when:
loadRoutes '''
@@ -221,4 +245,35 @@ class RoutesTest extends YamlTestSupport {
}
}
}
+
+ def "load route with from description"() {
+ when:
+ loadRoutes '''
+ - route:
+ id: demo-route
+ description: something cool
+ from:
+ id: from-demo
+ description: from something cool
+ uri: "direct:info"
+ steps:
+ - log: "message"
+ '''
+ then:
+ context.routeDefinitions.size() == 1
+
+ with(context.routeDefinitions[0], RouteDefinition) {
+ routeId == 'demo-route'
+ description.text == 'something cool'
+
+ input.id == 'from-demo'
+ input.description.text == 'from something cool'
+ input.endpointUri == 'direct:info'
+
+ with (outputs[0], LogDefinition) {
+ message == 'message'
+ }
+ }
+ }
+
}