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 """