in src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/BundleSlingInitialContentExtractor.java [63:96]
public InputStream extract(@NotNull BundleSlingInitialContentExtractContext context) throws IOException, ConverterException {
ContentPackage2FeatureModelConverter contentPackage2FeatureModelConverter = context.getConverter();
if (context.getSlingInitialContentPolicy() == ContentPackage2FeatureModelConverter.SlingInitialContentPolicy.KEEP) {
return null;
}
if (CollectionUtils.isEmpty(context.getPathEntryList())) {
return null;
}
// create a bundle file that will contain all non-sling initial content
Path strippedBundleFile = getNewBundleFile(context, contentPackage2FeatureModelConverter);
// collect the metadata into a set first, we need all the data upfront in our second loop.
SlingInitialContentBundleEntryMetaDataCollector collector =
new SlingInitialContentBundleEntryMetaDataCollector(context, contentPackage2FeatureModelConverter, strippedBundleFile);
Set<SlingInitialContentBundleEntryMetaData> collectedSlingInitialContentBundleEntries = collector.collectFromContextAndWriteTmpFiles();
// now that we got collectedSlingInitialContentBundleEntries ready, we loop it and perform an extract for each entry.
// then add it into the appropriate vault package assemblers
BundleSlingInitialContentJarEntryExtractor jarEntryExtractor =
new BundleSlingInitialContentJarEntryExtractor(assemblerProvider, contentReaderProvider, parentFolderRepoInitHandler);
for (SlingInitialContentBundleEntryMetaData slingInitialContentBundleEntryMetaData : collectedSlingInitialContentBundleEntries) {
jarEntryExtractor.extractAndAddToAssembler(context, slingInitialContentBundleEntryMetaData, collectedSlingInitialContentBundleEntries);
}
// add additional content packages to feature model
finalizePackageAssembly(context);
// return bundle's inputstream, stripped off sling initial content, which must be deleted on close
return Files.newInputStream(strippedBundleFile, StandardOpenOption.READ, StandardOpenOption.DELETE_ON_CLOSE);
}