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;
