You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dj...@apache.org on 2012/10/25 20:00:26 UTC
svn commit: r1402239 -
/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
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 );