in atomosfeaturelauncherconfig/src/main/java/org/apache/sling/feature/launcher/atomos/config/AtomosConfigLauncher.java [262:315]
public int run(LauncherRunContext context, ClassLoader cl) throws Exception {
int result = super.run(context, cl);
if (result == FrameworkEvent.STOPPED) {
File outputDir = new File(Paths.get("").toAbsolutePath().toFile(), "atomos-config");
outputDir.mkdirs();
try (JarOutputStream jarToBuild = getJarToBuild(new File(outputDir, "atomos.substrate.jar"), new File(outputDir, "app.substrate.jar"))) {
try (Reader reader = new FileReader(new File(outputDir, "config-feature.slingosgifeature"), StandardCharsets.UTF_8)) {
Feature config = FeatureJSONReader.read(reader, null);
Feature assembled = FeatureBuilder.assemble(ArtifactId.parse("config:assembled:1.0.0"), new BuilderContext(new FeatureProvider() {
@Override
public Feature provide(ArtifactId id) {
return null;
}
}), m_app, config);
Extension assembledEx = assembled.getExtensions().getByName("atomos-config");
JsonObject nativeConfig = assembledEx.getJSONStructure().asJsonObject();
write(outputDir, jarToBuild, "reflect-config", nativeConfig);
write(outputDir, jarToBuild, "resource-config", nativeConfig);
write(outputDir, jarToBuild, "proxy-config", nativeConfig);
write(outputDir, jarToBuild, "jni-config", nativeConfig);
write(outputDir, jarToBuild, "serialization-config", nativeConfig);
try (FileOutputStream output = new FileOutputStream(new File(outputDir, "atomos_init.sh"))) {
String script = "#!/bin/sh\n\nexport ATOMOS_CLASSPATH=\"";
if (nativeConfig.containsKey("classpath")) {
script += nativeConfig.getJsonArray("classpath").getValuesAs(JsonString.class).stream().map(JsonString::getString).collect(Collectors.joining(":"));
extractJarsAndCollect(nativeConfig, jarToBuild, outputDir);
}
script += "\"\n\nexport ATOMOS_INIT=\"";
if (nativeConfig.containsKey("initialize-at-build-time")) {
String iabt = "--initialize-at-build-time=" + nativeConfig.getJsonArray("initialize-at-build-time").getValuesAs(JsonString.class).stream().map(JsonString::getString).collect(Collectors.joining(","));
script += iabt;
// Add the initialize at build time to a native-image.properties file
addNativeImageProperties(jarToBuild, iabt);
}
script += "\"\n";
output.write(script.getBytes(StandardCharsets.UTF_8));
}
addFeatureToJar(jarToBuild);
} catch (Throwable t) {
t.printStackTrace();
throw t;
}
}
}
/* */ System.out.println("*** Finished");
System.exit(0);
return result;
}