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 <[email protected]>
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;
}
}