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 5a065ca  CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K 
KameletBinding file. WIP.
5a065ca is described below

commit 5a065ca63f8ab0b0acf2603b47138061ddeca62e
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Dec 6 13:58:23 2021 +0100

    CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K 
KameletBinding file. WIP.
---
 .../org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java | 14 ++++++++------
 .../camel/dsl/yaml/YamlRoutesBuilderLoaderSupport.java     |  7 ++++++-
 2 files changed, 14 insertions(+), 7 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 b97a0a8..2338ea7 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
@@ -54,9 +54,10 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
     public static final String EXTENSION = "yaml";
 
     // API versions for Camel-K Integration and Kamelet Binding
+    // we are lenient so lets just assume we can work with any of the v1 even 
if they evolve
     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/v1beta2";
+    private static final String BINDING_VERSION = "camel.apache.org/v1";
+    private static final String STRIMZI_VERSION = "kafka.strimzi.io/v1";
 
     public YamlRoutesBuilderLoader() {
         super(EXTENSION);
@@ -159,10 +160,10 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
         if (Objects.equals(root.getNodeType(), NodeType.MAPPING)) {
             final MappingNode mn = YamlDeserializerSupport.asMappingNode(root);
             // camel-k: integration
-            boolean integration = anyTupleMatches(mn.getValue(), "apiVersion", 
INTEGRATION_VERSION) &&
+            boolean integration = anyTupleMatches(mn.getValue(), "apiVersion", 
v -> v.startsWith(INTEGRATION_VERSION)) &&
                     anyTupleMatches(mn.getValue(), "kind", "Integration");
             // camel-k: kamelet binding are still at v1alpha1
-            boolean binding = anyTupleMatches(mn.getValue(), "apiVersion", 
BINDING_VERSION) &&
+            boolean binding = anyTupleMatches(mn.getValue(), "apiVersion", v 
-> v.startsWith(BINDING_VERSION)) &&
                     anyTupleMatches(mn.getValue(), "kind", "KameletBinding");
             if (integration) {
                 target = preConfigureIntegration(root, target);
@@ -239,8 +240,9 @@ 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");
+        boolean strimzi
+                = !kamelet && mn != null && anyTupleMatches(mn.getValue(), 
"apiVersion", v -> v.startsWith(STRIMZI_VERSION))
+                        && anyTupleMatches(mn.getValue(), "kind", 
"KafkaTopic");
         String uri;
         if (kamelet || strimzi) {
             uri = extractTupleValue(mn.getValue(), "name");
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoaderSupport.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoaderSupport.java
index 1dc1557..e6821e0 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoaderSupport.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoaderSupport.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
+import java.util.function.Predicate;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
@@ -138,12 +139,16 @@ public abstract class YamlRoutesBuilderLoaderSupport 
extends RouteBuilderLoaderS
     protected abstract RouteBuilder builder(Node node);
 
     protected boolean anyTupleMatches(List<NodeTuple> list, String aKey, 
String aValue) {
+        return anyTupleMatches(list, aKey, Predicate.isEqual(aValue));
+    }
+
+    protected boolean anyTupleMatches(List<NodeTuple> list, String aKey, 
Predicate<String> predicate) {
         for (NodeTuple tuple : list) {
             final String key = asText(tuple.getKeyNode());
             final Node val = tuple.getValueNode();
             if (Objects.equals(aKey, key) && 
NodeType.SCALAR.equals(val.getNodeType())) {
                 String value = asText(tuple.getValueNode());
-                if (Objects.equals(aValue, value)) {
+                if (predicate.test(value)) {
                     return true;
                 }
             }

Reply via email to