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/03/14 08:29:35 UTC

(camel) branch main updated: camel-core - Avoid clutter JMX with anonymous internal EventNotifiers

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 3d351350912 camel-core - Avoid clutter JMX with anonymous internal EventNotifiers
3d351350912 is described below

commit 3d35135091266b2ced6c447fe92ed86dd7d2e936
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Mar 14 09:26:23 2024 +0100

    camel-core - Avoid clutter JMX with anonymous internal EventNotifiers
---
 .../camel/impl/debugger/DefaultDebugger.java       |  3 +-
 .../camel/impl/engine/CamelInternalProcessor.java  |  3 +-
 .../engine/DefaultRuntimeEndpointRegistry.java     |  3 +-
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |  4 +-
 .../apache/camel/impl/console/EventConsole.java    |  3 +-
 .../org/apache/camel/builder/NotifyBuilder.java    |  3 +-
 .../org/apache/camel/main/BaseMainSupport.java     | 78 ++++++++++++----------
 .../camel/main/MainDurationEventNotifier.java      |  4 +-
 .../management/JmxNotificationEventNotifier.java   |  1 +
 .../throttling/ThrottlingInflightRoutePolicy.java  |  3 +-
 10 files changed, 62 insertions(+), 43 deletions(-)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java
index 86f8ca36661..b001120c5ac 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java
@@ -30,6 +30,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.Breakpoint;
 import org.apache.camel.spi.CamelEvent;
@@ -369,7 +370,7 @@ public class DefaultDebugger extends ServiceSupport implements Debugger, CamelCo
         return "DefaultDebugger";
     }
 
-    private final class DebugEventNotifier extends EventNotifierSupport {
+    private final class DebugEventNotifier extends EventNotifierSupport implements NonManagedService {
 
         private DebugEventNotifier() {
             setIgnoreCamelContextEvents(true);
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
index 9823a00f2f9..812794723bf 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
@@ -32,6 +32,7 @@ import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NamedRoute;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.Ordered;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -1219,7 +1220,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
     /**
      * Event notifier for {@link BacklogTracerAdvice} to capture {@link Exchange} sent to endpoints during tracing.
      */
-    private static final class BacklogTraceAdviceEventNotifier extends SimpleEventNotifierSupport {
+    private static final class BacklogTraceAdviceEventNotifier extends SimpleEventNotifierSupport implements NonManagedService {
 
         private final Object dummy = new Object();
 
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java
index 05e18f97b13..f3748e91ce9 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java
@@ -25,6 +25,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
@@ -41,7 +42,7 @@ import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport implements RuntimeEndpointRegistry {
+public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport implements RuntimeEndpointRegistry, NonManagedService {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRuntimeEndpointRegistry.class);
 
diff --git a/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index 349c2ef4ab4..90a7b5fb6b5 100644
--- a/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -28,6 +28,7 @@ import java.util.stream.Collectors;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExtendedStartupListener;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.api.management.ManagedAttribute;
@@ -360,7 +361,8 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
         }
     }
 
-    private class CamelContextStartupListener extends SimpleEventNotifierSupport implements ExtendedStartupListener {
+    private class CamelContextStartupListener extends SimpleEventNotifierSupport
+            implements ExtendedStartupListener, NonManagedService {
         @Override
         public void notify(CamelEvent event) throws Exception {
             onCamelContextStarted();
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java
index 106472c9416..a12479dc095 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.camel.NonManagedService;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.Configurer;
 import org.apache.camel.spi.Metadata;
@@ -171,7 +172,7 @@ public class EventConsole extends AbstractDevConsole {
         return arr;
     }
 
-    private class ConsoleEventNotifier extends EventNotifierSupport {
+    private class ConsoleEventNotifier extends EventNotifierSupport implements NonManagedService {
 
         @Override
         public void notify(CamelEvent event) throws Exception {
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java
index 18dde9db1bd..77f14e9bdf1 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java
@@ -30,6 +30,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.Predicate;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.CamelEvent;
@@ -1322,7 +1323,7 @@ public class NotifyBuilder {
     /**
      * Notifier which hooks into Camel to listen for {@link Exchange} relevant events for this builder
      */
-    private final class ExchangeNotifier extends EventNotifierSupport {
+    private final class ExchangeNotifier extends EventNotifierSupport implements NonManagedService {
 
         @Override
         public void notify(CamelEvent event) throws Exception {
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index da315a53a79..afb703f4e9d 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -42,6 +42,7 @@ import org.apache.camel.Component;
 import org.apache.camel.Configuration;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoSuchLanguageException;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.PropertiesLookupListener;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
@@ -731,41 +732,7 @@ public abstract class BaseMainSupport extends BaseService {
         // we want to log the property placeholder summary after routes has been started,
         // but before camel context logs that it has been started, so we need to use an event listener
         if (standalone && mainConfigurationProperties.isAutoConfigurationLogSummary()) {
-            camelContext.getManagementStrategy().addEventNotifier(new SimpleEventNotifierSupport() {
-                @Override
-                public boolean isEnabled(CamelEvent event) {
-                    return event instanceof CamelEvent.CamelContextRoutesStartedEvent;
-                }
-
-                @Override
-                public void notify(CamelEvent event) throws Exception {
-                    // log summary of configurations
-                    if (!propertyPlaceholders.isEmpty()) {
-                        boolean header = true;
-                        for (var entry : propertyPlaceholders.entrySet()) {
-                            String k = entry.getKey().toString();
-                            Object v = entry.getValue();
-                            Object dv = propertyPlaceholders.getDefaultValue(k);
-                            // skip logging configurations that are using default-value
-                            // or a kamelet that uses templateId as a parameter
-                            boolean same = ObjectHelper.equal(v, dv);
-                            boolean skip = "templateId".equals(k);
-                            if (!same && !skip) {
-                                if (header) {
-                                    LOG.info("Property-placeholders summary");
-                                    header = false;
-                                }
-                                String loc = locationSummary(propertyPlaceholders, k);
-                                if (SensitiveUtils.containsSensitive(k)) {
-                                    LOG.info("    {} {}=xxxxxx", loc, k);
-                                } else {
-                                    LOG.info("    {} {}={}", loc, k, v);
-                                }
-                            }
-                        }
-                    }
-                }
-            });
+            camelContext.getManagementStrategy().addEventNotifier(new PlaceholderSummaryEventNotifier(propertyPlaceholders));
         }
     }
 
@@ -2324,4 +2291,45 @@ public abstract class BaseMainSupport extends BaseService {
         }
     }
 
+    private static class PlaceholderSummaryEventNotifier extends SimpleEventNotifierSupport implements NonManagedService {
+        private final OrderedLocationProperties propertyPlaceholders;
+
+        public PlaceholderSummaryEventNotifier(OrderedLocationProperties propertyPlaceholders) {
+            this.propertyPlaceholders = propertyPlaceholders;
+        }
+
+        @Override
+        public boolean isEnabled(CamelEvent event) {
+            return event instanceof CamelEvent.CamelContextRoutesStartedEvent;
+        }
+
+        @Override
+        public void notify(CamelEvent event) throws Exception {
+            // log summary of configurations
+            if (!propertyPlaceholders.isEmpty()) {
+                boolean header = true;
+                for (var entry : propertyPlaceholders.entrySet()) {
+                    String k = entry.getKey().toString();
+                    Object v = entry.getValue();
+                    Object dv = propertyPlaceholders.getDefaultValue(k);
+                    // skip logging configurations that are using default-value
+                    // or a kamelet that uses templateId as a parameter
+                    boolean same = ObjectHelper.equal(v, dv);
+                    boolean skip = "templateId".equals(k);
+                    if (!same && !skip) {
+                        if (header) {
+                            LOG.info("Property-placeholders summary");
+                            header = false;
+                        }
+                        String loc = locationSummary(propertyPlaceholders, k);
+                        if (SensitiveUtils.containsSensitive(k)) {
+                            LOG.info("    {} {}=xxxxxx", loc, k);
+                        } else {
+                            LOG.info("    {} {}={}", loc, k, v);
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java b/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java
index 9fde1dd5ed7..c94ed37a44a 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java
@@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.LongAdder;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.util.StopWatch;
@@ -32,7 +33,8 @@ import org.slf4j.LoggerFactory;
  * A {@link org.apache.camel.spi.EventNotifier} to trigger (shutdown of the Main JVM, or stopping all routes) when
  * maximum number of messages has been processed.
  */
-public class MainDurationEventNotifier extends EventNotifierSupport {
+public class MainDurationEventNotifier extends EventNotifierSupport implements NonManagedService {
+
     private static final Logger LOG = LoggerFactory.getLogger(MainDurationEventNotifier.class);
 
     private enum Action {
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java b/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
index e74d4aa5157..7e51c9c88ea 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
  * A JMX based {@link EventNotifier} which broadcasts JMX {@link Notification}s.
  */
 public class JmxNotificationEventNotifier extends EventNotifierSupport implements JmxNotificationBroadcasterAware {
+
     private static final Logger LOG = LoggerFactory.getLogger(JmxNotificationEventNotifier.class);
     private final AtomicLong counter = new AtomicLong();
     private NotificationBroadcasterSupport notificationBroadcaster;
diff --git a/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java b/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
index f979d92b205..d31ac648bd7 100644
--- a/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
+++ b/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
@@ -26,6 +26,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
+import org.apache.camel.NonManagedService;
 import org.apache.camel.Route;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
@@ -285,7 +286,7 @@ public class ThrottlingInflightRoutePolicy extends RoutePolicySupport implements
      * {@link org.apache.camel.spi.EventNotifier} to keep track on when {@link Exchange} is done, so we can throttle
      * accordingly.
      */
-    private class ContextScopedEventNotifier extends EventNotifierSupport {
+    private class ContextScopedEventNotifier extends EventNotifierSupport implements NonManagedService {
 
         @Override
         public void notify(CamelEvent event) {