in src/main/java/org/apache/sling/launchpad/base/impl/Sling.java [189:242]
public Sling(final Notifiable notifiable,
final Logger logger,
final LaunchpadContentProvider resourceProvider,
final Map<String, String> propOverwrite)
throws BundleException {
this.logger = logger;
this.resourceProvider = resourceProvider;
final long startedAt = System.currentTimeMillis();
this.logger.log(Logger.LOG_INFO, "Starting Apache Sling");
// read the default parameters
final Map<String, String> props = this.loadConfigProperties(propOverwrite);
// check for bootstrap command file
copyBootstrapCommandFile(props);
// create the framework and start it
try {
// initiate startup handler
final StartupManager startupManager = new StartupManager(props, logger);
Framework tmpFramework = createFramework(notifiable, logger, props);
init(tmpFramework);
final boolean restart = new BootstrapInstaller(tmpFramework.getBundleContext(), logger,
resourceProvider, startupManager.getMode()).install();
startupManager.markInstalled();
if (restart) {
restart(tmpFramework);
tmpFramework = createFramework(notifiable, logger, props);
init(tmpFramework);
}
new DefaultStartupHandler(tmpFramework.getBundleContext(), logger, startupManager, startedAt);
// finally start
tmpFramework.start();
// only assign field if start succeeds
this.framework = tmpFramework;
} catch (final BundleException be) {
throw be;
} catch (final Exception e) {
// thrown by SlingFelix constructor
throw new BundleException("Uncaught Instantiation Issue: " + e, e);
}
// log sucess message
this.logger.log(Logger.LOG_INFO, "Apache Sling started");
}