public void bundleChanged()

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();
            }
        }
    }