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 ca88a21 CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K
KameletBinding file. WIP.
ca88a21 is described below
commit ca88a2101f9f694a91bc7eebf1f5f79114909293
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Dec 5 10:46:22 2021 +0100
CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K
KameletBinding file. WIP.
---
.../dsl/yaml/deserializers/ModelDeserializers.java | 37 -------
.../deserializers/ModelDeserializersResolver.java | 3 -
.../src/generated/resources/camel-yaml-dsl.json | 9 --
.../camel/dsl/yaml/YamlRoutesBuilderLoader.java | 116 ++++++++++++---------
4 files changed, 66 insertions(+), 99 deletions(-)
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
index d40cbeee..095eb74 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
@@ -69,7 +69,6 @@ import
org.apache.camel.model.Resilience4jConfigurationDefinition;
import org.apache.camel.model.RestContextRefDefinition;
import org.apache.camel.model.RollbackDefinition;
import org.apache.camel.model.RouteBuilderDefinition;
-import org.apache.camel.model.RouteConfigurationContextRefDefinition;
import org.apache.camel.model.RouteContextRefDefinition;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.model.RouteTemplateParameterDefinition;
@@ -12919,42 +12918,6 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
}
@YamlType(
- types =
org.apache.camel.model.RouteConfigurationContextRefDefinition.class,
- order =
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
- nodes = {
- "route-configuration-context-ref",
- "routeConfigurationContextRef"
- },
- properties = @YamlProperty(name = "ref", type = "string", required
= true)
- )
- public static class RouteConfigurationContextRefDefinitionDeserializer
extends YamlDeserializerBase<RouteConfigurationContextRefDefinition> {
- public RouteConfigurationContextRefDefinitionDeserializer() {
- super(RouteConfigurationContextRefDefinition.class);
- }
-
- @Override
- protected RouteConfigurationContextRefDefinition newInstance() {
- return new RouteConfigurationContextRefDefinition();
- }
-
- @Override
- protected boolean setProperty(RouteConfigurationContextRefDefinition
target,
- String propertyKey, String propertyName, Node node) {
- switch(propertyKey) {
- case "ref": {
- String val = asText(node);
- target.setRef(val);
- break;
- }
- default: {
- return false;
- }
- }
- return true;
- }
- }
-
- @YamlType(
types = org.apache.camel.model.RouteContextRefDefinition.class,
order =
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
nodes = {
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
index f0629b1..f5837a5 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
@@ -363,9 +363,6 @@ public final class ModelDeserializersResolver implements
YamlDeserializerResolve
case "route-builder": return new
ModelDeserializers.RouteBuilderDefinitionDeserializer();
case "routeBuilder": return new
ModelDeserializers.RouteBuilderDefinitionDeserializer();
case "org.apache.camel.model.RouteBuilderDefinition": return new
ModelDeserializers.RouteBuilderDefinitionDeserializer();
- case "route-configuration-context-ref": return new
ModelDeserializers.RouteConfigurationContextRefDefinitionDeserializer();
- case "routeConfigurationContextRef": return new
ModelDeserializers.RouteConfigurationContextRefDefinitionDeserializer();
- case
"org.apache.camel.model.RouteConfigurationContextRefDefinition": return new
ModelDeserializers.RouteConfigurationContextRefDefinitionDeserializer();
case "route-context-ref": return new
ModelDeserializers.RouteContextRefDefinitionDeserializer();
case "routeContextRef": return new
ModelDeserializers.RouteContextRefDefinitionDeserializer();
case "org.apache.camel.model.RouteContextRefDefinition": return
new ModelDeserializers.RouteContextRefDefinitionDeserializer();
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
index 8614fed..b6b98fc 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
@@ -2131,15 +2131,6 @@
} ],
"required" : [ "ref" ]
},
- "org.apache.camel.model.RouteConfigurationContextRefDefinition" : {
- "type" : "object",
- "properties" : {
- "ref" : {
- "type" : "string"
- }
- },
- "required" : [ "ref" ]
- },
"org.apache.camel.model.RouteConfigurationDefinition" : {
"oneOf" : [ {
"type" : "string"
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 e61092b..a682125 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
@@ -161,61 +161,77 @@ public class YamlRoutesBuilderLoader extends
YamlRoutesBuilderLoaderSupport {
boolean binding = anyTupleMatches(mn.getValue(), "apiVersion",
"camel.apache.org/v1alpha1") &&
anyTupleMatches(mn.getValue(), "kind", "KameletBinding");
if (integration) {
- Node routes = nodeAt(root, "/spec/flows");
- if (routes == null) {
- routes = nodeAt(root, "/spec/flow");
- }
- if (routes != null) {
- target = routes;
- }
+ target = preConfigureIntegration(root, target);
} else if (binding) {
- // kamelet binding is a bit more complex, so grab the source
and sink
- // and map those to Camel route definitions
- MappingNode source = asMappingNode(nodeAt(root,
"/spec/source"));
- MappingNode sink = asMappingNode(nodeAt(root, "/spec/sink"));
- if (source != null && sink != null) {
- Node sourceRef = nodeAt(source, "/ref");
- if (sourceRef != null) {
- source = asMappingNode(sourceRef);
- }
- Node sinkRef = nodeAt(sink, "/ref");
- if (sinkRef != null) {
- sink = asMappingNode(sinkRef);
- }
- boolean sourceKamelet = sourceRef != null &&
anyTupleMatches(source.getValue(), "kind", "Kamelet");
- boolean sinkKamelet = sinkRef != null &&
anyTupleMatches(sink.getValue(), "kind", "Kamelet");
- String from = extractTupleValue(source.getValue(),
sourceKamelet ? "name" : "uri");
- String to = extractTupleValue(sink.getValue(), sinkKamelet
? "name" : "uri");
- if (sourceKamelet) {
- from = "kamelet:" + from;
- }
- if (sinkKamelet) {
- to = "kamelet:" + to;
- }
+ target = preConfigureKameletBinding(root, target);
+ }
+ }
- // source properties
- MappingNode sp = asMappingNode(nodeAt(root,
"/spec/source/properties"));
- Map<String, Object> params = asMap(sp);
- if (params != null && !params.isEmpty()) {
- String query = URISupport.createQueryString(params);
- from = from + "?" + query;
- }
- // sink properties
- sp = asMappingNode(nodeAt(root, "/spec/sink/properties"));
- params = asMap(sp);
- if (params != null && !params.isEmpty()) {
- String query = URISupport.createQueryString(params);
- to = to + "?" + query;
- }
+ return target;
+ }
- // build kamelet binding as a route
- RouteDefinition route = new RouteDefinition();
- route.from(from).to(to);
- target = route;
- }
- }
+ /**
+ * Camel K Integration file
+ */
+ private static Object preConfigureIntegration(Node root, Object target) {
+ Node routes = nodeAt(root, "/spec/flows");
+ if (routes == null) {
+ routes = nodeAt(root, "/spec/flow");
+ }
+ if (routes != null) {
+ target = routes;
}
+ return target;
+ }
+ /**
+ * Camel K Kamelet Binding file
+ */
+ private static Object preConfigureKameletBinding(Node root, Object target)
throws Exception {
+ // kamelet binding is a bit more complex, so grab the source and sink
+ // and map those to Camel route definitions
+ MappingNode source = asMappingNode(nodeAt(root, "/spec/source"));
+ MappingNode sink = asMappingNode(nodeAt(root, "/spec/sink"));
+ if (source != null && sink != null) {
+ Node sourceRef = nodeAt(source, "/ref");
+ if (sourceRef != null) {
+ source = asMappingNode(sourceRef);
+ }
+ Node sinkRef = nodeAt(sink, "/ref");
+ if (sinkRef != null) {
+ sink = asMappingNode(sinkRef);
+ }
+ boolean sourceKamelet = sourceRef != null &&
anyTupleMatches(source.getValue(), "kind", "Kamelet");
+ boolean sinkKamelet = sinkRef != null &&
anyTupleMatches(sink.getValue(), "kind", "Kamelet");
+ String from = extractTupleValue(source.getValue(), sourceKamelet ?
"name" : "uri");
+ String to = extractTupleValue(sink.getValue(), sinkKamelet ?
"name" : "uri");
+ if (sourceKamelet) {
+ from = "kamelet:" + from;
+ }
+ if (sinkKamelet) {
+ to = "kamelet:" + to;
+ }
+
+ // source properties
+ MappingNode sp = asMappingNode(nodeAt(root,
"/spec/source/properties"));
+ Map<String, Object> params = asMap(sp);
+ if (params != null && !params.isEmpty()) {
+ String query = URISupport.createQueryString(params);
+ from = from + "?" + query;
+ }
+ // sink properties
+ sp = asMappingNode(nodeAt(root, "/spec/sink/properties"));
+ params = asMap(sp);
+ if (params != null && !params.isEmpty()) {
+ String query = URISupport.createQueryString(params);
+ to = to + "?" + query;
+ }
+
+ // build kamelet binding as a route
+ RouteDefinition route = new RouteDefinition();
+ route.from(from).to(to);
+ target = route;
+ }
return target;
}