This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch bind
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/bind by this push:
new ded6047 CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K
KameletBinding file. WIP.
ded6047 is described below
commit ded6047e9e3df4e9af8b0e29a724e4fbe9251bab
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Dec 6 11:05:08 2021 +0100
CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K
KameletBinding file. WIP.
---
dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml | 5 +++
.../camel/dsl/yaml/YamlRoutesBuilderLoader.java | 13 ++++++--
.../camel/dsl/yaml/KameletBindingLoaderTest.groovy | 37 ++++++++++++++++++++++
3 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml
b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml
index 045ff78..7170e1d4 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml
@@ -121,6 +121,11 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-stub</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-log</artifactId>
<scope>test</scope>
</dependency>
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
index b972525..339ec63 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
@@ -56,6 +56,7 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
// API versions for Camel-K Integration and Kamelet Binding
private static final String INTEGRATION_VERSION = "camel.apache.org/v1";
private static final String BINDING_VERSION = "camel.apache.org/v1alpha1";
+ private static final String STRIMZI_VERSION = "kafka.strimzi.io/v1beta1";
public YamlRoutesBuilderLoader() {
super(EXTENSION);
@@ -238,8 +239,10 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
// extract uri is different if kamelet or not
boolean kamelet = mn != null && anyTupleMatches(mn.getValue(), "kind",
"Kamelet");
+ boolean strimzi = !kamelet && mn != null &&
anyTupleMatches(mn.getValue(), "apiVersion", STRIMZI_VERSION)
+ && anyTupleMatches(mn.getValue(), "kind", "KafkaTopic");
String uri;
- if (kamelet) {
+ if (kamelet || strimzi) {
uri = extractTupleValue(mn.getValue(), "name");
} else {
uri = extractTupleValue(node.getValue(), "uri");
@@ -253,7 +256,13 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
uri = uri + "?" + query;
}
- return kamelet ? "kamelet:" + uri : uri;
+ if (kamelet) {
+ return "kamelet:" + uri;
+ } else if (strimzi) {
+ return "kafka:" + uri;
+ } else {
+ return uri;
+ }
}
}
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
index a2a0323..98d334e 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
@@ -240,5 +240,42 @@ class KameletBindingLoaderTest extends YamlTestSupport {
}
}
+ def "kamelet binding from kamelet to strimzi"() {
+ when:
+
+ // stub kafka for testing as it requires to setup connection to a real
kafka broker
+ context.addComponent("kafka", context.getComponent("stub"))
+
+ loadBindings('''
+ apiVersion: camel.apache.org/v1alpha1
+ kind: KameletBinding
+ metadata:
+ name: timer-event-source
+ spec:
+ source:
+ ref:
+ kind: Kamelet
+ apiVersion: camel.apache.org/v1
+ name: timer-source
+ properties:
+ message: "Hello world!"
+ sink:
+ ref:
+ kind: KafkaTopic
+ apiVersion: kafka.strimzi.io/v1beta1
+ name: my-topic
+ ''')
+ then:
+ context.routeDefinitions.size() == 2
+
+ with (context.routeDefinitions[0]) {
+ routeId == 'timer-event-source'
+ input.endpointUri == 'kamelet:timer-source?message=Hello+world%21'
+ outputs.size() == 1
+ with (outputs[0], ToDefinition) {
+ endpointUri == 'kafka:my-topic'
+ }
+ }
+ }
}