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 2021/12/07 13:51:55 UTC
[camel] 04/08: CAMEL-17288: camel-core - Route template parameters dash vs camel case keys and required
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 4ef0dc7bfdc02eaf546e7172835c38896e16c5b4
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 7 11:33:09 2021 +0100
CAMEL-17288: camel-core - Route template parameters dash vs camel case keys and required
---
.../main/java/org/apache/camel/impl/DefaultModel.java | 15 +++++++++++++--
.../test/resources/kamelets/error-handler.kamelet.yaml | 18 +++++++++---------
2 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index 83465a8..86d12af 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -334,6 +334,7 @@ public class DefaultModel implements Model {
throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
}
+ // support both camelCase and kebab-case keys
final Map<String, Object> prop = new HashMap<>();
// include default values first from the template (and validate that we have inputs for all required parameters)
if (target.getTemplateParameters() != null) {
@@ -341,7 +342,7 @@ public class DefaultModel implements Model {
for (RouteTemplateParameterDefinition temp : target.getTemplateParameters()) {
if (temp.getDefaultValue() != null) {
- prop.put(temp.getName(), temp.getDefaultValue());
+ addProperty(prop, temp.getName(), temp.getDefaultValue());
} else {
if (temp.isRequired() && !routeTemplateContext.hasParameter(temp.getName())) {
// this is a required parameter which is missing
@@ -358,7 +359,7 @@ public class DefaultModel implements Model {
// then override with user parameters part 1
if (routeTemplateContext.getParameters() != null) {
- prop.putAll(routeTemplateContext.getParameters());
+ routeTemplateContext.getParameters().forEach((k, v) -> addProperty(prop, k, v));
}
// route template context should include default template parameters from the target route template
// so it has all parameters available
@@ -415,6 +416,16 @@ public class DefaultModel implements Model {
return def.getId();
}
+ private static void addProperty(Map<String, Object> prop, String key, Object value) {
+ prop.put(key, value);
+ // support also camelCase and kebab-case because route templates (kamelets)
+ // can be defined using different key styles
+ key = StringHelper.dashToCamelCase(key);
+ prop.put(key, value);
+ key = StringHelper.camelCaseToDash(key);
+ prop.put(key, value);
+ }
+
private void addTemplateBeans(RouteTemplateContext routeTemplateContext, RouteTemplateDefinition target) throws Exception {
for (RouteTemplateBeanDefinition b : target.getTemplateBeans()) {
final Map<String, Object> props = new HashMap<>();
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/resources/kamelets/error-handler.kamelet.yaml b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/resources/kamelets/error-handler.kamelet.yaml
index f088fb2..7fcd6bd 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/resources/kamelets/error-handler.kamelet.yaml
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/resources/kamelets/error-handler.kamelet.yaml
@@ -30,27 +30,27 @@ spec:
- kafka-service-account-secret
- log-message
properties:
- kafkaBrokers:
+ kafka-brokers:
title: Kafka Brokers
description: the bootstrap server
type: string
example: "xyz-ins--rplssqfz-yyyyyyy-crojg.bf2.kafka.my-clud-service.com:443"
- kafkaTopic:
+ kafka-topic:
title: Kafka Topic
description: the DLC topic
type: string
example: "my-dlc"
- kafkaServiceAccountId:
+ kafka-service-account-id:
title: Service Account ID
description: the SA to use
type: string
example: "srvc-acct-xxxxxx-519b-453f-9f68-yyyyyyyyy"
- kafkaServiceAccountSecret:
+ kafka-service-account-secret:
title: Service Account Secret
description: the SA secrete to use
type: string
example: "xxxxxxxxx-46c7-4c6c-a753-yyyyyyyyyyyyyyy"
- logMessage:
+ log-message:
title: Message
description: A message warning to log
type: string
@@ -61,13 +61,13 @@ spec:
steps:
# First step: send to the DLC for future processing
- to:
- uri: kafka:{{kafkaTopic}}
+ uri: kafka:{{kafka-topic}}
parameters:
- brokers: "{{kafkaBrokers}}"
+ brokers: "{{kafka-brokers}}"
security-protocol: SASL_SSL
sasl-mechanism: PLAIN
- sasl-jaas-config: "org.apache.kafka.common.security.plain.PlainLoginModule required username={{kafkaServiceAccountId}} password={{kafkaServiceAccountSecret}};"
+ sasl-jaas-config: "org.apache.kafka.common.security.plain.PlainLoginModule required username={{kafka-service-account-id}} password={{kafka-service-account-secret}};"
# Log an error message to notify about the failure
- set-body:
- constant: "{{logMessage}} - worry not, the event is stored in the DLC"
+ constant: "{{log-message}} - worry not, the event is stored in the DLC"
- to: "log:error-sink"