in src/main/java/org/apache/sling/commons/classloader/impl/Activator.java [115:141]
public void bundleChanged(final BundleEvent event) {
synchronized ( this ) {
final boolean lazyBundle = event.getBundle().getHeaders().get( Constants.BUNDLE_ACTIVATIONPOLICY ) != null;
final boolean reload;
if ( ( event.getType() == BundleEvent.STARTED && !lazyBundle)
|| (event.getType() == BundleEvent.STARTING && lazyBundle) ) {
if ( this.service.hasUnresolvedPackages(event.getBundle()) ) {
reload = true;
logger.debug("Dynamic Class Loader is reloaded because the new bundle '{}' provides previously unresolved packages", event.getBundle());
} else {
reload = false;
}
} else if ( event.getType() == BundleEvent.UNRESOLVED || event.getType() == BundleEvent.RESOLVED ) {
reload = this.service.isBundleUsed(event.getBundle().getBundleId());
if (reload) {
logger.debug("Dynamic Class Loader is reloaded because it has previously loaded classes from bundle '{}' which is no longer active", event.getBundle());
}
} else {
reload = false;
}
if ( reload ) {
this.unregisterManagerFactory();
this.registerManagerFactory();
}
}
}