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

cschneider pushed a commit to branch SLING-12687-2
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-core.git

commit 3f6cf61d66c6b120242b319ce6d86ba0d37d8767
Author: Christian Schneider <[email protected]>
AuthorDate: Tue Mar 11 15:35:12 2025 +0100

    SLING-12687 - Provide better interface
---
 .../DistributionContentSerializerProvider.java     | 38 ++-----------
 .../distribution/serialization/ExportSettings.java | 63 ++++++++++++++++++++++
 .../{impl/vlt => }/ImportSettings.java             |  2 +-
 .../impl/vlt/FileVaultContentSerializer.java       | 15 +++++-
 .../vlt/FileVaultContentSerializerProvider.java    | 23 ++------
 .../VaultDistributionPackageBuilderFactory.java    |  1 +
 .../serialization/impl/vlt/VltUtils.java           |  1 +
 .../LocalDistributionPackageImporterTest.java      |  2 +-
 .../FileVaultContentSerializerProviderTest.java    | 24 ++++-----
 .../impl/vlt/FileVaultContentSerializerTest.java   |  1 +
 10 files changed, 104 insertions(+), 66 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..4930348e
--- /dev/null
+++ 
b/src/main/java/org/apache/sling/distribution/serialization/ExportSettings.java
@@ -0,0 +1,63 @@
+/*
+ * 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;
+       
+       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 97%
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..4a358eba 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;
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..93216541 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,12 +18,11 @@
  */
 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;
@@ -46,20 +45,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;

Reply via email to