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 14:04:48 UTC

[camel] branch main updated: CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K KameletBinding file.

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


The following commit(s) were added to refs/heads/main by this push:
     new 16066a7  CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K KameletBinding file.
16066a7 is described below

commit 16066a7ef1f59a481185410705b19b13a02c0778
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 7 15:04:07 2021 +0100

    CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K KameletBinding file.
---
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java    | 10 ++++++++--
 .../camel/dsl/yaml/KameletBindingLoaderTest.groovy | 22 ++++++++++++++++++----
 2 files changed, 26 insertions(+), 6 deletions(-)

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 dd370a6..8952b53 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
@@ -215,7 +215,6 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
             route.from(from);
 
             // steps in the middle (optional)
-            // TODO: make steps as Kamelet EIP and not TO
             Node steps = nodeAt(root, "/spec/steps");
             if (steps != null) {
                 SequenceNode sn = asSequenceNode(steps);
@@ -223,7 +222,14 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
                     MappingNode step = asMappingNode(node);
                     String uri = extractCamelEndpointUri(step);
                     if (uri != null) {
-                        route.to(uri);
+                        // if kamelet then use kamelet eip instead of to
+                        boolean kamelet = uri.startsWith("kamelet:");
+                        if (kamelet) {
+                            uri = uri.substring(8);
+                            route.kamelet(uri);
+                        } else {
+                            route.to(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 724f867..df2a54d 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
@@ -23,6 +23,7 @@ import org.apache.camel.builder.DefaultErrorHandlerBuilder
 import org.apache.camel.builder.NoErrorHandlerBuilder
 import org.apache.camel.component.mock.MockEndpoint
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
+import org.apache.camel.model.KameletDefinition
 import org.apache.camel.model.ToDefinition
 
 class KameletBindingLoaderTest extends YamlTestSupport {
@@ -158,6 +159,12 @@ class KameletBindingLoaderTest extends YamlTestSupport {
             routeId == 'steps-binding'
             input.endpointUri == 'kamelet:timer-source?message=Camel'
             outputs.size() == 3
+            with (outputs[0], KameletDefinition) {
+                name == 'prefix-action?prefix=Apache'
+            }
+            with (outputs[1], KameletDefinition) {
+                name == 'prefix-action?prefix=Hello'
+            }
             with (outputs[2], ToDefinition) {
                 endpointUri == 'log:info'
             }
@@ -197,6 +204,9 @@ class KameletBindingLoaderTest extends YamlTestSupport {
             routeId == 'steps-binding'
             input.endpointUri == 'kamelet:timer-source?message=Camel'
             outputs.size() == 3
+            with (outputs[0], KameletDefinition) {
+                name == 'prefix-action?prefix=Apache'
+            }
             with (outputs[1], ToDefinition) {
                 endpointUri == 'mock:dummy'
             }
@@ -223,24 +233,28 @@ class KameletBindingLoaderTest extends YamlTestSupport {
                   message: "Camel"
               steps:
               - uri: mock:dummy
+              - uri: kamelet:prefix-action?prefix=Apache
               - uri: mock:dummy2
               sink:
                 uri: log:info
                 ''')
         then:
-        context.routeDefinitions.size() == 2
+        context.routeDefinitions.size() == 3
 
         with (context.routeDefinitions[0]) {
             routeId == 'steps-binding'
             input.endpointUri == 'kamelet:timer-source?message=Camel'
-            outputs.size() == 3
+            outputs.size() == 4
             with (outputs[0], ToDefinition) {
                 endpointUri == 'mock:dummy'
             }
-            with (outputs[1], ToDefinition) {
-                endpointUri == 'mock:dummy2'
+            with (outputs[1], KameletDefinition) {
+                name == 'prefix-action?prefix=Apache'
             }
             with (outputs[2], ToDefinition) {
+                endpointUri == 'mock:dummy2'
+            }
+            with (outputs[3], ToDefinition) {
                 endpointUri == 'log:info'
             }
         }