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:53:59 UTC

[camel] branch main updated (4aaa0d6c762 -> 70e2897f80f)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


    from 4aaa0d6c762 CAMEL-18660: Upgrade LocalStack to 1.3.0 that contains kinesis-mock (#8884)
     new 007416de1b2 CAMEL-18748: camel-yaml-dsl - Add missing route-configuration in yaml schema
     new 70e2897f80f CAMEL-18748: camel-yaml-dsl - Add missing route-configuration in yaml schema. Fixed route-configuration to be correct.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../dsl/yaml/common/YamlDeserializerSupport.java   |  12 +++
 .../RouteConfigurationDefinitionDeserializer.java  | 103 ++++++++++-----------
 .../generated/resources/schema/camel-yaml-dsl.json |  90 +++++++++---------
 .../generated/resources/schema/camelYamlDsl.json   |  87 +++++++++--------
 .../camel/dsl/yaml/RouteConfigurationTest.groovy   | 100 ++++++++++----------
 5 files changed, 204 insertions(+), 188 deletions(-)


[camel] 01/02: CAMEL-18748: camel-yaml-dsl - Add missing route-configuration in yaml schema

Posted by da...@apache.org.
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 007416de1b218b279d5804624be93ce0db696f96
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Dec 12 20:16:54 2022 +0100

    CAMEL-18748: camel-yaml-dsl - Add missing route-configuration in yaml schema
---
 .../deserializers/RouteConfigurationDefinitionDeserializer.java     | 2 ++
 .../src/generated/resources/schema/camel-yaml-dsl.json              | 6 ++++++
 .../camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json | 3 +++
 3 files changed, 11 insertions(+)

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 4aa56069f53..528358bda93 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.spi.annotations.YamlIn;
 import org.apache.camel.spi.annotations.YamlProperty;
 import org.apache.camel.spi.annotations.YamlType;
 import org.snakeyaml.engine.v2.nodes.MappingNode;
@@ -34,6 +35,7 @@ import org.snakeyaml.engine.v2.nodes.Node;
 import org.snakeyaml.engine.v2.nodes.NodeTuple;
 import org.snakeyaml.engine.v2.nodes.SequenceNode;
 
+@YamlIn
 @YamlType(
           inline = true,
           types = org.apache.camel.model.RouteConfigurationDefinition.class,
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 68cc7020f88..155ff485ef4 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
@@ -8217,6 +8217,12 @@
       "onException" : {
         "$ref" : "#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
       },
+      "route-configuration" : {
+        "$ref" : "#/items/definitions/org.apache.camel.model.RouteConfigurationDefinition"
+      },
+      "routeConfiguration" : {
+        "$ref" : "#/items/definitions/org.apache.camel.model.RouteConfigurationDefinition"
+      },
       "route" : {
         "$ref" : "#/items/definitions/org.apache.camel.model.RouteDefinition"
       },
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 13b4e3c94a1..37f021f463b 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
@@ -8112,6 +8112,9 @@
       "onException" : {
         "$ref" : "#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
       },
+      "routeConfiguration" : {
+        "$ref" : "#/items/definitions/org.apache.camel.model.RouteConfigurationDefinition"
+      },
       "route" : {
         "$ref" : "#/items/definitions/org.apache.camel.model.RouteDefinition"
       },


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

Posted by da...@apache.org.
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 """