Author: pderop
Date: Tue Feb 23 23:56:47 2016
New Revision: 1731992

URL: http://svn.apache.org/viewvc?rev=1731992&view=rev
Log:
FELIX-5178: Make some component parameters volatile.

Modified:
    
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
    
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
    
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
    
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
    
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceAdapterImpl.java
    
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java

Modified: 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java?rev=1731992&r1=1731991&r2=1731992&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
 (original)
+++ 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
 Tue Feb 23 23:56:47 2016
@@ -64,34 +64,34 @@ public abstract class AbstractDependency
     /**
      * Component callback used to inject an added dependency.
      */
-    protected String m_add;
+    protected volatile String m_add;
 
     /**
      * Component callback invoked when the dependency has changed.
      */
-    protected String m_change;
+    protected volatile String m_change;
 
     /**
      * Component callback invoked when the dependency becomes unavailable.
      */
-    protected String m_remove;
+    protected volatile String m_remove;
 
     /**
      * Can this Dependency be auto configured in the component instance fields 
?
      */
-    protected boolean m_autoConfig = true;
+    protected volatile boolean m_autoConfig = true;
 
     /**
      * The Component field name where the Dependency can be injected (null 
means any field with a compatible type
      * will be injected).
      */
-    protected String m_autoConfigInstance;
+    protected volatile String m_autoConfigInstance;
 
     /**
      * Indicates if the setAutoConfig method has been invoked. This flag is 
used to force autoconfig to "false" 
      * when the setCallbacks method is invoked, unless the setAutoConfig 
method has been called.
      */
-    protected boolean m_autoConfigInvoked;
+    protected volatile boolean m_autoConfigInvoked;
 
     /**
      * Has this Dependency been started by the Component implementation ? 
Volatile because the getState method 
@@ -103,17 +103,17 @@ public abstract class AbstractDependency
      * The object instance on which the dependency callbacks are invoked on. 
Null means the dependency will be
      * injected to the Component implementation instance(s).
      */
-    protected Object m_callbackInstance;
+    protected volatile Object m_callbackInstance;
 
     /**
      * Tells if the dependency service properties have to be propagated to the 
Component service properties.
      */
-    protected boolean m_propagate;
+    protected volatile boolean m_propagate;
 
     /**
      * The propagate callback instance that is invoked in order to supply 
dynamically some dependency service properties.
      */
-    protected Object m_propagateCallbackInstance;
+    protected volatile Object m_propagateCallbackInstance;
 
     /**
      * The propagate callback method that is invoked in order to supply 
dynamically some dependency service properties.

Modified: 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java?rev=1731992&r1=1731991&r2=1731992&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
 (original)
+++ 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
 Tue Feb 23 23:56:47 2016
@@ -42,14 +42,14 @@ import org.osgi.framework.InvalidSyntaxE
  */
 public class BundleDependencyImpl extends AbstractDependency<BundleDependency> 
implements BundleDependency, BundleTrackerCustomizer, 
ComponentDependencyDeclaration {
     private BundleTracker m_tracker;
-    private int m_stateMask = Bundle.INSTALLED | Bundle.RESOLVED | 
Bundle.ACTIVE;
+    private volatile int m_stateMask = Bundle.INSTALLED | Bundle.RESOLVED | 
Bundle.ACTIVE;
     private Bundle m_bundleInstance;
-    private Filter m_filter;
-    private long m_bundleId = -1;
+    private volatile Filter m_filter;
+    private volatile long m_bundleId = -1;
     private Object m_nullObject;
-    private boolean m_propagate;
-    private Object m_propagateCallbackInstance;
-    private String m_propagateCallbackMethod;
+    private volatile boolean m_propagate;
+    private volatile Object m_propagateCallbackInstance;
+    private volatile String m_propagateCallbackMethod;
 
     public BundleDependencyImpl() {
     }

Modified: 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java?rev=1731992&r1=1731991&r2=1731992&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
 (original)
+++ 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
 Tue Feb 23 23:56:47 2016
@@ -139,7 +139,7 @@ public class ComponentImpl implements Co
     /**
      * The object used to create the component. Can be a class name, or the 
component implementation instance.
      */
-    private Object m_componentDefinition;
+    private volatile Object m_componentDefinition;
     
     /**
      * The component instance.

Modified: 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java?rev=1731992&r1=1731991&r2=1731992&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
 (original)
+++ 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
 Tue Feb 23 23:56:47 2016
@@ -46,15 +46,15 @@ import org.osgi.service.cm.ManagedServic
  * @author <a href="mailto:[email protected]";>Felix Project Team</a>
  */
 public class ConfigurationDependencyImpl extends 
AbstractDependency<ConfigurationDependency> implements ConfigurationDependency, 
ManagedService {
-    private Dictionary<String, Object> m_settings;
-       private String m_pid;
+    private volatile Dictionary<String, Object> m_settings;
+       private volatile String m_pid;
        private ServiceRegistration m_registration;
        private volatile Class<?> m_configType;
-    private MetaTypeProviderImpl m_metaType;
+    private volatile MetaTypeProviderImpl m_metaType;
        private final AtomicBoolean m_updateInvokedCache = new AtomicBoolean();
        private final Logger m_logger;
        private final BundleContext m_context;
-       private boolean m_needsInstance = true;
+       private volatile boolean m_needsInstance = true;
 
     public ConfigurationDependencyImpl() {
         this(null, null);
@@ -273,9 +273,7 @@ public class ConfigurationDependencyImpl
         InvocationUtil.invokeUpdated(m_component.getExecutor(), () -> 
invokeUpdated(settings));
         
         // At this point, we have accepted the configuration.
-        synchronized (this) {
-            m_settings = settings;
-        }
+        m_settings = settings;
 
         if ((oldSettings == null) && (settings != null)) {
             // Notify the component that our dependency is available.

Modified: 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceAdapterImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceAdapterImpl.java?rev=1731992&r1=1731991&r2=1731992&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceAdapterImpl.java
 (original)
+++ 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceAdapterImpl.java
 Tue Feb 23 23:56:47 2016
@@ -36,9 +36,9 @@ import org.apache.felix.dm.context.Depen
  * @author <a href="mailto:[email protected]";>Felix Project Team</a>
  */
 public class ResourceAdapterImpl extends FilterComponent {
-    private Object m_callbackInstance = null;
-    private String m_callbackChanged = "changed";
-    private String m_callbackAdded = "setResource";
+    private final Object m_callbackInstance;
+    private final String m_callbackChanged;
+    private final String m_callbackAdded;
     private final String m_resourceFilter;
     
     /**

Modified: 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java?rev=1731992&r1=1731991&r2=1731992&view=diff
==============================================================================
--- 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
 (original)
+++ 
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
 Tue Feb 23 23:56:47 2016
@@ -47,7 +47,7 @@ import org.osgi.framework.ServiceReferen
  */
 public class ServiceDependencyImpl extends 
AbstractDependency<ServiceDependency> implements ServiceDependency, 
ServiceTrackerCustomizer {
        protected volatile ServiceTracker m_tracker;
-    protected String m_swap;
+    protected volatile String m_swap;
     protected volatile Class<?> m_trackedServiceName;
     private volatile String m_trackedServiceFilter;
     private volatile String m_trackedServiceFilterUnmodified;
@@ -55,9 +55,9 @@ public class ServiceDependencyImpl exten
     private volatile Object m_defaultImplementation;
     private volatile Object m_defaultImplementationInstance;
     private volatile Object m_nullObject;
-    private boolean m_debug = false;
-    private String m_debugKey;
-    private long m_trackedServiceReferenceId;
+    private volatile boolean m_debug = false;
+    private volatile String m_debugKey;
+    private volatile long m_trackedServiceReferenceId;
     
     public ServiceDependency setDebug(String debugKey) {
        m_debugKey = debugKey;


Reply via email to