in src/main/java/org/apache/sling/installer/core/impl/tasks/RefreshBundlesTask.java [67:92]
public void execute(final InstallationContext ctx) {
boolean doFullRefresh = false;
final List<Bundle> bundles = new ArrayList<Bundle>();
synchronized ( BUNDLE_IDS ) {
for(final Long id : BUNDLE_IDS) {
final Bundle b = this.getBundleContext().getBundle(id);
if ( b != null ) {
getLogger().debug("Will refresh bundle {}", b);
bundles.add(b);
} else {
getLogger().debug("Bundle {} is already gone. Full refresh", id);
doFullRefresh = true;
}
}
BUNDLE_IDS.clear();
}
if ( doFullRefresh || bundles.size() > 0 ) {
// check if the installer bundle is affected
if ( !this.getBundleRefresher().isInstallerBundleAffected(bundles) ) {
this.getBundleRefresher().refreshBundles(ctx, (doFullRefresh ? null : bundles), true);
} else {
ctx.log("Installer bundle is affected by bundle refresh, initiating asynchronous refresh");
ctx.addTaskToCurrentCycle(new AsyncRefreshBundlesTask(this.getTaskSupport(), (doFullRefresh ? null : bundles)));
}
}
}