in src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java [58:94]
private static ExecutionPlanBuilder buildExecutionPlan(Collection<Artifact> artifacts, Set<PackageId> satisfiedPackages, LauncherPrepareContext prepareContext, File registryHome, boolean useStrictMode) throws Exception {
List<File> packageReferences = new ArrayList<>();
for (final Artifact a : artifacts) {
final URL file = prepareContext.getArtifactFile(a.getId());
File tmp = IOUtils.getFileFromURL(file, true, null);
if (tmp != null && tmp.length() > 0) {
packageReferences.add(tmp);
}
}
if (!registryHome.exists()) {
registryHome.mkdirs();
}
FSPackageRegistry registry = new FSPackageRegistry(registryHome, InstallationScope.UNSCOPED, new SecurityConfig(null, null), true);
ExecutionPlanBuilder builder = registry.createExecutionPlan();
builder.with(satisfiedPackages);
for (File pkgFile : packageReferences) {
try {
PackageId pid = registry.registerExternal(pkgFile, false);
ImportOptions importOptions = new ImportOptions();
importOptions.setStrict(useStrictMode);
PackageTaskOptions options = new ImportOptionsPackageTaskOption(importOptions);
builder.addTask().with(pid).withOptions(options).with(Type.EXTRACT);
} catch (PackageExistsException ex) {
// Expected - the package is already present
}
}
builder.validate();
satisfiedPackages.addAll(builder.preview());
return builder;
}