FELIX-425 Decrement service counter when a service is removed whose
target filter matches regardless of whether the service is actually
bound or not
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@599073 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 dbd4d89..57d2a3a 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
@@ -217,15 +217,25 @@
*/
private void serviceRemoved( ServiceReference reference )
{
- // check whether we are bound to that service, do nothing if not
- if ( getBoundService( reference ) == null )
+ // ignore the service, if it does not match the target filter
+ if ( !targetFilterMatch( reference ) )
{
+ m_componentManager.getActivator().log( LogService.LOG_DEBUG,
+ "Dependency Manager: Ignoring removed Service for " + m_dependencyMetadata.getName()
+ + " : does not match target filter " + getTarget(), m_componentManager.getComponentMetadata(),
+ null );
return;
}
// decrement the number of services
m_size--;
+ // check whether we are bound to that service, do nothing if not
+ if ( getBoundService( reference ) == null )
+ {
+ return;
+ }
+
if ( handleServiceEvent() )
{
// if the dependency is not satisfied anymore, we have to