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.