You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2007/03/19 18:03:30 UTC

svn commit: r520015 - /incubator/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java

Author: rickhall
Date: Mon Mar 19 10:03:29 2007
New Revision: 520015

URL: http://svn.apache.org/viewvc?view=rev&rev=520015
Log:
Fixed some synchronization issues when accesses properties.

Modified:
    incubator/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java

Modified: incubator/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java
URL: http://svn.apache.org/viewvc/incubator/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java?view=diff&rev=520015&r1=520014&r2=520015
==============================================================================
--- incubator/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java (original)
+++ incubator/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java Mon Mar 19 10:03:29 2007
@@ -41,7 +41,7 @@
     // Service factory interface.
     private ServiceFactory m_factory = null;
     // Associated property dictionary.
-    private Map m_propMap = null;
+    private Map m_propMap =  new StringMap(false);
     // Re-usable service reference.
     private ServiceReferenceImpl m_ref = null;
 
@@ -153,7 +153,7 @@
 
     protected String[] getPropertyKeys()
     {
-        synchronized (m_list)
+        synchronized (m_propMap)
         {
             m_list.clear();
             Iterator i = m_propMap.entrySet().iterator();
@@ -230,29 +230,24 @@
 
     private void initializeProperties(Dictionary dict)
     {
-        // Create a case insensitive map.
-        if (m_propMap == null)
-        {
-            m_propMap = new StringMap(false);
-        }
-        else
+        synchronized (m_propMap)
         {
             m_propMap.clear();
-        }
-
-        if (dict != null)
-        {
-            Enumeration keys = dict.keys();
-            while (keys.hasMoreElements())
+    
+            if (dict != null)
             {
-                Object key = keys.nextElement();
-                m_propMap.put(key, dict.get(key));
+                Enumeration keys = dict.keys();
+                while (keys.hasMoreElements())
+                {
+                    Object key = keys.nextElement();
+                    m_propMap.put(key, dict.get(key));
+                }
             }
+    
+            // Add the framework assigned properties.
+            m_propMap.put(Constants.OBJECTCLASS, m_classes);
+            m_propMap.put(Constants.SERVICE_ID, m_serviceId);
         }
-
-        // Add the framework assigned properties.
-        m_propMap.put(Constants.OBJECTCLASS, m_classes);
-        m_propMap.put(Constants.SERVICE_ID, m_serviceId);
     }
 
     private Object getFactoryUnchecked(Bundle bundle)