You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/05/25 09:12:27 UTC

[sling-org-apache-sling-feature-extension-content] branch feature/update-filevault created (now 19e0b7f)

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

kwin pushed a change to branch feature/update-filevault
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-content.git.


      at 19e0b7f  SLING-10405 update FileVault to 3.5.0

This branch includes the following new commits:

     new 19e0b7f  SLING-10405 update FileVault to 3.5.0

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[sling-org-apache-sling-feature-extension-content] 01/01: SLING-10405 update FileVault to 3.5.0

Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 19e0b7f7b8293708cdca4c9990c97e9ad89c73b0
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Tue May 25 11:12:12 2021 +0200

    SLING-10405 update FileVault to 3.5.0
    
    SLING-10417 always install packages in strict mode
    Get rid of subpackage handling, as dealt with transparently during
    package extraction
---
 pom.xml                                            | 67 +++++++++++++---------
 .../feature/extension/content/ContentHandler.java  | 42 +++++---------
 .../extension/content/ContentHandlerTest.java      | 27 ++++++++-
 3 files changed, 78 insertions(+), 58 deletions(-)

diff --git a/pom.xml b/pom.xml
index 09cc84a..a0cfbad 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>
+        <jackrabbit.version>2.18.0</jackrabbit.version>
     </properties>
 
 
@@ -88,11 +89,6 @@
     </build>
     <dependencies>
         <dependency>
-            <groupId>javax.jcr</groupId>
-            <artifactId>jcr</artifactId>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature</artifactId>
             <version>1.2.14</version>
@@ -101,45 +97,60 @@
         <dependency>
             <groupId>org.apache.jackrabbit.vault</groupId>
             <artifactId>org.apache.jackrabbit.vault</artifactId>
-            <version>3.2.6</version>
+            <version>3.5.0</version>
             <scope>compile</scope>
         </dependency>
+        <!-- START: transitive dependencies with scope "provided" of vault -->
+        <!-- jackrabbit -->
         <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.feature.launcher</artifactId>
-            <version>1.1.10</version>
-            <scope>provided</scope>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-jackrabbit-api</artifactId>
+            <version>1.38.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>jackrabbit-spi-commons</artifactId>
-            <version>2.17.3</version>
-            <scope>compile</scope>
+            <artifactId>jackrabbit-jcr-commons</artifactId>
+            <version>${jackrabbit.version}</version>
         </dependency>
         <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>2.6</version>
-            <scope>compile</scope>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-spi-commons</artifactId>
+            <version>${jackrabbit.version}</version>
         </dependency>
         <dependency>
-            <groupId>commons-collections</groupId>
-            <artifactId>commons-collections</artifactId>
-            <version>3.2.2</version>
-            <scope>compile</scope>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-spi</artifactId>
+            <version>${jackrabbit.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>jackrabbit-jcr-commons</artifactId>
-            <version>2.17.3</version>
-            <scope>compile</scope>
+            <artifactId>jackrabbit-spi2dav</artifactId>
+            <version>${jackrabbit.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>jackrabbit-spi</artifactId>
-            <version>2.17.3</version>
-            <scope>compile</scope>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.framework</artifactId>
+            <version>1.8.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.6</version>
+        </dependency>
+        <!-- END: transitive dependencies with scope "provided" of vault -->
+
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.launcher</artifactId>
+            <version>1.1.10</version>
+            <scope>provided</scope>
         </dependency>
+        
         <!-- Testing -->
         <dependency>
             <groupId>junit</groupId>
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 3ed80d9..80e2553 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,7 +18,6 @@ package org.apache.sling.feature.extension.content;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.IOException;
 import java.net.URL;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -29,12 +28,16 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
 
-import org.apache.jackrabbit.vault.packaging.PackageId;
+import org.apache.jackrabbit.vault.fs.io.ImportOptions;
 import org.apache.jackrabbit.vault.packaging.PackageExistsException;
-import org.apache.jackrabbit.vault.packaging.SubPackageHandling;
+import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.jackrabbit.vault.packaging.registry.ExecutionPlanBuilder;
 import org.apache.jackrabbit.vault.packaging.registry.PackageTask.Type;
+import org.apache.jackrabbit.vault.packaging.registry.PackageTaskOptions;
+import org.apache.jackrabbit.vault.packaging.registry.impl.AbstractPackageRegistry.SecurityConfig;
 import org.apache.jackrabbit.vault.packaging.registry.impl.FSPackageRegistry;
+import org.apache.jackrabbit.vault.packaging.registry.impl.InstallationScope;
+import org.apache.jackrabbit.vault.packaging.registry.taskoption.ImportOptionsPackageTaskOption;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Configuration;
 import org.apache.sling.feature.Extension;
@@ -58,18 +61,16 @@ public class ContentHandler implements ExtensionHandler {
         for (final Artifact a : artifacts) {
             final URL file = prepareContext.getArtifactFile(a.getId());
             File tmp = IOUtils.getFileFromURL(file, true, null);
-
-            if (tmp.length() > 0)
-            {
+            if (tmp != null) {
                 packageReferences.add(tmp);
             }
         }
 
-        if(!registryHome.exists()) {
+        if (!registryHome.exists()) {
             registryHome.mkdirs();
         }
 
-        FSPackageRegistry registry = new FSPackageRegistry(registryHome);
+        FSPackageRegistry registry = new FSPackageRegistry(registryHome, InstallationScope.UNSCOPED, new SecurityConfig(null, null), true);
 
         ExecutionPlanBuilder builder = registry.createExecutionPlan();
         builder.with(satisfiedPackages);
@@ -77,9 +78,10 @@ public class ContentHandler implements ExtensionHandler {
         for (File pkgFile : packageReferences) {
             try {
                 PackageId pid = registry.registerExternal(pkgFile, false);
-                extractSubPackages(registry, builder, pid);
-
-                builder.addTask().with(pid).with(Type.EXTRACT);
+                ImportOptions importOptions = new ImportOptions();
+                importOptions.setStrict(true);
+                PackageTaskOptions options = new ImportOptionsPackageTaskOption(importOptions);
+                builder.addTask().with(pid).withOptions(options).with(Type.EXTRACT);
             } catch (PackageExistsException ex) {
                 // Expected - the package is already present
             }
@@ -90,20 +92,6 @@ 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(ExtensionContext context, Extension extension) throws Exception {
         File registryHome = getRegistryHomeDir(context);
@@ -120,7 +108,7 @@ public class ContentHandler implements ExtensionHandler {
                 }
                 orderedArtifacts.computeIfAbsent(order, id -> new ArrayList<>()).add(a);
             }
-            List<String> executionPlans = new ArrayList<String>();
+            List<String> executionPlans = new ArrayList<>();
             Set<PackageId> satisfiedPackages = new HashSet<>();
             for (Object key : orderedArtifacts.keySet()) {
                 Collection<Artifact> artifacts = orderedArtifacts.get(key);
@@ -163,7 +151,7 @@ public class ContentHandler implements ExtensionHandler {
             registryHome.mkdirs();
         }
         if (!registryHome.isDirectory()) {
-            throw new IllegalStateException("Registry but points to file - must be directory");
+            throw new IllegalStateException("Registry home points to file - must be directory: " + registryHome);
         }
         return registryHome;
     }
diff --git a/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java
index e52a138..64ae766 100644
--- a/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java
@@ -113,15 +113,36 @@ public class ContentHandlerTest {
         final String expected_0 =
                 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                         "<executionPlan version=\"1.0\">\n" +
-                        "    <task cmd=\"extract\" packageId=\"my_packages:test_c:1.0\"/>\n" +
-                        "    <task cmd=\"extract\" packageId=\"my_packages:test_b:1.0\"/>\n" +
+                        "    <task cmd=\"extract\" packageId=\"my_packages:test_c:1.0\">\n" +
+                        "        <options type=\"ImportOptions\">\n" +
+                        "            <isStrict>true</isStrict>\n" +
+                        "            <autoSaveThreshold>-1</autoSaveThreshold>\n" +
+                        "            <nonRecursive>false</nonRecursive>\n" +
+                        "            <dryRun>false</dryRun>\n" +
+                        "        </options>\n" +
+                        "    </task>\n" +
+                        "    <task cmd=\"extract\" packageId=\"my_packages:test_b:1.0\">\n" +
+                        "        <options type=\"ImportOptions\">\n" +
+                        "            <isStrict>true</isStrict>\n" +
+                        "            <autoSaveThreshold>-1</autoSaveThreshold>\n" +
+                        "            <nonRecursive>false</nonRecursive>\n" +
+                        "            <dryRun>false</dryRun>\n" +
+                        "        </options>\n" +
+                        "    </task>\n" +
                         "</executionPlan>\n";
 
         assertEquals(expected_0, executionplans[0]);
         final String expected_1 =
                 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                         "<executionPlan version=\"1.0\">\n" +
-                        "    <task cmd=\"extract\" packageId=\"my_packages:test_a:1.0\"/>\n" +
+                        "    <task cmd=\"extract\" packageId=\"my_packages:test_a:1.0\">\n" +
+                        "        <options type=\"ImportOptions\">\n" +
+                        "            <isStrict>true</isStrict>\n" +
+                        "            <autoSaveThreshold>-1</autoSaveThreshold>\n" +
+                        "            <nonRecursive>false</nonRecursive>\n" +
+                        "            <dryRun>false</dryRun>\n" +
+                        "        </options>\n" +
+                        "    </task>\n" +
                         "</executionPlan>\n";
 
         assertEquals(expected_1, executionplans[1]);