This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch prefixId in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7f83712a44613514c1093c5ee5658d2a3b84eae4 Author: Claus Ibsen <[email protected]> AuthorDate: Wed Dec 7 08:57:49 2022 +0100 CAMEL-18798/CAMEL-18771: Allow to configure nodePrefixId on route/routeTemplate to prefix all node IDs to make it easier to avoid clash with hardcoded IDs. --- .../deserializers/RouteDefinitionDeserializer.java | 5 +++ .../TemplatedRouteDefinitionDeserializer.java | 6 ++++ .../generated/resources/schema/camel-yaml-dsl.json | 6 ++++ .../generated/resources/schema/camelYamlDsl.json | 6 ++++ .../apache/camel/dsl/yaml/RouteTemplateTest.groovy | 40 ++++++++++++++++++++++ .../org/apache/camel/dsl/yaml/RoutesTest.groovy | 33 ++++++++++++++++++ 6 files changed, 96 insertions(+) diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteDefinitionDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteDefinitionDeserializer.java index eaec780238d..08072f756f3 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteDefinitionDeserializer.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteDefinitionDeserializer.java @@ -39,6 +39,7 @@ import org.snakeyaml.engine.v2.nodes.NodeTuple; @YamlProperty(name = "id", type = "string"), @YamlProperty(name = "description", type = "string"), @YamlProperty(name = "group", type = "string"), + @YamlProperty(name = "node-prefix-id", type = "string"), @YamlProperty(name = "precondition", type = "string"), @YamlProperty(name = "route-configuration-id", type = "string"), @YamlProperty(name = "auto-startup", type = "boolean"), @@ -84,6 +85,10 @@ public class RouteDefinitionDeserializer extends YamlDeserializerBase<RouteDefin case "group": target.setGroup(asText(val)); break; + case "nodePrefixId": + case "node-prefix-id": + target.setNodePrefixId(asText(val)); + break; case "routeConfigurationId": case "route-configuration-id": target.setRouteConfigurationId(asText(val)); diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteDefinitionDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteDefinitionDeserializer.java index e088c47c451..fd9f8747ffe 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteDefinitionDeserializer.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteDefinitionDeserializer.java @@ -35,6 +35,8 @@ import org.snakeyaml.engine.v2.nodes.Node; properties = { @YamlProperty(name = "route-id", type = "string"), + @YamlProperty(name = "prefix-id", + type = "string"), @YamlProperty(name = "route-template-ref", type = "string", required = true), @@ -63,6 +65,10 @@ public class TemplatedRouteDefinitionDeserializer extends YamlDeserializerBase<T target.setRouteId(asText(node)); break; } + case "prefixId": + case "prefix-id": + target.setPrefixId(asText(node)); + break; case "routeTemplateRef": case "route-template-ref": { target.setRouteTemplateRef(asText(node)); 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 960fa3c8b7f..68cc7020f88 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 @@ -2565,6 +2565,9 @@ "message-history" : { "type" : "boolean" }, + "node-prefix-id" : { + "type" : "string" + }, "precondition" : { "type" : "string" }, @@ -3097,6 +3100,9 @@ "$ref" : "#/items/definitions/org.apache.camel.model.TemplatedRouteParameterDefinition" } }, + "prefix-id" : { + "type" : "string" + }, "route-id" : { "type" : "string" }, 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 d98ccef879d..13b4e3c94a1 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 @@ -2469,6 +2469,9 @@ "messageHistory" : { "type" : "boolean" }, + "nodePrefixId" : { + "type" : "string" + }, "precondition" : { "type" : "string" }, @@ -3001,6 +3004,9 @@ "$ref" : "#/items/definitions/org.apache.camel.model.TemplatedRouteParameterDefinition" } }, + "prefixId" : { + "type" : "string" + }, "routeId" : { "type" : "string" }, diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy index 362eb48a614..057c51499b4 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy @@ -484,4 +484,44 @@ class RouteTemplateTest extends YamlTestSupport { } } + def "create route-template with prefix"() { + setup: + loadRoutes """ + - route-template: + id: "myTemplate" + parameters: + - name: "foo" + - name: "bar" + from: + uri: "direct:{{foo}}" + steps: + - choice: + when: + - header: "foo" + steps: + - log: + id: "myLog" + message: "Hello World" + otherwise: + steps: + - to: + uri: "mock:{{bar}}" + id: "end" + """ + when: + Map<String, Object> parameters = new HashMap<>(); + parameters.put("foo", "one"); + parameters.put("bar", "cheese"); + context.addRouteFromTemplate("first", "myTemplate", "aaa", parameters); + + parameters.put("foo", "two"); + parameters.put("bar", "cake"); + context.addRouteFromTemplate("second", "myTemplate", "bbb", parameters); + context.start() + + then: + Assertions.assertEquals(3, context.getRoute("first").filter("aaa*").size()); + Assertions.assertEquals(3, context.getRoute("second").filter("bbb*").size()); + } + } 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 b11cabc5afe..32038c0a122 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 @@ -19,6 +19,7 @@ package org.apache.camel.dsl.yaml import org.apache.camel.dsl.yaml.support.YamlTestSupport import org.apache.camel.model.LogDefinition import org.apache.camel.model.RouteDefinition +import org.junit.jupiter.api.Assertions class RoutesTest extends YamlTestSupport { @@ -307,4 +308,36 @@ class RoutesTest extends YamlTestSupport { } } + def "load route with node-prefix-id"() { + when: + loadRoutes ''' + - route: + id: foo + node-prefix-id: aaa + from: + uri: "direct:foo" + steps: + - to: + id: "myFoo" + uri: "mock:foo" + - to: "seda:foo" + - route: + id: bar + node-prefix-id: bbb + from: + uri: "direct:bar" + steps: + - to: + id: "myBar" + uri: "mock:bar" + - to: "seda:bar" + ''' + then: + context.routeDefinitions.size() == 2 + context.start() + + Assertions.assertEquals(2, context.getRoute("foo").filter("aaa*").size()); + Assertions.assertEquals(2, context.getRoute("bar").filter("bbb*").size()); + } + }
