private void run()

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