SLING-7733: do not rewrite distributionrequests in the packagebuilder
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 @@
             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.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 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 @@
         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();