You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/02/25 07:16:26 UTC

(camel) 16/19: CAMEL-18858: camel-core - Mark route as created by Kamelet so we know this, so we can filter out in tooling and whereelse (kamelet is a blackbox)

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

davsclaus pushed a commit to branch filter-kamelet2
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 69537192604a866b0b3e7205fc6b3624c5d8f010
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Feb 24 20:08:12 2024 +0100

    CAMEL-18858: camel-core - Mark route as created by Kamelet so we know this, so we can filter out in tooling and whereelse (kamelet is a blackbox)
---
 .../camel/component/kamelet/KameletProcessor.java  |  3 ++
 .../camel/component/kamelet/KameletProducer.java   | 14 +++++++-
 .../camel/impl/engine/AbstractCamelContext.java    |  9 +++--
 .../org/apache/camel/processor/SendProcessor.java  |  3 ++
 .../camel/main/DefaultConfigurationProperties.java | 40 +++++++++++-----------
 5 files changed, 45 insertions(+), 24 deletions(-)

diff --git a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProcessor.java b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProcessor.java
index be684473f55..9bfab346d8f 100644
--- a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProcessor.java
+++ b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProcessor.java
@@ -123,6 +123,9 @@ public class KameletProcessor extends AsyncProcessorSupport
         if (producer == null) {
             producer = (KameletProducer) camelContext.getEndpoint("kamelet://" + name).createAsyncProducer();
         }
+        if (producer != null) {
+            ((RouteIdAware) producer).setRouteId(getRouteId());
+        }
         ServiceHelper.buildService(processor, producer);
 
         // we use the kamelet component (producer) to call the kamelet
diff --git a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProducer.java b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProducer.java
index cc05702c5e8..1e2d2960647 100644
--- a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProducer.java
+++ b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletProducer.java
@@ -20,12 +20,13 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Exchange;
 import org.apache.camel.Route;
+import org.apache.camel.spi.RouteIdAware;
 import org.apache.camel.support.DefaultAsyncProducer;
 import org.apache.camel.support.ExchangeHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class KameletProducer extends DefaultAsyncProducer {
+final class KameletProducer extends DefaultAsyncProducer implements RouteIdAware {
 
     private static final Logger LOG = LoggerFactory.getLogger(KameletProducer.class);
 
@@ -38,6 +39,7 @@ final class KameletProducer extends DefaultAsyncProducer {
     private final boolean block;
     private final long timeout;
     private final boolean sink;
+    private String routeId;
 
     public KameletProducer(KameletEndpoint endpoint, String key) {
         super(endpoint);
@@ -124,6 +126,16 @@ final class KameletProducer extends DefaultAsyncProducer {
         }
     }
 
+    @Override
+    public String getRouteId() {
+        return routeId;
+    }
+
+    @Override
+    public void setRouteId(String routeId) {
+        this.routeId = routeId;
+    }
+
     public String getKey() {
         return key;
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 09a13fec427..d14bb4760cb 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -2594,7 +2594,8 @@ public abstract class AbstractCamelContext extends BaseService
                     rests++;
                 }
                 boolean skip = order.getRoute().isCreatedByRestDsl()
-                               ||  (!registerKamelets && order.getRoute().isCreatedByKamelet()) || (!registerTemplates && order.getRoute().isCreatedByRouteTemplate());
+                        || (!registerKamelets && order.getRoute().isCreatedByKamelet())
+                        || (!registerTemplates && order.getRoute().isCreatedByRouteTemplate());
                 if (!skip && ServiceStatus.Started.name().equals(status)) {
                     started++;
                 }
@@ -2631,7 +2632,8 @@ public abstract class AbstractCamelContext extends BaseService
                     } else if (route.isCreatedByRestDsl()) {
                         rests++;
                     }
-                    boolean skip = route.isCreatedByRestDsl() || (!registerKamelets && route.isCreatedByKamelet()) || (!registerTemplates && route.isCreatedByRouteTemplate());
+                    boolean skip = route.isCreatedByRestDsl() || (!registerKamelets && route.isCreatedByKamelet())
+                            || (!registerTemplates && route.isCreatedByRouteTemplate());
                     // use basic endpoint uri to not log verbose details or potential sensitive data
                     String uri = route.getEndpoint().getEndpointBaseUri();
                     uri = URISupport.sanitizeUri(uri);
@@ -3106,7 +3108,8 @@ public abstract class AbstractCamelContext extends BaseService
                     rests++;
                 }
                 boolean skip = order.getRoute().isCreatedByRestDsl()
-                               || (!registerKamelets && order.getRoute().isCreatedByKamelet()) || (!registerTemplates && order.getRoute().isCreatedByRouteTemplate());
+                        || (!registerKamelets && order.getRoute().isCreatedByKamelet())
+                        || (!registerTemplates && order.getRoute().isCreatedByRouteTemplate());
                 if (!skip && ServiceStatus.Stopped.name().equals(status)) {
                     stopped++;
                 }
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java
index b04e75a88fb..04840285980 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -313,6 +313,9 @@ public class SendProcessor extends AsyncProcessorSupport implements Traceable, E
         // yes we can optimize and use the producer directly for sending
         if (destination.isSingletonProducer()) {
             this.producer = destination.createAsyncProducer();
+            if (this.producer instanceof RouteIdAware ria) {
+                ria.setRouteId(getRouteId());
+            }
             // ensure the producer is managed and started
             camelContext.addService(this.producer, true, true);
         } else {
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
index 62def825c2f..921db5e0faa 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
@@ -1004,14 +1004,14 @@ public abstract class DefaultConfigurationProperties<T> {
     }
 
     /**
-     * Whether routes created by Kamelets should be registered for JMX management.
-     * Enabling this allows to have fine-grained monitoring and management of every route created via Kamelets.
+     * Whether routes created by Kamelets should be registered for JMX management. Enabling this allows to have
+     * fine-grained monitoring and management of every route created via Kamelets.
      *
-     * This is default disabled as a Kamelet is intended as a component (black-box) and its implementation
-     * details as Camel route makes the overall management and monitoring of Camel applications more verbose.
+     * This is default disabled as a Kamelet is intended as a component (black-box) and its implementation details as
+     * Camel route makes the overall management and monitoring of Camel applications more verbose.
      *
-     * During development of Kamelets then enabling this will make it possible for developers to do
-     * fine-grained performance inspection and identify potential bottlenecks in the Kamelet routes.
+     * During development of Kamelets then enabling this will make it possible for developers to do fine-grained
+     * performance inspection and identify potential bottlenecks in the Kamelet routes.
      *
      * However, for production usage then keeping this disabled is recommended.
      */
@@ -1024,11 +1024,11 @@ public abstract class DefaultConfigurationProperties<T> {
     }
 
     /**
-     * Whether routes created by route templates (not Kamelets) should be registered for JMX management.
-     * Enabling this allows to have fine-grained monitoring and management of every route created via route templates.
+     * Whether routes created by route templates (not Kamelets) should be registered for JMX management. Enabling this
+     * allows to have fine-grained monitoring and management of every route created via route templates.
      *
-     * This is default enabled (unlike Kamelets) as routes created via templates is regarded as standard routes,
-     * and should be available for management and monitoring.
+     * This is default enabled (unlike Kamelets) as routes created via templates is regarded as standard routes, and
+     * should be available for management and monitoring.
      */
     public void setJmxManagementRegisterRoutesCreateByTemplate(boolean jmxManagementRegisterRoutesCreateByTemplate) {
         this.jmxManagementRegisterRoutesCreateByTemplate = jmxManagementRegisterRoutesCreateByTemplate;
@@ -2239,14 +2239,14 @@ public abstract class DefaultConfigurationProperties<T> {
     }
 
     /**
-     * Whether routes created by Kamelets should be registered for JMX management.
-     * Enabling this allows to have fine-grained monitoring and management of every route created via Kamelets.
+     * Whether routes created by Kamelets should be registered for JMX management. Enabling this allows to have
+     * fine-grained monitoring and management of every route created via Kamelets.
      *
-     * This is default disabled as a Kamelet is intended as a component (black-box) and its implementation
-     * details as Camel route makes the overall management and monitoring of Camel applications more verbose.
+     * This is default disabled as a Kamelet is intended as a component (black-box) and its implementation details as
+     * Camel route makes the overall management and monitoring of Camel applications more verbose.
      *
-     * During development of Kamelets then enabling this will make it possible for developers to do
-     * fine-grained performance inspection and identify potential bottlenecks in the Kamelet routes.
+     * During development of Kamelets then enabling this will make it possible for developers to do fine-grained
+     * performance inspection and identify potential bottlenecks in the Kamelet routes.
      *
      * However, for production usage then keeping this disabled is recommended.
      */
@@ -2256,11 +2256,11 @@ public abstract class DefaultConfigurationProperties<T> {
     }
 
     /**
-     * Whether routes created by route templates (not Kamelets) should be registered for JMX management.
-     * Enabling this allows to have fine-grained monitoring and management of every route created via route templates.
+     * Whether routes created by route templates (not Kamelets) should be registered for JMX management. Enabling this
+     * allows to have fine-grained monitoring and management of every route created via route templates.
      *
-     * This is default enabled (unlike Kamelets) as routes created via templates is regarded as standard routes,
-     * and should be available for management and monitoring.
+     * This is default enabled (unlike Kamelets) as routes created via templates is regarded as standard routes, and
+     * should be available for management and monitoring.
      */
     public T withJmxManagementRegisterRoutesCreateByTemplate(boolean jmxManagementRegisterRoutesCreateByTemplate) {
         this.jmxManagementRegisterRoutesCreateByTemplate = jmxManagementRegisterRoutesCreateByTemplate;