This is an automated email from the ASF dual-hosted git repository.

davidb pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-content.git

commit e0e392da7aff183d79c56eb9d3cdc3fcd9d2448f
Author: Dominik Suess <[email protected]>
AuthorDate: Tue Jan 15 12:02:50 2019 +0100

    SLING-8215 - adding the missing support for multilevel nesting of 
subpackages
---
 dependency-reduced-pom.xml                         |  1 +
 pom.xml                                            |  1 +
 .../feature/extension/content/ContentHandler.java  | 25 ++++++++++++++--------
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
index 5859c0a..5c9b2a8 100644
--- a/dependency-reduced-pom.xml
+++ b/dependency-reduced-pom.xml
@@ -148,6 +148,7 @@
     </dependency>
   </dependencies>
   <properties>
+    <surefire.plugin.version>3.0.0-M3</surefire.plugin.version>
     <jdk.version>8</jdk.version>
   </properties>
 </project>
diff --git a/pom.xml b/pom.xml
index 47c96a7..713db08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,7 @@
 
     <properties>
         <jdk.version>8</jdk.version>
+        <surefire.plugin.version>3.0.0-M3</surefire.plugin.version>
     </properties>
 
 
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 673d626..8c2cd40 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
@@ -18,6 +18,7 @@ package org.apache.sling.feature.extension.content;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.IOException;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -71,15 +72,7 @@ public class ContentHandler implements ExtensionHandler {
 
         for (File pkgFile : packageReferences) {
             PackageId pid = registry.registerExternal(pkgFile, true);
-            Map<PackageId, SubPackageHandling.Option> subPkgs = 
registry.getInstallState(pid).getSubPackages();
-            if (!subPkgs.isEmpty()) {
-                for (PackageId subId : subPkgs.keySet()) {
-                    SubPackageHandling.Option opt = subPkgs.get(subId);
-                    if (opt != SubPackageHandling.Option.IGNORE) {
-                        builder.addTask().with(subId).with(Type.EXTRACT);
-                    }
-                }
-            }
+            extractSubPackages(registry, builder, pid);
 
             builder.addTask().with(pid).with(Type.EXTRACT);
         }
@@ -89,6 +82,20 @@ public class ContentHandler implements ExtensionHandler {
 
     }
 
+    private static void extractSubPackages(FSPackageRegistry registry, 
ExecutionPlanBuilder builder, PackageId pid)
+            throws IOException {
+        Map<PackageId, SubPackageHandling.Option> subPkgs = 
registry.getInstallState(pid).getSubPackages();
+        if (!subPkgs.isEmpty()) {
+            for (PackageId subId : subPkgs.keySet()) {
+                SubPackageHandling.Option opt = subPkgs.get(subId);
+                if (opt != SubPackageHandling.Option.IGNORE) {
+                    builder.addTask().with(subId).with(Type.EXTRACT);
+                    extractSubPackages(registry, builder, subId);
+                }
+            }
+        }
+    }
+
     @Override
     public boolean handle(Extension extension, LauncherPrepareContext 
prepareContext,
             ExtensionInstallationContext installationContext) throws Exception 
{

Reply via email to