FELIX-1178 Add m_pendingDeactivation flag to ensure a component is scheduled for activation if deactivation is scheduled but the component is still active if a service reference change occurrs

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@778512 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java b/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java
index c436654..f20d4ab 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java
@@ -201,11 +201,13 @@
     private void serviceAdded( ServiceReference reference )
     {
         // if the component is currently unsatisfied, it may become satisfied
-        // by adding this service, try to activate
-        if ( m_componentManager.getState() == AbstractComponentManager.STATE_UNSATISFIED )
+        // by adding this service, try to activate (also schedule activation
+        // if the component is pending deactivation)
+        if ( m_componentManager.getState() == AbstractComponentManager.STATE_UNSATISFIED
+            || m_componentManager.isPendingDeactivate() )
         {
             m_componentManager.log( LogService.LOG_INFO, "Dependency Manager: Service "
-                + m_dependencyMetadata.getName() + " registered, trying to activate", m_componentManager
+                + m_dependencyMetadata.getName() + " registered, activate component", m_componentManager
                 .getComponentMetadata(), null );
 
             m_componentManager.activate();