private void install()

in src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java [429:466]


    private void install(final Object installer) {
        try {
            final Class<?> installableResourceClass = installer.getClass().getClassLoader().loadClass("org.apache.sling.installer.api.InstallableResource");
            final Object resources = Array.newInstance(installableResourceClass, this.installables.size());
            final Method registerResources = installer.getClass().getDeclaredMethod("registerResources", String.class, resources.getClass());
            final Constructor<?> constructor = installableResourceClass.getDeclaredConstructor(String.class,
                    InputStream.class,
                    Dictionary.class,
                    String.class,
                    String.class,
                    Integer.class);

            for(int i=0; i<this.installables.size();i++) {
                final URL f = this.installables.get(i);
                final Dictionary<String, Object> dict = new Hashtable<>();
                dict.put("resource.uri.hint", f.toURI().toString());
                final Object rsrc = constructor.newInstance(f.getPath(),
                        f.openStream(),
                        dict,
                        f.getPath(),
                        "file",
                        null);
                Array.set(resources, i, rsrc);
            }
            registerResources.invoke(installer, "cloudlauncher", resources);
        } catch ( final Exception e) {
            logger.error("Unable to contact installer and install additional artifacts", e);
            throw new RuntimeException(e);
        } finally  {
            final Thread t = new Thread(() -> {
                installerTracker.close();
                installerTracker = null;
            });
            t.setDaemon(false);
            t.start();
            this.installables.clear();
        }
    }