This is an automated email from the ASF dual-hosted git repository.
tmaret 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 f79c2043 SLING-12687 - Provide better interface (#71)
f79c2043 is described below
commit f79c2043138aacec1a705e1fefdc4ab25dbbfb50
Author: Christian Schneider <[email protected]>
AuthorDate: Tue Mar 11 23:38:46 2025 +0100
SLING-12687 - Provide better interface (#71)
* Provide better interface
* Add docs
* Remove unused import
---
.../DistributionContentSerializerProvider.java | 38 ++----------
.../distribution/serialization/ExportSettings.java | 72 ++++++++++++++++++++++
.../{impl/vlt => }/ImportSettings.java | 14 ++++-
.../impl/vlt/FileVaultContentSerializer.java | 15 ++++-
.../vlt/FileVaultContentSerializerProvider.java | 25 ++------
.../VaultDistributionPackageBuilderFactory.java | 1 +
.../serialization/impl/vlt/VltUtils.java | 1 +
.../LocalDistributionPackageImporterTest.java | 2 +-
.../FileVaultContentSerializerProviderTest.java | 24 ++++----
.../impl/vlt/FileVaultContentSerializerTest.java | 1 +
10 files changed, 125 insertions(+), 68 deletions(-)
diff --git
a/src/main/java/org/apache/sling/distribution/serialization/DistributionContentSerializerProvider.java
b/src/main/java/org/apache/sling/distribution/serialization/DistributionContentSerializerProvider.java
index 1f1489b6..53691d72 100644
---
a/src/main/java/org/apache/sling/distribution/serialization/DistributionContentSerializerProvider.java
+++
b/src/main/java/org/apache/sling/distribution/serialization/DistributionContentSerializerProvider.java
@@ -18,13 +18,8 @@
*/
package org.apache.sling.distribution.serialization;
-import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
-import org.apache.jackrabbit.vault.fs.api.ImportMode;
-import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
import org.osgi.annotation.versioning.ConsumerType;
-import java.util.Map;
-
/**
* A provider for content serializer used to convert
* distribution payloads to and from binary streams.
@@ -34,36 +29,13 @@ public interface DistributionContentSerializerProvider {
/**
* @param name The serializer name
- * @param importMode The serializer import mode
- * @param aclHandling The serializer ACL handling mode
- * @param cugHandling The serializer CUG handling mode
- * @param packageRoots The serializer package roots
- * @param nodeFilters The serializer node path filters
- * @param propertyFilters The serializer property path filters
- * @param useBinaryReferences {@code true} to pass binaries by reference ;
- * {@code false} to inline binaries
- * @param autosaveThreshold The number of resources to handle before
- * automatically saving the changes.
- * @param exportPathMapping The mapping for exported paths
- * @param strict {@code true} to enforce import constraints;
- * {@code false} otherwise
- * @param overwritePrimaryTypesOfFolders {@code true} to overwrite folder
primary types ;
- * {@code false} otherwise
- * @param idConflictPolicy The policy to handle conflicts
+ * @param exportSettings settings for export
+ * @param importSettings settings for import
* @return a distribution content serializer
*/
DistributionContentSerializer build(
String name,
- ImportMode importMode,
- AccessControlHandling aclHandling,
- AccessControlHandling cugHandling,
- String[] packageRoots,
- String[] nodeFilters,
- String[] propertyFilters,
- boolean useBinaryReferences,
- int autosaveThreshold,
- Map<String, String> exportPathMapping,
- boolean strict,
- boolean overwritePrimaryTypesOfFolders,
- IdConflictPolicy idConflictPolicy);
+ ExportSettings exportSettings,
+ ImportSettings importSettings);
+
}
diff --git
a/src/main/java/org/apache/sling/distribution/serialization/ExportSettings.java
b/src/main/java/org/apache/sling/distribution/serialization/ExportSettings.java
new file mode 100644
index 00000000..2f1cdfc1
--- /dev/null
+++
b/src/main/java/org/apache/sling/distribution/serialization/ExportSettings.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.distribution.serialization;
+
+import java.util.Map;
+
+/**
+ * Settings that control the package export.
+ */
+public class ExportSettings {
+ private final String[] packageRoots;
+ private final String[] nodeFilters;
+ private final String[] propertyFilters;
+ private final boolean useBinaryReferences;
+ private final Map<String, String> exportPathMapping;
+
+ /**
+ *
+ * @param packageRoots The serializer package roots
+ * @param nodeFilters The serializer node path filters
+ * @param propertyFilters The serializer property path filters
+ * @param useBinaryReferences {@code true} to pass binaries by
reference ;
+ * {@code false} to inline binaries
+ * @param exportPathMapping The mapping for exported paths
+ */
+ public ExportSettings(String[] packageRoots, String[] nodeFilters,
String[] propertyFilters,
+ boolean useBinaryReferences, Map<String, String>
exportPathMapping) {
+ super();
+ this.packageRoots = packageRoots;
+ this.nodeFilters = nodeFilters;
+ this.propertyFilters = propertyFilters;
+ this.useBinaryReferences = useBinaryReferences;
+ this.exportPathMapping = exportPathMapping;
+ }
+
+ public String[] getPackageRoots() {
+ return packageRoots;
+ }
+
+ public String[] getNodeFilters() {
+ return nodeFilters;
+ }
+
+ public String[] getPropertyFilters() {
+ return propertyFilters;
+ }
+
+ public boolean isUseBinaryReferences() {
+ return useBinaryReferences;
+ }
+
+ public Map<String, String> getExportPathMapping() {
+ return exportPathMapping;
+ }
+
+}
diff --git
a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/ImportSettings.java
b/src/main/java/org/apache/sling/distribution/serialization/ImportSettings.java
similarity index 78%
rename from
src/main/java/org/apache/sling/distribution/serialization/impl/vlt/ImportSettings.java
rename to
src/main/java/org/apache/sling/distribution/serialization/ImportSettings.java
index 5daab856..98306117 100644
---
a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/ImportSettings.java
+++
b/src/main/java/org/apache/sling/distribution/serialization/ImportSettings.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.distribution.serialization.impl.vlt;
+package org.apache.sling.distribution.serialization;
import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.fs.api.ImportMode;
@@ -34,6 +34,18 @@ public class ImportSettings {
private final boolean overwritePrimaryTypesOfFolders;
private final IdConflictPolicy idConflictPolicy;
+ /**
+ *
+ * @param importMode The serializer import mode
+ * @param aclHandling The serializer ACL handling mode
+ * @param cugHandling The serializer CUG handling mode
+ * @param autosaveThreshold The number of resources to handle before
automatically saving the changes.
+ * @param isStrict {@code true} to enforce import constraints;
+ * {@code false} otherwise
+ * @param overwritePrimaryTypesOfFolders {@code true} to overwrite folder
primary types ;
+ * {@code false}
otherwise
+ * @param idConflictPolicy The policy to handle conflicts
+ */
public ImportSettings(ImportMode importMode, AccessControlHandling
aclHandling, AccessControlHandling cugHandling, int autosaveThreshold,
boolean isStrict, boolean
overwritePrimaryTypesOfFolders, IdConflictPolicy idConflictPolicy) {
this.importMode = importMode;
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 ef060f18..126c7cee 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
@@ -44,6 +44,8 @@ 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;
+import org.apache.sling.distribution.serialization.ExportSettings;
+import org.apache.sling.distribution.serialization.ImportSettings;
import org.apache.sling.distribution.util.DistributionJcrUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -89,7 +91,18 @@ public class FileVaultContentSerializer implements
DistributionContentSerializer
this.importSettings = importSettings;
}
- @Override
+ public FileVaultContentSerializer(String name, Packaging packaging,
ExportSettings exportSettings, ImportSettings importSettings) {
+ this.name = name;
+ this.packaging = packaging;
+ this.packageRoots = exportSettings.getPackageRoots();
+ this.nodeFilters =
VltUtils.parseFilters(exportSettings.getNodeFilters());
+ this.propertyFilters =
VltUtils.parseFilters(exportSettings.getPropertyFilters());
+ this.useBinaryReferences = exportSettings.isUseBinaryReferences();
+ this.exportPathMapping = exportSettings.getExportPathMapping();
+ this.importSettings = importSettings;
+ }
+
+ @Override
public void exportToStream(ResourceResolver resourceResolver,
DistributionExportOptions exportOptions, OutputStream outputStream) throws
DistributionException {
Session session = null;
try {
diff --git
a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProvider.java
b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProvider.java
index 2b37d759..c1876715 100644
---
a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProvider.java
+++
b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProvider.java
@@ -18,18 +18,15 @@
*/
package org.apache.sling.distribution.serialization.impl.vlt;
-import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
-import org.apache.jackrabbit.vault.fs.api.ImportMode;
-import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
import org.apache.jackrabbit.vault.packaging.Packaging;
import
org.apache.sling.distribution.serialization.DistributionContentSerializer;
import
org.apache.sling.distribution.serialization.DistributionContentSerializerProvider;
+import org.apache.sling.distribution.serialization.ExportSettings;
+import org.apache.sling.distribution.serialization.ImportSettings;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import java.util.Map;
-
/**
* Provides {@link DistributionContentSerializer} based on Apache Jackrabbit
FileVault
*/
@@ -46,20 +43,8 @@ public class FileVaultContentSerializerProvider implements
DistributionContentSe
@Override
public DistributionContentSerializer build(
String name,
- ImportMode importMode,
- AccessControlHandling aclHandling,
- AccessControlHandling cugHandling,
- String[] packageRoots,
- String[] nodeFilters,
- String[] propertyFilters,
- boolean useBinaryReferences,
- int autosaveThreshold,
- Map<String, String> exportPathMapping,
- boolean strict,
- boolean overwritePrimaryTypesOfFolders,
- IdConflictPolicy idConflictPolicy) {
- ImportSettings importSettings = new ImportSettings(importMode,
aclHandling, cugHandling, autosaveThreshold, strict,
- overwritePrimaryTypesOfFolders, idConflictPolicy);
- return new FileVaultContentSerializer(name, packaging, packageRoots,
nodeFilters, propertyFilters, useBinaryReferences, exportPathMapping,
importSettings);
+ ExportSettings exportSettings,
+ ImportSettings importSettings) {
+ return new FileVaultContentSerializer(name, packaging, exportSettings,
importSettings);
}
}
diff --git
a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
index 6ce20390..f2b04fd7 100644
---
a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
+++
b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
@@ -37,6 +37,7 @@ import
org.apache.sling.distribution.packaging.impl.InMemoryDistributionPackageB
import
org.apache.sling.distribution.packaging.impl.ResourceDistributionPackageBuilder;
import
org.apache.sling.distribution.packaging.impl.ResourceDistributionPackageCleanup;
import
org.apache.sling.distribution.serialization.DistributionContentSerializer;
+import org.apache.sling.distribution.serialization.ImportSettings;
import
org.apache.sling.distribution.util.impl.FileBackedMemoryOutputStream.MemoryUnit;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
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 40cef7cb..7f778789 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
@@ -60,6 +60,7 @@ import org.apache.sling.distribution.DistributionRequest;
import org.apache.sling.distribution.DistributionRequestType;
import org.apache.sling.distribution.SimpleDistributionRequest;
import org.apache.sling.distribution.component.impl.SettingsUtils;
+import org.apache.sling.distribution.serialization.ImportSettings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git
a/src/test/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterTest.java
b/src/test/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterTest.java
index 64afbbe4..983f029c 100644
---
a/src/test/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterTest.java
+++
b/src/test/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterTest.java
@@ -35,8 +35,8 @@ import
org.apache.sling.distribution.packaging.DistributionPackageBuilder;
import org.apache.sling.distribution.packaging.DistributionPackageInfo;
import org.apache.sling.distribution.packaging.impl.DistributionPackageUtils;
import
org.apache.sling.distribution.packaging.impl.FileDistributionPackageBuilder;
+import org.apache.sling.distribution.serialization.ImportSettings;
import
org.apache.sling.distribution.serialization.impl.vlt.FileVaultContentSerializer;
-import org.apache.sling.distribution.serialization.impl.vlt.ImportSettings;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
import org.junit.Rule;
diff --git
a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProviderTest.java
b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProviderTest.java
index b964fa5e..6bfa2797 100644
---
a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProviderTest.java
+++
b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerProviderTest.java
@@ -18,23 +18,25 @@
*/
package org.apache.sling.distribution.serialization.impl.vlt;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.fs.api.ImportMode;
import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
import org.apache.jackrabbit.vault.packaging.Packaging;
import
org.apache.sling.distribution.serialization.DistributionContentSerializer;
import
org.apache.sling.distribution.serialization.DistributionContentSerializerProvider;
+import org.apache.sling.distribution.serialization.ExportSettings;
+import org.apache.sling.distribution.serialization.ImportSettings;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
/**
* Tests for {@link FileVaultContentSerializerProvider}
*/
@@ -65,11 +67,9 @@ public class FileVaultContentSerializerProviderTest {
boolean strict = false;
boolean overwritePrimaryTypeFolders = false;
IdConflictPolicy conflictPolicy = IdConflictPolicy.CREATE_NEW_ID;
-
- DistributionContentSerializer serializer = provider
- .build(name, importMode, aclHandling, cugHandling,
packageRoots, nodeFilters, propertyFilters,
- useBinaryReference, autoSaveThreshold,
exportPathMapping, strict, overwritePrimaryTypeFolders,
- conflictPolicy);
+ ExportSettings exportSettings = new ExportSettings(packageRoots,
nodeFilters, propertyFilters, useBinaryReference, exportPathMapping);
+ ImportSettings importSettings = new ImportSettings(importMode,
aclHandling, cugHandling, autoSaveThreshold, strict,
overwritePrimaryTypeFolders, conflictPolicy);
+ DistributionContentSerializer serializer = provider.build(name,
exportSettings, importSettings);
assertNotNull(serializer);
assertEquals(name, serializer.getName());
diff --git
a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerTest.java
b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerTest.java
index 8149c884..ded4f90e 100644
---
a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerTest.java
+++
b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializerTest.java
@@ -38,6 +38,7 @@ import org.apache.sling.commons.testing.jcr.RepositoryUtil;
import org.apache.sling.distribution.DistributionRequest;
import org.apache.sling.distribution.serialization.DistributionExportFilter;
import org.apache.sling.distribution.serialization.DistributionExportOptions;
+import org.apache.sling.distribution.serialization.ImportSettings;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
import org.apache.sling.testing.resourceresolver.MockHelper;