SLING-10209: don't reinstall packages already present in the registry.
diff --git a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
index 5bfe091..3ed80d9 100644
--- a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
@@ -30,6 +30,7 @@
import java.util.TreeMap;
import org.apache.jackrabbit.vault.packaging.PackageId;
+import org.apache.jackrabbit.vault.packaging.PackageExistsException;
import org.apache.jackrabbit.vault.packaging.SubPackageHandling;
import org.apache.jackrabbit.vault.packaging.registry.ExecutionPlanBuilder;
import org.apache.jackrabbit.vault.packaging.registry.PackageTask.Type;
@@ -74,11 +75,14 @@
builder.with(satisfiedPackages);
for (File pkgFile : packageReferences) {
+ try {
+ PackageId pid = registry.registerExternal(pkgFile, false);
+ extractSubPackages(registry, builder, pid);
- PackageId pid = registry.registerExternal(pkgFile, true);
- extractSubPackages(registry, builder, pid);
-
- builder.addTask().with(pid).with(Type.EXTRACT);
+ builder.addTask().with(pid).with(Type.EXTRACT);
+ } catch (PackageExistsException ex) {
+ // Expected - the package is already present
+ }
}
builder.validate();
satisfiedPackages.addAll(builder.preview());