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

Reply via email to