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 ceb7e6fd322936494ae260353f1c255e3ee9fe31
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Feb 24 15:20:32 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)
---
 .../MicrometerExchangeEventNotifier.java           | 45 ++++++++++++++++++----
 1 file changed, 37 insertions(+), 8 deletions(-)

diff --git 
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java
 
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java
index 61ce90e9526..8dbac32b26f 100644
--- 
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java
+++ 
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java
@@ -26,6 +26,7 @@ import io.micrometer.core.instrument.Meter;
 import io.micrometer.core.instrument.Tags;
 import io.micrometer.core.instrument.Timer;
 import org.apache.camel.Exchange;
+import org.apache.camel.Route;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
@@ -33,6 +34,8 @@ import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeFailedEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.spi.InflightRepository;
+import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.SimpleEventNotifierSupport;
 
 public class MicrometerExchangeEventNotifier extends 
AbstractMicrometerEventNotifier<ExchangeEvent> {
@@ -42,6 +45,8 @@ public class MicrometerExchangeEventNotifier extends 
AbstractMicrometerEventNoti
     private Predicate<Exchange> ignoreExchanges = exchange -> false;
     private MicrometerExchangeEventNotifierNamingStrategy namingStrategy
             = MicrometerExchangeEventNotifierNamingStrategy.DEFAULT;
+    boolean registerKamelets;
+    boolean registerTemplates = true;
 
     public MicrometerExchangeEventNotifier() {
         super(ExchangeEvent.class);
@@ -63,6 +68,15 @@ public class MicrometerExchangeEventNotifier extends 
AbstractMicrometerEventNoti
         this.namingStrategy = namingStrategy;
     }
 
+    @Override
+    protected void doInit() throws Exception {
+        ManagementStrategy ms = getCamelContext().getManagementStrategy();
+        if (ms != null && ms.getManagementAgent() != null) {
+            registerKamelets = 
ms.getManagementAgent().getRegisterRoutesCreateByKamelet();
+            registerTemplates = 
ms.getManagementAgent().getRegisterRoutesCreateByTemplate();
+        }
+    }
+
     @Override
     protected void doStart() throws Exception {
         super.doStart();
@@ -94,14 +108,29 @@ public class MicrometerExchangeEventNotifier extends 
AbstractMicrometerEventNoti
 
     @Override
     public void notify(CamelEvent eventObject) {
-        if (!(getIgnoreExchanges().test(((ExchangeEvent) 
eventObject).getExchange()))) {
-            handleExchangeEvent((ExchangeEvent) eventObject);
-            if (eventObject instanceof ExchangeCreatedEvent) {
-                handleCreatedEvent((ExchangeCreatedEvent) eventObject);
-            } else if (eventObject instanceof ExchangeSentEvent) {
-                handleSentEvent((ExchangeSentEvent) eventObject);
-            } else if (eventObject instanceof ExchangeCompletedEvent || 
eventObject instanceof ExchangeFailedEvent) {
-                handleDoneEvent((ExchangeEvent) eventObject);
+        if (eventObject instanceof ExchangeEvent ee) {
+            // skip routes that should not be included
+            boolean skip = false;
+            String routeId = ExchangeHelper.getAtRouteId(ee.getExchange());
+            if (routeId != null) {
+                Route route = ee.getExchange().getContext().getRoute(routeId);
+                if (route != null) {
+                    skip = (route.isCreatedByKamelet() && !registerKamelets)
+                            || (route.isCreatedByRouteTemplate() && 
!registerTemplates);
+                }
+            }
+            if (skip) {
+                return;
+            }
+            if (!(getIgnoreExchanges().test(ee.getExchange()))) {
+                handleExchangeEvent(ee);
+                if (eventObject instanceof ExchangeCreatedEvent) {
+                    handleCreatedEvent((ExchangeCreatedEvent) eventObject);
+                } else if (eventObject instanceof ExchangeSentEvent) {
+                    handleSentEvent((ExchangeSentEvent) eventObject);
+                } else if (eventObject instanceof ExchangeCompletedEvent || 
eventObject instanceof ExchangeFailedEvent) {
+                    handleDoneEvent((ExchangeEvent) eventObject);
+                }
             }
         }
     }

Reply via email to