You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2009/06/10 14:06:41 UTC

svn commit: r783311 - /felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java

Author: fmeschbe
Date: Wed Jun 10 12:06:41 2009
New Revision: 783311

URL: http://svn.apache.org/viewvc?rev=783311&view=rev
Log:
FELIX-1213 Reactivate component with static reference if a new service
with higher ranking than a bound service is registered

Modified:
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java?rev=783311&r1=783310&r2=783311&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java Wed Jun 10 12:06:41 2009
@@ -230,6 +230,21 @@
     
                     m_componentManager.reactivate();
                 }
+                else
+                {
+                    // single service binding only which already exists
+                    // we have to check whether the bound service is to be
+                    // replaced
+                    ServiceReference[] boundRefs = getBoundServiceReferences();
+                    if ( isHigher( reference, boundRefs[0] ) )
+                    {
+                        m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Service "
+                            + m_dependencyMetadata.getName() + " with higher ranking registered, reactivate component",
+                            m_componentManager.getComponentMetadata(), null );
+
+                        m_componentManager.reactivate();
+                    }
+                }
             }
     
             // otherwise bind if we have a bind method and the service needs