in src/main/java/org/apache/sling/feature/launcher/impl/Bootstrap.java [243:274]
private void run(final Launcher launcher) throws Exception {
this.logger.info("");
this.logger.info("Starting launcher...");
this.logger.info("Launcher Home: {}", config.getHomeDirectory().getAbsolutePath());
this.logger.info("Cache Directory: {}", config.getCacheDirectory().getAbsolutePath());
this.logger.info("");
final Installation installation = config.getInstallation();
// set sling home, and use separate locations for launchpad and properties
installation.getFrameworkProperties().put("sling.home", config.getHomeDirectory().getAbsolutePath());
installation.getFrameworkProperties().put("sling.launchpad", config.getHomeDirectory().getAbsolutePath() + "/launchpad");
if (!installation.getFrameworkProperties().containsKey("repository.home")) {
installation.getFrameworkProperties().put("repository.home", config.getHomeDirectory().getAbsolutePath() + File.separatorChar + "repository");
}
installation.getFrameworkProperties().put("sling.properties", "conf/sling.properties");
installation.getFrameworkProperties().put("sling.feature", getApplicationFeatureFile(config).toURI().toString());
// additional OSGi properties
// move storage inside launcher
installation.getFrameworkProperties()
.putIfAbsent(STORAGE_PROPERTY, config.getHomeDirectory().getAbsolutePath() + File.separatorChar + "framework");
// set start level to 30
installation.getFrameworkProperties()
.putIfAbsent(START_LEVEL_PROP, "30");
while (launcher.run(installation, createClassLoader(installation, launcher)) == FrameworkEvent.STOPPED_SYSTEM_REFRESHED) {
this.logger.info("Framework restart due to extension refresh");
}
}