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/07 08:37:17 UTC
[camel] 03/04: 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.
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 <cl...@gmail.com>
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());
+ }
+
}