This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git


The following commit(s) were added to refs/heads/master by this push:
     new 20a63aa  Default service definition not taken into account #19
20a63aa is described below

commit 20a63aa63f5f2e6eafa4af653a33932a4881eeee
Author: lburgazzoli <lburgazz...@gmail.com>
AuthorDate: Thu Feb 28 12:24:51 2019 +0100

    Default service definition not taken into account #19
---
 .../component/knative/KnativeEnvironment.java      | 116 ++++++++++++---------
 .../component/knative/KnativeComponentTest.java    |  12 ++-
 camel-knative/src/test/resources/environment.json  |  11 ++
 3 files changed, 86 insertions(+), 53 deletions(-)

diff --git 
a/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEnvironment.java
 
b/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEnvironment.java
index 52ca039..2e8b710 100644
--- 
a/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEnvironment.java
+++ 
b/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEnvironment.java
@@ -55,36 +55,12 @@ public class KnativeEnvironment {
         return services.stream();
     }
 
-    public Optional<KnativeServiceDefinition> lookupService(Knative.Type type, 
String name) {
-        final String contextPath = StringHelper.after(name, "/");
-        final String serviceName = (contextPath == null) ? name : 
StringHelper.before(name, "/");
-
-        return services.stream()
-            .filter(definition -> {
-                return Objects.equals(type.name(), 
definition.getMetadata().get(Knative.KNATIVE_TYPE))
-                    && Objects.equals(serviceName, definition.getName());
-            })
-            .map(definition -> {
-                //
-                // The context path set on the endpoint  overrides the one
-                // eventually provided by the service definition.
-                //
-                if (contextPath != null) {
-                    return new KnativeServiceDefinition(
-                        definition.getType(),
-                        definition.getProtocol(),
-                        definition.getName(),
-                        definition.getHost(),
-                        definition.getPort(),
-                        KnativeSupport.mergeMaps(
-                            definition.getMetadata(),
-                            
Collections.singletonMap(ServiceDefinition.SERVICE_META_PATH, "/" + contextPath)
-                        )
-                    );
-                }
-
-                return definition;
-            })
+    public Optional<KnativeServiceDefinition> lookupService(Knative.Type type, 
String name, String... aliases) {
+        return Stream.concat(Stream.of(name), Stream.of(aliases))
+            .sequential()
+            .map(n -> lookup(type, n))
+            .filter(Optional::isPresent)
+            .map(Optional::get)
             .findFirst();
     }
 
@@ -96,28 +72,7 @@ public class KnativeEnvironment {
 
 
     public KnativeServiceDefinition lookupServiceOrDefault(Knative.Type type, 
String name) {
-        return lookupService(type, name).orElseGet(() -> {
-            String contextPath = StringHelper.after(name, "/");
-            String serviceName = (contextPath == null) ? name : 
StringHelper.before(name, "/");
-            Map<String, String> meta = new HashMap<>();
-
-            if (type == Knative.Type.channel && 
!serviceName.endsWith(".channel")) {
-                serviceName += "-channel";
-
-            }
-            if (contextPath != null) {
-                meta.put(ServiceDefinition.SERVICE_META_PATH, "/" + 
contextPath);
-            }
-
-            return new KnativeEnvironment.KnativeServiceDefinition(
-                type,
-                Knative.Protocol.http,
-                serviceName,
-                "",
-                -1,
-                meta
-            );
-        });
+        return lookupService(type, name, "default").orElseGet(() -> 
computeServiceDefinition(type, name));
     }
 
     // ************************
@@ -126,6 +81,63 @@ public class KnativeEnvironment {
     //
     // ************************
 
+     private Optional<KnativeServiceDefinition> lookup(Knative.Type type, 
String name) {
+         final String contextPath = StringHelper.after(name, "/");
+         final String serviceName = (contextPath == null) ? name : 
StringHelper.before(name, "/");
+
+         return services.stream()
+             .filter(definition -> {
+                 return Objects.equals(type.name(), 
definition.getMetadata().get(Knative.KNATIVE_TYPE))
+                     && Objects.equals(serviceName, definition.getName());
+             })
+             .map(definition -> {
+                 //
+                 // The context path set on the endpoint  overrides the one
+                 // eventually provided by the service definition.
+                 //
+                 if (contextPath != null) {
+                     return new KnativeServiceDefinition(
+                         definition.getType(),
+                         definition.getProtocol(),
+                         definition.getName(),
+                         definition.getHost(),
+                         definition.getPort(),
+                         KnativeSupport.mergeMaps(
+                             definition.getMetadata(),
+                             
Collections.singletonMap(ServiceDefinition.SERVICE_META_PATH, "/" + contextPath)
+                         )
+                     );
+                 }
+
+                 return definition;
+             })
+             .findFirst();
+
+    }
+
+    public static KnativeServiceDefinition 
computeServiceDefinition(Knative.Type type, String name) {
+        String contextPath = StringHelper.after(name, "/");
+        String serviceName = (contextPath == null) ? name : 
StringHelper.before(name, "/");
+        Map<String, String> meta = new HashMap<>();
+
+        if (type == Knative.Type.channel && !serviceName.endsWith("-channel")) 
{
+            serviceName += "-channel";
+
+        }
+        if (contextPath != null) {
+            meta.put(ServiceDefinition.SERVICE_META_PATH, "/" + contextPath);
+        }
+
+        return new KnativeEnvironment.KnativeServiceDefinition(
+            type,
+            Knative.Protocol.http,
+            serviceName,
+            "",
+            -1,
+            meta
+        );
+    }
+
     public static KnativeEnvironment 
mandatoryLoadFromSerializedString(CamelContext context, String configuration) 
throws Exception {
         try (Reader reader = new StringReader(configuration)) {
             return Knative.MAPPER.readValue(reader, KnativeEnvironment.class);
diff --git 
a/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java
 
b/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java
index 56f4df3..358149e 100644
--- 
a/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java
+++ 
b/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java
@@ -73,7 +73,7 @@ public class KnativeComponentTest {
     void testLoadEnvironment() throws Exception {
         KnativeEnvironment env = mandatoryLoadFromResource(context, 
"classpath:/environment.json");
 
-        assertThat(env.stream()).hasSize(2);
+        assertThat(env.stream()).hasSize(3);
         assertThat(env.stream()).anyMatch(s -> s.getType() == 
Knative.Type.channel);
         assertThat(env.stream()).anyMatch(s -> s.getType() == 
Knative.Type.endpoint);
 
@@ -82,6 +82,16 @@ public class KnativeComponentTest {
         assertThat(env.lookupService(Knative.Type.endpoint, "e1")).isPresent();
         assertThat(env.lookupService(Knative.Type.endpoint, 
"c1")).isNotPresent();
 
+        assertThat(env.lookupServiceOrDefault(Knative.Type.endpoint, 
"undefined"))
+            .hasFieldOrPropertyWithValue("name", "default")
+            .hasFieldOrPropertyWithValue("host", "0.0.0.0")
+            .hasFieldOrPropertyWithValue("port", 8080);
+
+        assertThat(env.lookupServiceOrDefault(Knative.Type.channel, 
"myChannel"))
+            .hasFieldOrPropertyWithValue("name", "myChannel-channel")
+            .hasFieldOrPropertyWithValue("host", "")
+            .hasFieldOrPropertyWithValue("port", -1);
+
         assertThatThrownBy(() -> 
env.mandatoryLookupService(Knative.Type.endpoint, "unknown"))
             .isInstanceOf(IllegalArgumentException.class)
             .hasMessage("Unable to find the service \"unknown\" with type 
\"endpoint\"");
diff --git a/camel-knative/src/test/resources/environment.json 
b/camel-knative/src/test/resources/environment.json
index 4fbe864..03c0dfe 100644
--- a/camel-knative/src/test/resources/environment.json
+++ b/camel-knative/src/test/resources/environment.json
@@ -21,6 +21,17 @@
         "service.path": "",
         "knative.event.type": ""
       }
+    },
+    {
+      "type": "endpoint",
+      "protocol": "http",
+      "name": "default",
+      "host": "0.0.0.0",
+      "port": "8080",
+      "metadata": {
+        "service.path": "",
+        "knative.event.type": ""
+      }
     }
   ]
 }
\ No newline at end of file

Reply via email to