Skip to content

Commit

Permalink
Bugfix: Avoid IllegalStateException being thrown on bundle shutdown.
Browse files Browse the repository at this point in the history
Don't try to unregister a provider's service more than once.
  • Loading branch information
sbang committed May 1, 2015
1 parent 867a05e commit 91bfe50
Showing 1 changed file with 17 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,20 @@ public void stop(BundleContext context) {
injection.unGet(context);
}

serviceRegistration.unregister();
unregisterMyService();
}

private void unregisterMyService() {
if (!serviceAlreadyUnregistered()) {
serviceRegistration.unregister();
}

// Make sure this now invalid object isn't used again.
serviceRegistration = null;
}

private boolean serviceAlreadyUnregistered() {
return serviceRegistration == null;
}

void registerService(BundleContext bundleContext) {
Expand Down Expand Up @@ -131,8 +144,9 @@ void checkInjectionsAndRegisterServiceIfSatisfied(BundleContext bundleContext) {
}

void checkInjectionsAndUnregisterServiceIfNotSatisfied(BundleContext bundleContext) {
if (null != serviceRegistration && !allInjectionsHaveBeenInjected()) {
serviceRegistration.unregister();
// Check for service already unregistered first because that is quickest
if (!serviceAlreadyUnregistered() && !allInjectionsHaveBeenInjected()) {
unregisterMyService();
}
}

Expand Down

0 comments on commit 91bfe50

Please sign in to comment.