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/12/12 20:54:01 UTC

[camel] 02/02: CAMEL-18748: camel-yaml-dsl - Add missing route-configuration in yaml schema. Fixed route-configuration to be correct.

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

commit 70e2897f80fbe807a6c19b82df2a13ff606547ef
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Dec 12 21:50:57 2022 +0100

    CAMEL-18748: camel-yaml-dsl - Add missing route-configuration in yaml schema. Fixed route-configuration to be correct.
---
 .../dsl/yaml/common/YamlDeserializerSupport.java   |  12 +++
 .../RouteConfigurationDefinitionDeserializer.java  | 101 ++++++++++-----------
 .../generated/resources/schema/camel-yaml-dsl.json |  84 ++++++++---------
 .../generated/resources/schema/camelYamlDsl.json   |  84 ++++++++---------
 .../camel/dsl/yaml/RouteConfigurationTest.groovy   | 100 ++++++++++----------
 5 files changed, 193 insertions(+), 188 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 a8f0d0632f8..c5a9f3c1300 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
@@ -279,6 +279,13 @@ public class YamlDeserializerSupport {
         return answer;
     }
 
+    public static <T> List<T> asList(Node node, Class<T> type) throws YamlDeserializationException {
+        List<T> answer = new ArrayList<>();
+        asCollection(node, type, answer);
+
+        return answer;
+    }
+
     public static <T> Set<T> asFlatSet(Node node, Class<T> type) throws YamlDeserializationException {
         Set<T> answer = new HashSet<>();
         asFlatCollection(node, type, answer);
@@ -291,6 +298,11 @@ public class YamlDeserializerSupport {
         asCollection(node, type, collection, true);
     }
 
+    public static <T> void asCollection(Node node, Class<T> type, Collection<T> collection)
+            throws YamlDeserializationException {
+        asCollection(node, type, collection, false);
+    }
+
     private static <T> void asCollection(Node node, Class<T> type, Collection<T> collection, boolean flat)
             throws YamlDeserializationException {
         if (node.getNodeType() != NodeType.SEQUENCE) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteConfigurationDefinitionDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteConfigurationDefinitionDeserializer.java
index 528358bda93..996bd7abd49 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteConfigurationDefinitionDeserializer.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteConfigurationDefinitionDeserializer.java
@@ -27,6 +27,7 @@ import org.apache.camel.model.InterceptSendToEndpointDefinition;
 import org.apache.camel.model.OnCompletionDefinition;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.model.RouteConfigurationDefinition;
+import org.apache.camel.model.RouteTemplateParameterDefinition;
 import org.apache.camel.spi.annotations.YamlIn;
 import org.apache.camel.spi.annotations.YamlProperty;
 import org.apache.camel.spi.annotations.YamlType;
@@ -35,9 +36,11 @@ import org.snakeyaml.engine.v2.nodes.Node;
 import org.snakeyaml.engine.v2.nodes.NodeTuple;
 import org.snakeyaml.engine.v2.nodes.SequenceNode;
 
+import java.util.List;
+
 @YamlIn
 @YamlType(
-          inline = true,
+          inline = false,
           types = org.apache.camel.model.RouteConfigurationDefinition.class,
           order = YamlDeserializerResolver.ORDER_DEFAULT,
           nodes = { "route-configuration", "routeConfiguration" },
@@ -67,60 +70,52 @@ public class RouteConfigurationDefinitionDeserializer extends YamlDeserializerBa
         final RouteConfigurationDefinition target = newInstance();
 
         final YamlDeserializationContext dc = getDeserializationContext(node);
-        final SequenceNode sn = asSequenceNode(node);
-        for (Node item : sn.getValue()) {
-            final MappingNode bn = asMappingNode(item);
-            setDeserializationContext(item, dc);
+        final MappingNode bn = asMappingNode(node);
+        setDeserializationContext(node, dc);
 
-            for (NodeTuple tuple : bn.getValue()) {
-                final String key = asText(tuple.getKeyNode());
-                final Node val = tuple.getValueNode();
-                switch (key) {
-                    case "id": {
-                        target.setId(asText(val));
-                        break;
-                    }
-                    case "precondition":
-                        target.setPrecondition(asText(val));
-                        break;
-                    case "errorHandler":
-                    case "error-handler":
-                        setDeserializationContext(val, dc);
-                        ErrorHandlerDefinition ehd = asType(val, ErrorHandlerDefinition.class);
-                        target.setErrorHandler(ehd);
-                        break;
-                    case "onException":
-                    case "on-exception":
-                        setDeserializationContext(val, dc);
-                        OnExceptionDefinition oed = asType(val, OnExceptionDefinition.class);
-                        target.getOnExceptions().add(oed);
-                        break;
-                    case "onCompletion":
-                    case "on-completion":
-                        setDeserializationContext(val, dc);
-                        OnCompletionDefinition ocd = asType(val, OnCompletionDefinition.class);
-                        target.getOnCompletions().add(ocd);
-                        break;
-                    case "intercept":
-                        setDeserializationContext(val, dc);
-                        InterceptDefinition id = asType(val, InterceptDefinition.class);
-                        target.getIntercepts().add(id);
-                        break;
-                    case "interceptFrom":
-                    case "intercept-from":
-                        setDeserializationContext(val, dc);
-                        InterceptFromDefinition ifd = asType(val, InterceptFromDefinition.class);
-                        target.getInterceptFroms().add(ifd);
-                        break;
-                    case "interceptSendToEndpoint":
-                    case "intercept-send-to-endpoint":
-                        setDeserializationContext(val, dc);
-                        InterceptSendToEndpointDefinition isted = asType(val, InterceptSendToEndpointDefinition.class);
-                        target.getInterceptSendTos().add(isted);
-                        break;
-                    default:
-                        throw new UnsupportedFieldException(val, key);
+        for (NodeTuple tuple : bn.getValue()) {
+            final String key = asText(tuple.getKeyNode());
+            final Node val = tuple.getValueNode();
+            switch (key) {
+                case "id": {
+                    target.setId(asText(val));
+                    break;
                 }
+                case "precondition":
+                    target.setPrecondition(asText(val));
+                    break;
+                case "errorHandler":
+                case "error-handler":
+                    setDeserializationContext(val, dc);
+                    ErrorHandlerDefinition ehd = asType(val, ErrorHandlerDefinition.class);
+                    target.setErrorHandler(ehd);
+                    break;
+                case "onException":
+                case "on-exception":
+                    setDeserializationContext(val, dc);
+                    target.setOnExceptions(asList(val, OnExceptionDefinition.class));
+                    break;
+                case "onCompletion":
+                case "on-completion":
+                    setDeserializationContext(val, dc);
+                    target.setOnCompletions(asList(val, OnCompletionDefinition.class));
+                    break;
+                case "intercept":
+                    setDeserializationContext(val, dc);
+                    target.setIntercepts(asList(val, InterceptDefinition.class));
+                    break;
+                case "interceptFrom":
+                case "intercept-from":
+                    setDeserializationContext(val, dc);
+                    target.setInterceptFroms(asList(val, InterceptFromDefinition.class));
+                    break;
+                case "interceptSendToEndpoint":
+                case "intercept-send-to-endpoint":
+                    setDeserializationContext(val, dc);
+                    target.setInterceptSendTos(asList(val, InterceptSendToEndpointDefinition.class));
+                    break;
+                default:
+                    throw new UnsupportedFieldException(val, key);
             }
         }
 
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 155ff485ef4..0db1e83e3a0 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
@@ -2481,52 +2481,48 @@
         "required" : [ "ref" ]
       },
       "org.apache.camel.model.RouteConfigurationDefinition" : {
-        "oneOf" : [ {
-          "type" : "string"
-        }, {
-          "type" : "object",
-          "properties" : {
-            "error-handler" : {
-              "$ref" : "#/items/definitions/org.apache.camel.model.ErrorHandlerDefinition"
-            },
-            "id" : {
-              "type" : "string"
-            },
-            "intercept" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.InterceptDefinition"
-              }
-            },
-            "intercept-from" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.InterceptFromDefinition"
-              }
-            },
-            "intercept-send-to-endpoint" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.InterceptSendToEndpointDefinition"
-              }
-            },
-            "on-completion" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.OnCompletionDefinition"
-              }
-            },
-            "on-exception" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
-              }
-            },
-            "precondition" : {
-              "type" : "string"
+        "type" : "object",
+        "properties" : {
+          "error-handler" : {
+            "$ref" : "#/items/definitions/org.apache.camel.model.ErrorHandlerDefinition"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "intercept" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.InterceptDefinition"
+            }
+          },
+          "intercept-from" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.InterceptFromDefinition"
             }
+          },
+          "intercept-send-to-endpoint" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.InterceptSendToEndpointDefinition"
+            }
+          },
+          "on-completion" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.OnCompletionDefinition"
+            }
+          },
+          "on-exception" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
+            }
+          },
+          "precondition" : {
+            "type" : "string"
           }
-        } ]
+        }
       },
       "org.apache.camel.model.RouteContextRefDefinition" : {
         "oneOf" : [ {
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 37f021f463b..3c96a564f95 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
@@ -2385,52 +2385,48 @@
         "required" : [ "ref" ]
       },
       "org.apache.camel.model.RouteConfigurationDefinition" : {
-        "oneOf" : [ {
-          "type" : "string"
-        }, {
-          "type" : "object",
-          "properties" : {
-            "errorHandler" : {
-              "$ref" : "#/items/definitions/org.apache.camel.model.ErrorHandlerDefinition"
-            },
-            "id" : {
-              "type" : "string"
-            },
-            "intercept" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.InterceptDefinition"
-              }
-            },
-            "interceptFrom" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.InterceptFromDefinition"
-              }
-            },
-            "interceptSendToEndpoint" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.InterceptSendToEndpointDefinition"
-              }
-            },
-            "onCompletion" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.OnCompletionDefinition"
-              }
-            },
-            "onException" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : "#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
-              }
-            },
-            "precondition" : {
-              "type" : "string"
+        "type" : "object",
+        "properties" : {
+          "errorHandler" : {
+            "$ref" : "#/items/definitions/org.apache.camel.model.ErrorHandlerDefinition"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "intercept" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.InterceptDefinition"
+            }
+          },
+          "interceptFrom" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.InterceptFromDefinition"
             }
+          },
+          "interceptSendToEndpoint" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.InterceptSendToEndpointDefinition"
+            }
+          },
+          "onCompletion" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.OnCompletionDefinition"
+            }
+          },
+          "onException" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
+            }
+          },
+          "precondition" : {
+            "type" : "string"
           }
-        } ]
+        }
       },
       "org.apache.camel.model.RouteContextRefDefinition" : {
         "oneOf" : [ {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy
index 3b8d026a5a5..f7d19095c42 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy
@@ -34,15 +34,16 @@ class RouteConfigurationTest extends YamlTestSupport {
                   - name: myFailingProcessor
                     type: ${MyFailingProcessor.name}
                 - route-configuration:
-                    - on-exception:
-                        handled:
-                          constant: "true"
-                        exception:
-                          - ${MyException.name}
-                        steps:
-                          - transform:
-                              constant: "Sorry"
-                          - to: "mock:on-exception"  
+                    on-exception:
+                      - on-exception:
+                          handled:
+                            constant: "true"
+                          exception:
+                            - ${MyException.name}
+                          steps:
+                            - transform:
+                                constant: "Sorry"
+                            - to: "mock:on-exception"  
                 - from:
                     uri: "direct:start"
                     steps:
@@ -72,32 +73,35 @@ class RouteConfigurationTest extends YamlTestSupport {
                   - name: myFailingProcessor
                     type: ${MyFailingProcessor.name}
                 - route-configuration:
-                    - precondition: "{{!activate}}"
-                    - on-exception:
-                        handled:
-                          constant: "true"
-                        exception:
-                          - ${MyException.name}
-                        steps:
-                          - transform:
-                              constant: "Not Activated"
-                          - to: "mock:on-exception"  
+                    precondition: "{{!activate}}"
+                    on-exception:
+                      - on-exception:
+                          handled:
+                            constant: "true"
+                          exception:
+                            - ${MyException.name}
+                          steps:
+                            - transform:
+                                constant: "Not Activated"
+                            - to: "mock:on-exception"  
                 - route-configuration:
-                    - precondition: "{{activate}}"
-                    - on-exception:
-                        handled:
-                          constant: "true"
-                        exception:
-                          - ${MyException.name}
-                        steps:
-                          - transform:
-                              constant: "Activated"
-                          - to: "mock:on-exception"
-                    - on-completion:
-                        steps:
-                          - transform:
-                              constant: "Completed"
-                          - to: "mock:on-completion"
+                    precondition: "{{activate}}"
+                    on-exception:
+                      - on-exception:
+                          handled:
+                            constant: "true"
+                          exception:
+                            - ${MyException.name}
+                          steps:
+                            - transform:
+                                constant: "Activated"
+                            - to: "mock:on-exception"
+                    on-completion:
+                      - on-completion:
+                          steps:
+                            - transform:
+                                constant: "Completed"
+                            - to: "mock:on-completion"
                 - from:
                     uri: "direct:start"
                     steps:
@@ -136,6 +140,7 @@ class RouteConfigurationTest extends YamlTestSupport {
                   - name: myFailingProcessor
                     type: ${MyFailingProcessor.name}
                 - route-configuration:
+                    on-exception:
                     - on-exception:
                         handled:
                           constant: "true"
@@ -183,16 +188,17 @@ class RouteConfigurationTest extends YamlTestSupport {
                   - name: myFailingProcessor
                     type: ${MyFailingProcessor.name}
                 - route-configuration:
-                    - id: handleError
-                    - on-exception:
-                        handled:
-                          constant: "true"
-                        exception:
-                          - ${MyException.name}
-                        steps:
-                          - transform:
-                              constant: "Sorry"
-                          - to: "mock:on-exception"  
+                    id: handleError
+                    on-exception:
+                      - on-exception:
+                          handled:
+                            constant: "true"
+                          exception:
+                            - ${MyException.name}
+                          steps:
+                            - transform:
+                                constant: "Sorry"
+                            - to: "mock:on-exception"  
             """
         // routes
         loadRoutes """
@@ -240,9 +246,9 @@ class RouteConfigurationTest extends YamlTestSupport {
                   - name: myFailingProcessor
                     type: ${MyFailingProcessor.name}
                 - route-configuration:
-                    - error-handler:
-                        dead-letter-channel: 
-                          dead-letter-uri: "mock:on-error"
+                    error-handler:
+                      dead-letter-channel: 
+                        dead-letter-uri: "mock:on-error"
             """
         // routes
         loadRoutes """