in src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java [179:229]
public void deactivate() {
// wake up sleeping thread
synchronized (this.resourcesLock) {
logger.debug("Deactivating and notifying resourcesLock");
this.active = false;
this.resourcesLock.notify();
}
// Stop service trackers.
if ( this.factoryTracker != null ) {
this.factoryTracker.close();
}
if ( this.transformerTracker != null ) {
this.transformerTracker.close();
}
if ( this.updateHandlerTracker != null ) {
this.updateHandlerTracker.close();
}
if ( this.updaterTracker != null ) {
this.updaterTracker.close();
}
this.listener.dispose();
if ( this.backgroundThread != null ) {
if ( logger.isDebugEnabled() ) {
final Thread t = this.backgroundThread;
if ( t != null ) {
logger.debug("Waiting for main background thread {} to stop", t.getName());
}
}
while ( this.backgroundThread != null ) {
// use a local variable to avoid NPEs
final Thread t = backgroundThread;
if ( t != null ) {
try {
t.join(50L);
} catch (final InterruptedException e) {
// we simply ignore this
}
}
}
logger.debug("Done waiting for background thread");
}
// remove file util
FileDataStore.SHARED = null;
this.logger.info("Apache Sling OSGi Installer Service stopped.");
}