You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ma...@apache.org on 2009/01/28 16:11:02 UTC

svn commit: r738508 - in /felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager: ServiceDependency.java ServiceImpl.java

Author: marrs
Date: Wed Jan 28 15:11:01 2009
New Revision: 738508

URL: http://svn.apache.org/viewvc?rev=738508&view=rev
Log:
Forgot to reverse the order in which services are started and optional callbacks invoked.

Modified:
    felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceDependency.java
    felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceImpl.java

Modified: felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceDependency.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceDependency.java?rev=738508&r1=738507&r2=738508&view=diff
==============================================================================
--- felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceDependency.java (original)
+++ felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceDependency.java Wed Jan 28 15:11:01 2009
@@ -58,6 +58,29 @@
     private Object m_defaultImplementation;
     private Object m_defaultImplementationInstance;
     
+    private static final Comparator COMPARATOR = new Comparator() {
+        public int getRank(ServiceReference ref) {
+            Object ranking = ref.getProperty(Constants.SERVICE_RANKING);
+            if (ranking != null && (ranking instanceof Integer)) {
+                return ((Integer) ranking).intValue();
+            }
+            return 0;
+        }
+
+        public int compare(Object a, Object b) {
+            ServiceReference ra = (ServiceReference) a, rb = (ServiceReference) b;
+            int ranka = getRank(ra);
+            int rankb = getRank(rb);
+            if (ranka < rankb) {
+                return -1;
+            }
+            else if (ranka > rankb) {
+                return 1;
+            }
+            return 0;
+        }
+    };
+    
     /**
      * Creates a new service dependency.
      * 
@@ -109,27 +132,7 @@
                     try {
                         refs = m_context.getServiceReferences(m_trackedServiceName.getName(), m_trackedServiceFilter);
                         if (refs != null) {
-                            Arrays.sort(refs, new Comparator() {
-                                public int getRank(ServiceReference ref) {
-                                    Object ranking = ref.getProperty(Constants.SERVICE_RANKING);
-                                    if (ranking != null && (ranking instanceof Integer)) {
-                                        return ((Integer) ranking).intValue();
-                                    }
-                                    return 0;
-                                }
-
-                                public int compare(Object a, Object b) {
-                                    ServiceReference ra = (ServiceReference) a, rb = (ServiceReference) b;
-                                    int ranka = getRank(ra);
-                                    int rankb = getRank(rb);
-                                    if (ranka < rankb) {
-                                        return -1;
-                                    }
-                                    else if (ranka > rankb) {
-                                        return 1;
-                                    }
-                                    return 0;
-                                }});
+                            Arrays.sort(refs, COMPARATOR);
                             ref = refs[0];
                         }
                     }

Modified: felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceImpl.java?rev=738508&r1=738507&r2=738508&view=diff
==============================================================================
--- felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceImpl.java (original)
+++ felix/trunk/dependencymanager/src/main/java/org/apache/felix/dependencymanager/ServiceImpl.java Wed Jan 28 15:11:01 2009
@@ -430,10 +430,10 @@
         configureService(state);
         // inform the state listeners we're starting
         stateListenersStarting();
-        // start tracking optional services
-        startTrackingOptional(state);
         // invoke the start callback, since we're now ready to be used
         invoke(start);
+        // start tracking optional services
+        startTrackingOptional(state);
         // register the service in the framework's service registry
         registerService();
         // inform the state listeners we've started
@@ -451,10 +451,10 @@
         stateListenersStopping();
         // then, unregister the service from the framework
         unregisterService();
-        // invoke the stop callback
-        invoke(stop);
         // stop tracking optional services
         stopTrackingOptional(state);
+        // invoke the stop callback
+        invoke(stop);
         // inform the state listeners we've stopped
         stateListenersStopped();
         // invoke the destroy callback