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