public void execute()

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