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/07/31 16:56:34 UTC

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

Author: fmeschbe
Date: Fri Jul 31 14:56:34 2009
New Revision: 799629

URL: http://svn.apache.org/viewvc?rev=799629&view=rev
Log:
FELIX-1414 Reverting changes of FELIX-950 and FELIX-1213 thus not rebinding
services for unary references in case of the registration of a higher
ranking service.

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=799629&r1=799628&r2=799629&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 Fri Jul 31 14:56:34 2009
@@ -19,9 +19,6 @@
 package org.apache.felix.scr.impl.manager;
 
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Dictionary;
@@ -30,7 +27,6 @@
 import java.util.Map;
 
 import org.apache.felix.scr.Reference;
-import org.apache.felix.scr.impl.helper.ReflectionHelper;
 import org.apache.felix.scr.impl.metadata.ReferenceMetadata;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
@@ -266,21 +262,6 @@
 
                     m_componentManager.reactivate( ComponentConstants.DEACTIVATION_REASON_REFERENCE );
                 }
-                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( ComponentConstants.DEACTIVATION_REASON_REFERENCE );
-                    }
-                }
             }
 
             // otherwise bind if we have a bind method and the service needs
@@ -293,21 +274,6 @@
                     // bind the service, getting it if required
                     invokeBindMethod( reference );
                 }
-                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] ) )
-                    {
-                        // bind the service, getting it if required
-                        invokeBindMethod( reference );
-
-                        // unbind the old service reference
-                        unbind( boundRefs );
-                    }
-                }
             }
         }
 
@@ -664,56 +630,6 @@
 
 
     /**
-     * Returns <code>true</code> if the <code>newReference</code> has a higher
-     * ranking than the <code>oldReference</code>, otherwise <code>false</code>
-     * is returned.
-     * <p>
-     * The higher ranking of a service reference is defined in the OSGi
-     * Compendium Services Specification as the service with the highest service
-     * ranking as specified by the service.ranking property. If both services
-     * have the same service ranking, then the service with the lowest service
-     * ID as specified by the service.id property is chosen.
-     *
-     * @param newReference The ServiceReference representing the newly added
-     *      Service
-     * @param oldReference The ServiceReference representing the service which
-     *      is already bound to the component
-     *
-     * @return <code>true</code> if <code>newReference</code> has higher ranking
-     */
-    private boolean isHigher( ServiceReference newReference, ServiceReference oldReference )
-    {
-        // get and compare the service.ranking properties
-        int nrRank = getServiceRanking( newReference );
-        int orRank = getServiceRanking( oldReference );
-        if ( nrRank > orRank )
-        {
-            return true;
-        }
-        else if ( nrRank < orRank )
-        {
-            return false;
-        }
-
-        // no ranks are equal, compare the service ids. These ids are never equal,
-        // so unless a problem exists, this should be decisive
-        try
-        {
-            return getServiceId( newReference ) < getServiceId( oldReference );
-        }
-        catch ( Exception e )
-        {
-            // ignore, we don't expect an exception, since the servid.id
-            // property is set by the framework as a Long value; so we neither
-            // expect this property to be null nor to be anything else than Long
-        }
-
-        // fall back to newReference not being higher
-        return false;
-    }
-
-
-    /**
      * Returns the value of the <code>service.ranking</code> service property
      * if the property exists and is of type <code>java.lang.Integer</code>. If
      * the property does not exist or is of another type, zero is returned as