Author: pderop
Date: Fri Oct 25 18:39:03 2013
New Revision: 1535807

URL: http://svn.apache.org/r1535807
Log:
FELIX-3910: Made final or volatile some class attributes, which are set from 
synchronized setters,
but possibly read from unsynchronized getters.

Modified:
    
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ComponentImpl.java
    
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java

Modified: 
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ComponentImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ComponentImpl.java?rev=1535807&r1=1535806&r2=1535807&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ComponentImpl.java
 (original)
+++ 
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ComponentImpl.java
 Fri Oct 25 18:39:03 2013
@@ -23,6 +23,7 @@ import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Proxy;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -65,24 +66,24 @@ public class ComponentImpl implements Co
     private String m_callbackStart;
     private String m_callbackStop;
     private String m_callbackDestroy;
-    private Object m_serviceName;
-    private Object m_implementation;
-    private Object m_callbackInstance;
+    private volatile Object m_serviceName;
+    private volatile Object m_implementation;
+    private volatile Object m_callbackInstance;
 
     // configuration (dynamic, but does not affect state)
-    private Dictionary m_serviceProperties;
+    private volatile Dictionary m_serviceProperties;
 
     // configuration (dynamic, and affects state)
-    private ArrayList m_dependencies = new ArrayList();
+    private final ArrayList m_dependencies = new ArrayList();
 
     // runtime state (calculated from dependencies)
     private State m_state;
 
     // runtime state (changes because of state changes)
-    private Object m_serviceInstance;
+    private volatile Object m_serviceInstance;
     private volatile ServiceRegistration m_registration;
-    private boolean m_isBound;
-    private boolean m_isInstantiated;
+    private volatile boolean m_isBound;
+    private volatile boolean m_isInstantiated;
 
     // service state listeners
     private final List m_stateListeners = new ArrayList();
@@ -91,19 +92,19 @@ public class ComponentImpl implements Co
     private final SerialExecutor m_executor = new SerialExecutor();
 
     // instance factory
-       private Object m_instanceFactory;
-       private String m_instanceFactoryCreateMethod;
+       private volatile Object m_instanceFactory;
+       private volatile String m_instanceFactoryCreateMethod;
 
        // composition manager
-       private Object m_compositionManager;
-       private String m_compositionManagerGetMethod;
-       private Object m_compositionManagerInstance;
+       private volatile Object m_compositionManager;
+       private volatile String m_compositionManagerGetMethod;
+       private volatile Object m_compositionManagerInstance;
        
        // internal logging
     private final Logger m_logger;
     
-    private Map m_autoConfig = new HashMap();
-    private Map m_autoConfigInstance = new HashMap();
+    private final Map m_autoConfig = new HashMap();
+    private final Map m_autoConfigInstance = new HashMap();
     
     private boolean m_isStarted = false;
 

Modified: 
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java?rev=1535807&r1=1535806&r2=1535807&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
 (original)
+++ 
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
 Fri Oct 25 18:39:03 2013
@@ -28,7 +28,7 @@ import org.apache.felix.dm.impl.Logger;
  */
 public abstract class DependencyBase implements Dependency, 
DependencyActivation {
     private boolean m_isRequired;
-    private boolean m_isInstanceBound;
+    private volatile boolean m_isInstanceBound;
     protected final Logger m_logger;
     protected volatile boolean m_isStarted;
 


Reply via email to