BundleListener uninstallListener = new SynchronousBundleListener() {
@Override
public void bundleChanged(BundleEvent event) {
if (event.getType() == BundleEvent.UNINSTALLED) {
AbstractUserBundle userBundle;
try {
userBundle = AbstractUserBundle.assertBundleState(event.getBundle());
} catch (RuntimeException ex) {
// ignore
return;
}
Deployment deployment = userBundle.getDeployment();
ServiceName serviceName = deployment.getAttachment(ServiceName.class);
if (serviceName != null) {
ServiceController<?> controller = serviceContainer.getService(serviceName);
if (controller != null) {
controller.setMode(ServiceController.Mode.REMOVE);