You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2014/03/24 17:32:06 UTC

[08/24] git commit: [KARAF-2845] Make sure SingleServiceTracker#stop() will call SingleServiceListener#serviceLost()

[KARAF-2845] Make sure SingleServiceTracker#stop() will call SingleServiceListener#serviceLost()


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/3cf38e7b
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/3cf38e7b
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/3cf38e7b

Branch: refs/heads/master
Commit: 3cf38e7b5124009067b87ef6b28a958dbd2bd336
Parents: e7f6774
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Mar 24 13:23:13 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Mar 24 17:30:12 2014 +0100

----------------------------------------------------------------------
 .../org/apache/karaf/util/tracker/SingleServiceTracker.java  | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/3cf38e7b/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java b/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
index c96e73a..a946c48 100644
--- a/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
+++ b/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
@@ -161,10 +161,14 @@ public final class SingleServiceTracker<T> {
         if (open.compareAndSet(true, false)) {
             ctx.removeServiceListener(listener);
 
+            ServiceReference deadRef;
             synchronized (this) {
-                ServiceReference deadRef = ref.getAndSet(null);
+                deadRef = ref.getAndSet(null);
                 service.set(null);
-                if (deadRef != null) ctx.ungetService(deadRef);
+            }
+            if (deadRef != null) {
+                serviceListener.serviceLost();
+                ctx.ungetService(deadRef);
             }
         }
     }