Author: jsedding
Date: Mon Jun 29 18:11:57 2015
New Revision: 1688279

URL: http://svn.apache.org/r1688279
Log:
SLING-4845 - MockBundleContext is not thread-safe

Modified:
    
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java

Modified: 
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java?rev=1688279&r1=1688278&r2=1688279&view=diff
==============================================================================
--- 
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java
 (original)
+++ 
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java
 Mon Jun 29 18:11:57 2015
@@ -23,12 +23,12 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Dictionary;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.felix.framework.FilterImpl;
@@ -47,19 +47,26 @@ import org.osgi.framework.ServiceFactory
 import org.osgi.framework.ServiceListener;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.collect.ImmutableList;
 
+import static java.util.Collections.synchronizedList;
+import static java.util.Collections.synchronizedSortedSet;
+
 /**
  * Mock {@link BundleContext} implementation.
  */
 class MockBundleContext implements BundleContext {
 
+    private static final Logger LOG = 
LoggerFactory.getLogger(MockBundleContext.class);
+
     private final MockBundle bundle;
-    private final SortedSet<MockServiceRegistration> registeredServices = new 
TreeSet<MockServiceRegistration>();
-    private final Map<ServiceListener, Filter> serviceListeners = new 
HashMap<ServiceListener, Filter>();
-    private final List<BundleListener> bundleListeners = new 
ArrayList<BundleListener>();
-    
+    private final SortedSet<MockServiceRegistration> registeredServices = 
synchronizedSortedSet(new TreeSet<MockServiceRegistration>());
+    private final Map<ServiceListener, Filter> serviceListeners = new 
ConcurrentHashMap<ServiceListener, Filter>();
+    private final List<BundleListener> bundleListeners = synchronizedList(new 
ArrayList<BundleListener>());
+
     public MockBundleContext() {
         this.bundle = new MockBundle(this);
     }


Reply via email to