FELIX-3511 - Use java.concurrent from Java 6
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1612796 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java
index be3e674..38205de 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java
@@ -22,7 +22,6 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -285,7 +284,13 @@
final Set<EventHandlerProxy> handlers = new HashSet<EventHandlerProxy>();
// Add all handlers matching everything
- handlers.addAll(this.matchingAllEvents);
+ for(final EventHandlerProxy p : this.matchingAllEvents)
+ {
+ if ( p.canDeliver(event) )
+ {
+ handlers.add(p);
+ }
+ }
// Now check for prefix matches
if ( !this.matchingPrefixTopic.isEmpty() )
@@ -297,7 +302,13 @@
List<EventHandlerProxy> proxies = this.matchingPrefixTopic.get(prefix);
if (proxies != null)
{
- handlers.addAll(proxies);
+ for(final EventHandlerProxy p : proxies)
+ {
+ if ( p.canDeliver(event) )
+ {
+ handlers.add(p);
+ }
+ }
}
pos = prefix.lastIndexOf('/');
@@ -306,18 +317,17 @@
// Add the handlers for matching topic names
List<EventHandlerProxy> proxies = this.matchingTopic.get(topic);
- if (proxies != null) {
- handlers.addAll(proxies);
+ if (proxies != null)
+ {
+ for(final EventHandlerProxy p : proxies)
+ {
+ if ( p.canDeliver(event) )
+ {
+ handlers.add(p);
+ }
+ }
}
- // now check permission and filters
- final Iterator<EventHandlerProxy> i = handlers.iterator();
- while ( i.hasNext() ) {
- final EventHandlerProxy proxy = i.next();
- if ( !proxy.canDeliver(event) ) {
- i.remove();
- }
- }
return handlers;
}