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();