Author: djencks
Date: Thu Oct 25 18:00:26 2012
New Revision: 1402239
URL: http://svn.apache.org/viewvc?rev=1402239&view=rev
Log:
FELIX-3680 recalculate size from query on service removal
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
URL:
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java?rev=1402239&r1=1402238&r2=1402239&view=diff
==============================================================================
---
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
(original)
+++
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
Thu Oct 25 18:00:26 2012
@@ -236,11 +236,7 @@ public class DependencyManager implement
}
}
changes = removed;
- if ( m_size.decrementAndGet() < 0 )
- {
- m_size.set( 0 );
-// throw new IllegalStateException( "Component: " +
m_componentManager.getName() + ", Size less than zero for dependency manager "
+ getName() + " removed: " + removed );
- }
+ m_size.set( getServiceReferenceCount() );
serviceRemoved( ref );
}
else
@@ -274,11 +270,7 @@ public class DependencyManager implement
}
}
changes = removed;
- if ( m_size.decrementAndGet() < 0 )
- {
- m_size.set( 0 );
-// throw new IllegalStateException( "Component: " +
m_componentManager.getName() + ", Size less than zero for dependency manager "
+ getName() + " removed: " + removed );
- }
+ m_size.set( getServiceReferenceCount() );
serviceRemoved( ref );
}
else
@@ -736,6 +728,12 @@ public class DependencyManager implement
return null;
}
+ private int getServiceReferenceCount()
+ {
+ ServiceReference[] refs = getFrameworkServiceReferences();
+ return refs == null? 0: refs.length;
+ }
+
/**
* Returns a <code>ServiceReference</code> instances for a service
@@ -1648,8 +1646,8 @@ public class DependencyManager implement
}
else
{
- m_componentManager.log( LogService.LOG_DEBUG, "Component: {0}
dependency: {1} no services, removed: {2}", new Object[]
- {m_componentManager.getName(), getName(), removed},
null );
+ m_componentManager.log( LogService.LOG_DEBUG, "Component: {0}
dependency: {1} no services", new Object[]
+ {m_componentManager.getName(), getName()}, null );
removed.clear();//retainAll of empty set.
}
m_size.set( ( refArray == null ) ? 0 : refArray.length );