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 2a8ef87 CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K
KameletBinding file. WIP.
2a8ef87 is described below
commit 2a8ef871b7848f05573cae84454defe3eec28d6b
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Dec 5 18:10:46 2021 +0100
CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K
KameletBinding file. WIP.
---
.../camel/dsl/yaml/YamlRoutesBuilderLoader.java | 43 +++++-----------------
.../dsl/yaml/YamlRoutesBuilderLoaderSupport.java | 32 ++++++++++++++++
2 files changed, 42 insertions(+), 33 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 af26b7f..b972525 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
@@ -16,7 +16,6 @@
*/
package org.apache.camel.dsl.yaml;
-import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -39,7 +38,6 @@ import org.apache.camel.spi.annotations.RoutesLoader;
import org.apache.camel.util.URISupport;
import org.snakeyaml.engine.v2.nodes.MappingNode;
import org.snakeyaml.engine.v2.nodes.Node;
-import org.snakeyaml.engine.v2.nodes.NodeTuple;
import org.snakeyaml.engine.v2.nodes.NodeType;
import org.snakeyaml.engine.v2.nodes.SequenceNode;
@@ -55,6 +53,10 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
public static final String EXTENSION = "yaml";
+ // API versions for Camel-K Integration and Kamelet Binding
+ private static final String INTEGRATION_VERSION = "camel.apache.org/v1";
+ private static final String BINDING_VERSION = "camel.apache.org/v1alpha1";
+
public YamlRoutesBuilderLoader() {
super(EXTENSION);
}
@@ -149,17 +151,17 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
};
}
- private static Object preConfigureNode(Node root) throws Exception {
+ private Object preConfigureNode(Node root) throws Exception {
Object target = root;
// check if the yaml is a camel-k yaml with embedded binding/routes
(called flow(s))
if (Objects.equals(root.getNodeType(), NodeType.MAPPING)) {
final MappingNode mn = YamlDeserializerSupport.asMappingNode(root);
// camel-k: integration
- boolean integration = anyTupleMatches(mn.getValue(), "apiVersion",
"camel.apache.org/v1") &&
+ boolean integration = anyTupleMatches(mn.getValue(), "apiVersion",
INTEGRATION_VERSION) &&
anyTupleMatches(mn.getValue(), "kind", "Integration");
// camel-k: kamelet binding are still at v1alpha1
- boolean binding = anyTupleMatches(mn.getValue(), "apiVersion",
"camel.apache.org/v1alpha1") &&
+ boolean binding = anyTupleMatches(mn.getValue(), "apiVersion",
BINDING_VERSION) &&
anyTupleMatches(mn.getValue(), "kind", "KameletBinding");
if (integration) {
target = preConfigureIntegration(root, target);
@@ -174,7 +176,7 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
/**
* Camel K Integration file
*/
- private static Object preConfigureIntegration(Node root, Object target) {
+ private Object preConfigureIntegration(Node root, Object target) {
Node routes = nodeAt(root, "/spec/flows");
if (routes == null) {
routes = nodeAt(root, "/spec/flow");
@@ -188,7 +190,7 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
/**
* Camel K Kamelet Binding file
*/
- private static Object preConfigureKameletBinding(Node root, Object target)
throws Exception {
+ private Object preConfigureKameletBinding(Node root, Object target) throws
Exception {
final RouteDefinition route = new RouteDefinition();
String routeId = asText(nodeAt(root, "/metadata/name"));
if (routeId != null) {
@@ -227,7 +229,7 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
return target;
}
- private static String extractCamelEndpointUri(MappingNode node) throws
Exception {
+ private String extractCamelEndpointUri(MappingNode node) throws Exception {
MappingNode mn = null;
Node ref = nodeAt(node, "/ref");
if (ref != null) {
@@ -254,29 +256,4 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
return kamelet ? "kamelet:" + uri : uri;
}
- private static boolean anyTupleMatches(List<NodeTuple> list, String aKey,
String aValue) {
- 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)) {
- return true;
- }
- }
- }
- return false;
- }
-
- private static String extractTupleValue(List<NodeTuple> list, String aKey)
{
- 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())) {
- return asText(tuple.getValueNode());
- }
- }
- return null;
- }
-
}
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 ed74dc6..1dc1557 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
@@ -18,8 +18,10 @@ package org.apache.camel.dsl.yaml;
import java.io.FileNotFoundException;
import java.io.InputStream;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
@@ -36,10 +38,14 @@ import org.snakeyaml.engine.v2.api.LoadSettings;
import org.snakeyaml.engine.v2.api.YamlUnicodeReader;
import org.snakeyaml.engine.v2.composer.Composer;
import org.snakeyaml.engine.v2.nodes.Node;
+import org.snakeyaml.engine.v2.nodes.NodeTuple;
+import org.snakeyaml.engine.v2.nodes.NodeType;
import org.snakeyaml.engine.v2.parser.Parser;
import org.snakeyaml.engine.v2.parser.ParserImpl;
import org.snakeyaml.engine.v2.scanner.StreamReader;
+import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asText;
+
public abstract class YamlRoutesBuilderLoaderSupport extends
RouteBuilderLoaderSupport {
public static final String DESERIALIZATION_MODE =
"CamelYamlDslDeserializationMode";
@@ -130,4 +136,30 @@ public abstract class YamlRoutesBuilderLoaderSupport
extends RouteBuilderLoaderS
}
protected abstract RouteBuilder builder(Node node);
+
+ protected boolean anyTupleMatches(List<NodeTuple> list, String aKey,
String aValue) {
+ 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)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ protected String extractTupleValue(List<NodeTuple> list, String aKey) {
+ 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())) {
+ return asText(tuple.getValueNode());
+ }
+ }
+ return null;
+ }
+
}