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;
 	}