in src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java [147:174]
void processBundleInputStream(@NotNull String path, @NotNull Path originalBundleFile, @NotNull String bundleName, @Nullable String runMode, @Nullable Integer startLevel, @NotNull ContentPackage2FeatureModelConverter converter)
throws ConverterException, IOException {
try (JarFile jarFile = new JarFile(originalBundleFile.toFile())) {
// first extract bundle metadata from JAR input stream
Artifact artifact = extractFeatureArtifact(bundleName, jarFile);
ArtifactId id = artifact.getId();
BundleSlingInitialContentExtractContext context = new BundleSlingInitialContentExtractContext(slingInitialContentPolicy, path, id, jarFile, converter, runMode);
try (InputStream strippedBundleInput = bundleSlingInitialContentExtractor.extract(context)) {
if (strippedBundleInput != null && slingInitialContentPolicy == ContentPackage2FeatureModelConverter.SlingInitialContentPolicy.EXTRACT_AND_REMOVE) {
id = id.changeVersion(id.getVersion() + "-" + ContentPackage2FeatureModelConverter.PACKAGE_CLASSIFIER);
Objects.requireNonNull(converter.getArtifactsDeployer()).deploy(new InputStreamArtifactWriter(strippedBundleInput), runMode, id);
} else {
try (InputStream originalBundleInput = Files.newInputStream(originalBundleFile)) {
Objects.requireNonNull(converter.getArtifactsDeployer()).deploy(new InputStreamArtifactWriter(originalBundleInput), runMode, id);
}
}
}
artifact = artifact.copy(id);
Objects.requireNonNull(converter.getFeaturesManager()).addArtifact(runMode, artifact, startLevel);
String exportHeader = Objects.requireNonNull(jarFile.getManifest()).getMainAttributes().getValue(Constants.EXPORT_PACKAGE);
if (exportHeader != null) {
for (Clause clause : Parser.parseHeader(exportHeader)) {
converter.getFeaturesManager().addAPIRegionExport(runMode, clause.getName());
}
}
}
}