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