You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/01/24 13:01:17 UTC
[camel] 01/04: CAMEL-17289: camel-yaml-dsl - Add support for knative kind in yaml-dsl loader
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit a696d26139debce15113684158e84cb786d8db31
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Jan 24 13:27:05 2022 +0100
CAMEL-17289: camel-yaml-dsl - Add support for knative kind in yaml-dsl loader
---
.../camel/dsl/yaml/YamlRoutesBuilderLoader.java | 8 ++++-
.../camel/dsl/yaml/KameletBindingLoaderTest.groovy | 39 ++++++++++++++++++++++
2 files changed, 46 insertions(+), 1 deletion(-)
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 0265a3b..17229f5 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
@@ -72,6 +72,7 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
private static final String INTEGRATION_VERSION = "camel.apache.org/v1";
private static final String BINDING_VERSION = "camel.apache.org/v1";
private static final String STRIMZI_VERSION = "kafka.strimzi.io/v1";
+ private static final String KNATIVE_VERSION = "messaging.knative.dev/v1";
public YamlRoutesBuilderLoader() {
super(EXTENSION);
@@ -390,8 +391,11 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
boolean strimzi
= !kamelet && mn != null && anyTupleMatches(mn.getValue(), "apiVersion", v -> v.startsWith(STRIMZI_VERSION))
&& anyTupleMatches(mn.getValue(), "kind", "KafkaTopic");
+ boolean knative
+ = !kamelet && !strimzi && mn != null
+ && anyTupleMatches(mn.getValue(), "apiVersion", v -> v.startsWith(KNATIVE_VERSION));
String uri;
- if (kamelet || strimzi) {
+ if (kamelet || strimzi || knative) {
uri = extractTupleValue(mn.getValue(), "name");
} else {
uri = extractTupleValue(node.getValue(), "uri");
@@ -409,6 +413,8 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
return "kamelet:" + uri;
} else if (strimzi) {
return "kafka:" + uri;
+ } else if (knative) {
+ return "knative:channel/" + 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 b3da18f..177828f 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
@@ -513,4 +513,43 @@ class KameletBindingLoaderTest extends YamlTestSupport {
}
}
+ def "kamelet binding from kamelet to knative"() {
+ when:
+
+ // stub knative for testing as it requires to setup connection to a real knative broker
+ context.removeComponent("knative")
+ context.addComponent("knative", 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: InMemoryChannel
+ apiVersion: messaging.knative.dev/v1
+ name: my-messages
+ ''')
+ 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 == 'knative:channel/my-messages'
+ }
+ }
+ }
+
}