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