You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2018/06/14 12:41:45 UTC

[sling-org-apache-sling-distribution-core] branch master updated: SLING-7733: do not rewrite distributionrequests in the packagebuilder

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

mpetria pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-core.git


The following commit(s) were added to refs/heads/master by this push:
     new ff2dd3a  SLING-7733: do not rewrite distributionrequests in the packagebuilder
ff2dd3a is described below

commit ff2dd3a6287dbaae424690db771b16922d2f6e87
Author: Marius Petria <mp...@adobe.com>
AuthorDate: Thu Jun 14 15:41:31 2018 +0300

    SLING-7733: do not rewrite distributionrequests in the packagebuilder
---
 .../packaging/impl/AbstractDistributionPackageBuilder.java |  4 +++-
 .../serialization/impl/vlt/FileVaultContentSerializer.java |  5 ++++-
 .../distribution/serialization/impl/vlt/VltUtils.java      | 14 ++++++++++++++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java b/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java
index 37e28ca..c9d9ad3 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java
@@ -64,7 +64,9 @@ public abstract class AbstractDistributionPackageBuilder implements Distribution
             throws DistributionException {
         DistributionPackage distributionPackage;
 
-        request = VltUtils.sanitizeRequest(request);
+        if (!VltUtils.isSupported(request)) {
+            throw new DistributionException("unsupported request " + request);
+        }
 
         if (DistributionRequestType.ADD.equals(request.getRequestType())) {
             distributionPackage = createPackageForAdd(resourceResolver, request);
diff --git a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java
index 5547185..c759c36 100644
--- a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java
+++ b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java
@@ -43,6 +43,7 @@ import org.apache.jackrabbit.vault.packaging.ExportOptions;
 import org.apache.jackrabbit.vault.packaging.PackageException;
 import org.apache.jackrabbit.vault.packaging.Packaging;
 import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.distribution.DistributionRequest;
 import org.apache.sling.distribution.common.DistributionException;
 import org.apache.sling.distribution.serialization.DistributionContentSerializer;
 import org.apache.sling.distribution.serialization.DistributionExportOptions;
@@ -100,11 +101,13 @@ public class FileVaultContentSerializer implements DistributionContentSerializer
     public void exportToStream(ResourceResolver resourceResolver, DistributionExportOptions exportOptions, OutputStream outputStream) throws DistributionException {
         Session session = null;
         try {
+            DistributionRequest request = VltUtils.sanitizeRequest(exportOptions.getRequest());
+
             session = getSession(resourceResolver);
             String packageGroup = PACKAGE_GROUP;
             String packageName = TYPE + "_" + System.currentTimeMillis() + "_" + UUID.randomUUID();
 
-            WorkspaceFilter filter = VltUtils.createFilter(exportOptions.getRequest(), nodeFilters, propertyFilters);
+            WorkspaceFilter filter = VltUtils.createFilter(request, nodeFilters, propertyFilters);
             ExportOptions opts = VltUtils.getExportOptions(filter, packageRoots, packageGroup, packageName, VERSION, useBinaryReferences, exportPathMapping);
 
             log.debug("assembling package {} user {}", packageGroup + '/' + packageName + "-" + VERSION, resourceResolver.getUserID());
diff --git a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
index e883860..4c0bc30 100644
--- a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
+++ b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
@@ -378,6 +378,20 @@ public class VltUtils {
         return result;
     }
 
+    public static boolean isSupported(DistributionRequest request) {
+        DistributionRequestType requestType = request.getRequestType();
+
+        if (DistributionRequestType.DELETE.equals(requestType)) {
+            for (String path : request.getPaths()) {
+                // vlt cannot properly install delete of rep:policy subnodes
+                if (VltUtils.findParent(path, "rep:policy") != null) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
     public static DistributionRequest sanitizeRequest(DistributionRequest request) {
 
         DistributionRequestType requestType = request.getRequestType();

-- 
To stop receiving notification emails like this one, please contact
mpetria@apache.org.