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 <claus.ib...@gmail.com> 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; }