FELIX-4080 : Core R5] Add support for org.osgi.framework.UnfilteredServiceListener. Apply patch from David Bosschaert
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1549743 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java b/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java
index 9da849f..623def0 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java
@@ -48,6 +48,7 @@
import org.osgi.framework.ServicePermission;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.SynchronousBundleListener;
+import org.osgi.framework.UnfilteredServiceListener;
import org.osgi.framework.hooks.service.ListenerHook;
import org.osgi.framework.launch.Framework;
@@ -908,8 +909,15 @@
if (hasPermission)
{
// Dispatch according to the filter.
- boolean matched = (filter == null)
- || filter.match(((ServiceEvent) event).getServiceReference());
+ boolean matched;
+ if (l instanceof UnfilteredServiceListener) {
+ // An UnfilteredServiceListener always matches, regardless of the filter.
+ // The filter is still passed on to the Service Registry Hooks.
+ matched = true;
+ } else {
+ matched = (filter == null)
+ || filter.match(((ServiceEvent) event).getServiceReference());
+ }
if (matched)
{
@@ -1112,4 +1120,4 @@
public Map<BundleContext, List<ListenerInfo>> m_listeners = null;
public EventObject m_event = null;
}
-}
\ No newline at end of file
+}