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'
+            }
+        }
+    }
+
 }