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

amichair pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-rsa.git

commit abbb9b6330b5cc0f2bb385f160154e4495afdcea
Author: Amichai Rothman <[email protected]>
AuthorDate: Fri May 22 23:29:31 2026 +0300

    Simplify EventListenerBridge ignoring its own listener
---
 .../java/org/apache/aries/rsa/core/EventListenerBridge.java    | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git 
a/rsa/src/main/java/org/apache/aries/rsa/core/EventListenerBridge.java 
b/rsa/src/main/java/org/apache/aries/rsa/core/EventListenerBridge.java
index 1030d0cf..716ced68 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/EventListenerBridge.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/EventListenerBridge.java
@@ -161,8 +161,8 @@ public class EventListenerBridge implements 
ServiceListener, ListenerHook {
         OWN_LISTENER_PROP = EventListenerBridge.class.getName(),
         ENDPOINT_LISTENER_CLASS_NAME = EndpointListener.class.getName(),
         ENDPOINT_EVENT_LISTENER_CLASS_NAME = 
EndpointEventListener.class.getName(),
-        SERVICE_LISTENER_FILTER = "(|" + getObjectClass(EndpointListener.class)
-            + getObjectClass(EndpointEventListener.class) + "(" + 
OWN_LISTENER_PROP + "=true))";
+        SERVICE_LISTENER_FILTER = "(&(|" + 
getObjectClass(EndpointListener.class)
+            + getObjectClass(EndpointEventListener.class) + ")(!(" + 
OWN_LISTENER_PROP + "=*)))";
 
     private final Set<ServiceReference<EndpointListener>> oldConsumers =
         Collections.newSetFromMap(new ConcurrentHashMap<>());
@@ -251,12 +251,10 @@ public class EventListenerBridge implements 
ServiceListener, ListenerHook {
     @SuppressWarnings("unchecked")
     public void serviceChanged(ServiceEvent event) {
         ServiceReference<?> sref = event.getServiceReference();
-        boolean ignore = sref.getProperty(OWN_LISTENER_PROP) != null; // 
ignore our own listener
-        List<String> classes = Arrays.asList(
-            
(String[])event.getServiceReference().getProperty(Constants.OBJECTCLASS));
+        List<String> classes = 
Arrays.asList((String[])sref.getProperty(Constants.OBJECTCLASS));
         boolean el = classes.contains(ENDPOINT_LISTENER_CLASS_NAME);
         boolean eel = classes.contains(ENDPOINT_EVENT_LISTENER_CLASS_NAME);
-        if (event.getType() == ServiceEvent.UNREGISTERING || ignore)
+        if (event.getType() == ServiceEvent.UNREGISTERING)
             el = eel = false; // remove both
         // update our consumer lists with relevant one-interface-only consumers
         boolean modified = false;

Reply via email to