better respect of serviceref#unget
diff --git a/winegrower-core/src/main/java/org/apache/winegrower/deployer/BundleContextImpl.java b/winegrower-core/src/main/java/org/apache/winegrower/deployer/BundleContextImpl.java
index ffcc271..e1f3133 100644
--- a/winegrower-core/src/main/java/org/apache/winegrower/deployer/BundleContextImpl.java
+++ b/winegrower-core/src/main/java/org/apache/winegrower/deployer/BundleContextImpl.java
@@ -238,7 +238,7 @@
if (Constants.SCOPE_BUNDLE.equals(serviceReference.getProperty(Constants.SERVICE_SCOPE))) {
return serviceInstances.remove(serviceReference) != null;
}
- return serviceReference.unget();
+ return serviceReference.unget(null);
}
@Override
diff --git a/winegrower-core/src/main/java/org/apache/winegrower/deployer/ServiceObjectsImpl.java b/winegrower-core/src/main/java/org/apache/winegrower/deployer/ServiceObjectsImpl.java
index 4d178ac..75a1783 100644
--- a/winegrower-core/src/main/java/org/apache/winegrower/deployer/ServiceObjectsImpl.java
+++ b/winegrower-core/src/main/java/org/apache/winegrower/deployer/ServiceObjectsImpl.java
@@ -35,7 +35,7 @@
if (reference.hasFactory()) {
ServiceFactory.class.cast(reference.getFactory()).ungetService(reference.getBundle(), reference.getRegistration(), service);
} else if (reference.getReference() == service) {
- reference.unget();
+ reference.unget(service);
}
}
diff --git a/winegrower-core/src/main/java/org/apache/winegrower/service/ServiceReferenceImpl.java b/winegrower-core/src/main/java/org/apache/winegrower/service/ServiceReferenceImpl.java
index 4184e1d..7118e95 100644
--- a/winegrower-core/src/main/java/org/apache/winegrower/service/ServiceReferenceImpl.java
+++ b/winegrower-core/src/main/java/org/apache/winegrower/service/ServiceReferenceImpl.java
@@ -93,9 +93,12 @@
return properties;
}
- public boolean unget() {
+ public boolean unget(final Object instance) {
if (usesFactory) {
- throw new UnsupportedOperationException();
+ if (instance == null) {
+ return false;
+ }
+ ServiceFactory.class.cast(reference).ungetService(bundle, registration, instance);
}
return true;
}