[Framework] Fix concurrency issue in CapabilitySet as reported by pderop


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1679367 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java b/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java
index 629d34d..60356c7 100644
--- a/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java
+++ b/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java
@@ -25,8 +25,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -88,7 +86,7 @@
         for (int i = 0; (indexProps != null) && (i < indexProps.size()); i++)
         {
             m_indices.put(
-                indexProps.get(i), new HashMap<Object, Set<BundleCapability>>());
+                indexProps.get(i), new ConcurrentHashMap<Object, Set<BundleCapability>>());
         }
     }
 
@@ -131,7 +129,7 @@
         Set<BundleCapability> caps = index.get(capValue);
         if (caps == null)
         {
-            caps = new HashSet<BundleCapability>();
+            caps = Collections.newSetFromMap(new ConcurrentHashMap<BundleCapability, Boolean>());
             index.put(capValue, caps);
         }
         caps.add(cap);
@@ -194,7 +192,7 @@
 
     private Set<Capability> match(Set<Capability> caps, final SimpleFilter sf)
     {
-        Set<Capability> matches = new HashSet<Capability>();
+        Set<Capability> matches = Collections.newSetFromMap(new ConcurrentHashMap<Capability, Boolean>());
 
         if (sf.getOperation() == SimpleFilter.MATCH_ALL)
         {