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; } }