You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2018/01/20 15:45:06 UTC

svn commit: r1821754 - in /felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager: AbstractComponentManager.java SingleComponentManager.java

Author: cziegeler
Date: Sat Jan 20 15:45:06 2018
New Revision: 1821754

URL: http://svn.apache.org/viewvc?rev=1821754&view=rev
Log:
FELIX-5775 : Service properties not updated for lazy service when configuration changes

Modified:
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java?rev=1821754&r1=1821753&r2=1821754&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java Sat Jan 20 15:45:06 2018
@@ -446,6 +446,7 @@ public abstract class AbstractComponentM
 
                 long count = taskCounter.incrementAndGet();
 
+                @Override
                 public void run()
                 {
                     try
@@ -537,6 +538,7 @@ public abstract class AbstractComponentM
 
                 long count = taskCounter.incrementAndGet();
 
+                @Override
                 public void run()
                 {
                     try
@@ -591,6 +593,7 @@ public abstract class AbstractComponentM
 
     //---------- Component interface ------------------------------------------
 
+    @Override
     public long getId()
     {
         return m_componentId;
@@ -969,6 +972,11 @@ public abstract class AbstractComponentM
         return true;
     }
 
+    protected ServiceRegistration<S> getServiceRegistration()
+    {
+        return registrationManager.getServiceRegistration();
+    }
+
     AtomicInteger getTrackingCount()
     {
         return m_trackingCount;
@@ -1085,6 +1093,7 @@ public abstract class AbstractComponentM
     /**
      * Returns <code>true</code> if logging for the given level is enabled.
      */
+    @Override
     public boolean isLogEnabled(int level)
     {
         ComponentActivator activator = getActivator();
@@ -1095,6 +1104,7 @@ public abstract class AbstractComponentM
         return false;
     }
 
+    @Override
     public void log(int level, String message, Throwable ex)
     {
         ComponentActivator activator = getActivator();
@@ -1104,6 +1114,7 @@ public abstract class AbstractComponentM
         }
     }
 
+    @Override
     public void log(int level, String message, Object[] arguments, Throwable ex)
     {
         ComponentActivator activator = getActivator();
@@ -1227,6 +1238,7 @@ public abstract class AbstractComponentM
         return m_dependencyManagers;
     }
 
+    @Override
     public List<? extends ReferenceManager<S, ?>> getReferenceManagers()
     {
         return m_dependencyManagers;
@@ -1279,6 +1291,7 @@ public abstract class AbstractComponentM
     /* (non-Javadoc)
      * @see org.apache.felix.scr.impl.manager.ComponentManager#getProperties()
      */
+    @Override
     public abstract Map<String, Object> getProperties();
 
     public abstract void setServiceProperties(Dictionary<String, ?> serviceProperties);
@@ -1401,6 +1414,7 @@ public abstract class AbstractComponentM
         return m_container.getComponentMetadata();
     }
 
+    @Override
     public int getSpecState()
     {
         return getState().getSpecState();

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java?rev=1821754&r1=1821753&r2=1821754&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java Sat Jan 20 15:45:06 2018
@@ -30,6 +30,7 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.felix.scr.impl.helper.ComponentMethod;
 import org.apache.felix.scr.impl.helper.ComponentMethods;
 import org.apache.felix.scr.impl.helper.MethodResult;
+import org.apache.felix.scr.impl.metadata.DSVersion;
 import org.apache.felix.scr.impl.metadata.TargetedPID;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
@@ -108,12 +109,14 @@ public class SingleComponentManager<S> e
         {
             S tmpComponent = createImplementationObject( null, new SetImplementationObject<S>()
             {
+                @Override
                 public void presetComponentContext( ComponentContextImpl<S> componentContext )
                 {
                     m_componentContext = componentContext;
                 }
 
 
+                @Override
                 public void resetImplementationObject( S implementationObject )
                 {
                     m_componentContext = null;
@@ -515,7 +518,7 @@ public class SingleComponentManager<S> e
         if (m_componentContext != null)
         {
             m_componentContext.unsetServiceRegistration();
-        }        
+        }
     }
 
     @Override
@@ -528,9 +531,14 @@ public class SingleComponentManager<S> e
         return super.getServiceProperties();
     }
 
-    final ServiceRegistration<S> getServiceRegistration()
+    @Override
+    protected ServiceRegistration<S> getServiceRegistration()
     {
-        return m_componentContext == null? null: m_componentContext.getServiceRegistration();
+        if ( getComponentMetadata().getDSVersion() == DSVersion.DS12Felix )
+        {
+            return m_componentContext != null ? m_componentContext.getServiceRegistration() : null;
+        }
+        return super.getServiceRegistration();
     }
 
 
@@ -801,6 +809,7 @@ public class SingleComponentManager<S> e
         return regProps.equals( props );
     }
 
+    @Override
     public S getService( Bundle bundle, ServiceRegistration<S> serviceRegistration )
     {
         if ( getActivator().enterCreate( serviceRegistration.getReference() ) )
@@ -838,7 +847,7 @@ public class SingleComponentManager<S> e
                 //This is backup.  Normally done in createComponent.
                 getActivator().leaveCreate(serviceRegistration.getReference());
             }
-            
+
         }
         finally
         {
@@ -930,6 +939,7 @@ public class SingleComponentManager<S> e
 
     }
 
+    @Override
     public void ungetService( Bundle bundle, ServiceRegistration<S> serviceRegistration, S o )
     {
         obtainStateLock( );