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

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


The following commit(s) were added to refs/heads/main by this push:
     new f5758c5  fix(knative): use object name when events endpoints
f5758c5 is described below

commit f5758c5e3f71d70f64b8b556dcabc6c53b5a6923
Author: Pasquale Congiusti <pasquale.congiu...@gmail.com>
AuthorDate: Thu Dec 23 12:20:34 2021 +0100

    fix(knative): use object name when events endpoints
    
    Closes #764
---
 .../KnativeSinkBindingContextCustomizer.java       |  3 ++
 .../camel/component/knative/KnativeEndpoint.java   | 50 +++++++++-------------
 2 files changed, 24 insertions(+), 29 deletions(-)

diff --git 
a/camel-k-knative/impl/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java
 
b/camel-k-knative/impl/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java
index 4a45cd7..e9d208a 100644
--- 
a/camel-k-knative/impl/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java
+++ 
b/camel-k-knative/impl/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java
@@ -84,6 +84,9 @@ public class KnativeSinkBindingContextCustomizer implements 
ContextCustomizer {
             resource.setUrl(kSinkUrl);
             resource.setObjectApiVersion(apiVersion);
             resource.setObjectKind(kind);
+            if (type == Knative.Type.event) {
+                resource.setObjectName(name);
+            }
 
             if (ObjectHelper.isNotEmpty(kCeOverride)) {
                 try (Reader reader = new StringReader(kCeOverride)) {
diff --git 
a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
 
b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
index 6a6946e..faa4ab2 100644
--- 
a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
+++ 
b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
@@ -77,7 +77,7 @@ public class KnativeEndpoint extends DefaultEndpoint {
     }
 
     @Override
-    public Producer createProducer() throws Exception {
+    public Producer createProducer() {
         final KnativeResource service = 
lookupServiceDefinition(Knative.EndpointKind.sink);
         final Processor ceProcessor = cloudEventProcessor.producer(this, 
service);
         final Producer producer = 
getComponent().getProducerFactory().createProducer(this, 
createTransportConfiguration(service), service);
@@ -140,21 +140,20 @@ public class KnativeEndpoint extends DefaultEndpoint {
     }
 
     @Override
-    protected void doInit() throws Exception {
+    protected void doInit() {
         if (ObjectHelper.isEmpty(this.configuration.getTypeId())) {
             this.configuration.setTypeId(this.typeId);
         }
     }
 
     KnativeResource lookupServiceDefinition(Knative.EndpointKind endpointKind) 
{
-        final String resourceName = configuration.getTypeId();
+        final String resourceName;
+        if (type == Knative.Type.event && configuration.getName() != null) {
+            resourceName = configuration.getName();
+        } else {
+            resourceName = configuration.getTypeId();
+       }
 
-        //
-        // look-up service definition by service name first then if not found 
try to look it up by using
-        // "default" as a service name. For channels and endpoints, the 
service name can be derived from
-        // the endpoint uri but for events it is not possible so default 
should always be there for events
-        // unless the service name is define as an endpoint option.
-        //
         KnativeResource resource = lookupServiceDefinition(resourceName, 
endpointKind)
             .or(() -> lookupServiceDefinition("default", endpointKind))
             .orElseThrow(() -> new IllegalArgumentException(
@@ -199,9 +198,9 @@ public class KnativeEndpoint extends DefaultEndpoint {
         // For event type endpoints se need to add an additional filter to 
filter out events received
         // based on the given type.
         //
-        if (resource.getType() == Knative.Type.event && 
ObjectHelper.isNotEmpty(resourceName)) {
-            answer.setCloudEventType(resourceName);
-            answer.addFilter(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, resourceName);
+        if (resource.getType() == Knative.Type.event && 
ObjectHelper.isNotEmpty(configuration.getTypeId())) {
+            answer.setCloudEventType(configuration.getTypeId());
+            answer.addFilter(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, 
configuration.getTypeId());
         }
 
         return answer;
@@ -230,24 +229,17 @@ public class KnativeEndpoint extends DefaultEndpoint {
     }
 
     private static Predicate<KnativeResource> 
serviceFilter(KnativeConfiguration configuration, Knative.EndpointKind 
endpointKind) {
-        return new Predicate<KnativeResource>() {
-            @Override
-            public boolean test(KnativeResource resource) {
-                if (!Objects.equals(endpointKind, resource.getEndpointKind())) 
{
-                    return false;
-                }
-                if (configuration.getApiVersion() != null && 
!Objects.equals(resource.getObjectApiVersion(), configuration.getApiVersion())) 
{
-                    return false;
-                }
-                if (configuration.getKind() != null && 
!Objects.equals(resource.getObjectKind(), configuration.getKind())) {
-                    return false;
-                }
-                if (configuration.getName() != null && 
!Objects.equals(resource.getObjectName(), configuration.getName())) {
-                    return false;
-                }
-
-                return true;
+        return resource -> {
+            if (!Objects.equals(endpointKind, resource.getEndpointKind())) {
+                return false;
+            }
+            if (configuration.getApiVersion() != null && 
!Objects.equals(resource.getObjectApiVersion(), configuration.getApiVersion())) 
{
+                return false;
+            }
+            if (configuration.getKind() != null && 
!Objects.equals(resource.getObjectKind(), configuration.getKind())) {
+                return false;
             }
+            return configuration.getName() == null || 
Objects.equals(resource.getObjectName(), configuration.getName());
         };
     }
 }

Reply via email to