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