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;