You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by tm...@apache.org on 2022/09/22 09:35:01 UTC
[sling-org-apache-sling-distribution-core] branch master updated: SLING-11560 : Vault error when importing a node with the same name and UUID as a pre-existing non-sibling node (#66)
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 f4d5e6e0 SLING-11560 : Vault error when importing a node with the same name and UUID as a pre-existing non-sibling node (#66)
f4d5e6e0 is described below
commit f4d5e6e0ab4bf22a03eafa8f63e5e307f28e5963
Author: Manas Kumar Maji <ma...@gmail.com>
AuthorDate: Thu Sep 22 15:04:55 2022 +0530
SLING-11560 : Vault error when importing a node with the same name and UUID as a pre-existing non-sibling node (#66)
---
pom.xml | 2 +-
.../impl/vlt/FileVaultContentSerializer.java | 22 ++------
.../serialization/impl/vlt/ImportSettings.java | 61 ++++++++++++++++++++++
.../VaultDistributionPackageBuilderFactory.java | 49 ++++++++++++-----
.../serialization/impl/vlt/VltUtils.java | 35 +++++++------
.../LocalDistributionPackageImporterTest.java | 11 ++--
.../impl/vlt/FileVaultContentSerializerTest.java | 19 ++++---
.../serialization/impl/vlt/VltUtilsTest.java | 2 +-
8 files changed, 138 insertions(+), 63 deletions(-)
diff --git a/pom.xml b/pom.xml
index 4ae89609..b5e4818e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -324,7 +324,7 @@
<dependency>
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>org.apache.jackrabbit.vault</artifactId>
- <version>3.4.0</version>
+ <version>3.6.4</version>
</dependency>
<!-- HTTP -->
<dependency>
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 71bded70..ef060f18 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
@@ -30,11 +30,9 @@ import java.util.UUID;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import org.apache.jackrabbit.vault.fs.api.ImportMode;
import org.apache.jackrabbit.vault.fs.api.RegexpPathMapping;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
import org.apache.jackrabbit.vault.fs.config.MetaInf;
-import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.ImportOptions;
import org.apache.jackrabbit.vault.fs.io.Importer;
@@ -71,34 +69,24 @@ public class FileVaultContentSerializer implements DistributionContentSerializer
private static final String MAPPING_DELIMITER = ";";
private final Packaging packaging;
- private final ImportMode importMode;
- private final AccessControlHandling aclHandling;
- private final AccessControlHandling cugHandling;
private final String[] packageRoots;
- private final int autosaveThreshold;
private final TreeMap<String, List<String>> nodeFilters;
private final TreeMap<String, List<String>> propertyFilters;
private final boolean useBinaryReferences;
private final String name;
private final Map<String, String> exportPathMapping;
- private final boolean strict;
+ private final ImportSettings importSettings;
- public FileVaultContentSerializer(String name, Packaging packaging, ImportMode importMode, AccessControlHandling aclHandling, AccessControlHandling cugHandling, String[] packageRoots,
- String[] nodeFilters, String[] propertyFilters, boolean useBinaryReferences, int autosaveThreshold,
- Map<String, String> exportPathMapping,
- boolean strict) {
+ public FileVaultContentSerializer(String name, Packaging packaging, String[] packageRoots, String[] nodeFilters, String[] propertyFilters,
+ boolean useBinaryReferences, Map<String, String> exportPathMapping, ImportSettings importSettings) {
this.name = name;
this.packaging = packaging;
- this.importMode = importMode;
- this.aclHandling = aclHandling;
- this.cugHandling = cugHandling;
this.packageRoots = packageRoots;
- this.autosaveThreshold = autosaveThreshold;
this.nodeFilters = VltUtils.parseFilters(nodeFilters);
this.propertyFilters = VltUtils.parseFilters(propertyFilters);
this.useBinaryReferences = useBinaryReferences;
this.exportPathMapping = exportPathMapping;
- this.strict = strict;
+ this.importSettings = importSettings;
}
@Override
@@ -131,7 +119,7 @@ public class FileVaultContentSerializer implements DistributionContentSerializer
Archive archive = null;
try {
session = getSession(resourceResolver);
- ImportOptions importOptions = VltUtils.getImportOptions(aclHandling, cugHandling, importMode, autosaveThreshold, strict);
+ ImportOptions importOptions = VltUtils.getImportOptions(importSettings);
ErrorListener errorListener = new ErrorListener();
importOptions.setListener(errorListener);
Importer importer = new Importer(importOptions);
diff --git a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/ImportSettings.java b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/ImportSettings.java
new file mode 100644
index 00000000..5daab856
--- /dev/null
+++ b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/ImportSettings.java
@@ -0,0 +1,61 @@
+/*
+ * 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.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;
+
+/**
+ * Settings that control the package import.
+ */
+public class ImportSettings {
+ private final ImportMode importMode;
+ private final AccessControlHandling aclHandling;
+ private final AccessControlHandling cugHandling;
+ private final int autosaveThreshold;
+ private final boolean isStrict;
+ private final boolean overwritePrimaryTypesOfFolders;
+ private final IdConflictPolicy idConflictPolicy;
+
+ public ImportSettings(ImportMode importMode, AccessControlHandling aclHandling, AccessControlHandling cugHandling, int autosaveThreshold,
+ boolean isStrict, boolean overwritePrimaryTypesOfFolders, IdConflictPolicy idConflictPolicy) {
+ this.importMode = importMode;
+ this.aclHandling = aclHandling;
+ this.cugHandling = cugHandling;
+ this.autosaveThreshold = autosaveThreshold;
+ this.isStrict = isStrict;
+ this.overwritePrimaryTypesOfFolders = overwritePrimaryTypesOfFolders;
+ this.idConflictPolicy = idConflictPolicy;
+ }
+
+ public ImportMode getImportMode() { return importMode; }
+
+ public AccessControlHandling getAclHandling() { return aclHandling; }
+
+ public AccessControlHandling getCugHandling() { return cugHandling; }
+
+ public int getAutosaveThreshold() { return autosaveThreshold; }
+
+ public boolean isStrict() { return isStrict; }
+
+ public boolean isOverwritePrimaryTypesOfFolders() { return overwritePrimaryTypesOfFolders; }
+
+ public IdConflictPolicy getIdConflictPolicy() { return idConflictPolicy; }
+}
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 5e16a05b..2caa121e 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
@@ -18,6 +18,7 @@
*/
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;
@@ -160,13 +161,23 @@ public class VaultDistributionPackageBuilderFactory implements DistributionPacka
description = "List of paths that require be mapped." +
"The format is {sourcePattern}={destinationPattern}, e.g. /etc/(.*)=/var/$1/some or simply /data=/bak")
String[] pathsMapping();
-
+
@AttributeDefinition(
name = "Install a content package in a strict mode",
- description = "Flag to mark an error response will be thrown, if a content package will incorrectly installed")
- boolean strictImport() default DEFAULT_STRICT_IMPORT_SETTINGS;
+ description = "Whether an error will be thrown, if a content package is incorrectly installed")
+ boolean strictImport() default DEFAULT_IS_STRICT;
+
+ @AttributeDefinition(
+ name = "Legacy Folder Primary Type Mode",
+ description = "Whether to overwrite the primary type of folders during imports")
+ boolean overwritePrimaryTypesOfFolders() default DEFAULT_OVERWRITE_PRIMARY_TYPES_OF_FOLDER;
+
+ @AttributeDefinition(
+ name = "ID Conflict Policy",
+ description = "Node id conflict policy to be used during import")
+ IdConflictPolicy idConflictPolicy() default IdConflictPolicy.LEGACY;
}
-
+
private static final long DEFAULT_PACKAGE_CLEANUP_DELAY = 60L;
// 1M
private static final int DEFAULT_FILE_THRESHOLD_VALUE = 1;
@@ -174,8 +185,9 @@ public class VaultDistributionPackageBuilderFactory implements DistributionPacka
private static final boolean DEFAULT_USE_OFF_HEAP_MEMORY = false;
private static final String DEFAULT_DIGEST_ALGORITHM = "NONE";
private static final int DEFAULT_MONITORING_QUEUE_SIZE = 0;
- private static final boolean DEFAULT_STRICT_IMPORT_SETTINGS = true;
-
+ // importer setting constants
+ private static final boolean DEFAULT_IS_STRICT = true;
+ private static final boolean DEFAULT_OVERWRITE_PRIMARY_TYPES_OF_FOLDER = true;
@Reference
private Packaging packaging;
@@ -204,13 +216,19 @@ public class VaultDistributionPackageBuilderFactory implements DistributionPacka
String tempFsFolder = SettingsUtils.removeEmptyEntry(conf.tempFsFolder());
boolean useBinaryReferences = conf.useBinaryReferences();
- int autosaveThreshold = conf.autoSaveThreshold();
String digestAlgorithm = conf.digestAlgorithm();
if (DEFAULT_DIGEST_ALGORITHM.equals(digestAlgorithm)) {
digestAlgorithm = null;
}
+ // check the mount path patterns, if any
+ Map<String, String> pathsMapping = toMap(conf.pathsMapping(), new String[0]);
+ pathsMapping = SettingsUtils.removeEmptyEntries(pathsMapping);
+
+ // import settings
+ int autosaveThreshold = conf.autoSaveThreshold();
+
ImportMode importMode = null;
if (importModeString != null) {
importMode = ImportMode.valueOf(importModeString.trim());
@@ -226,14 +244,17 @@ public class VaultDistributionPackageBuilderFactory implements DistributionPacka
cugHandling = AccessControlHandling.valueOf(cugHandlingString.trim());
}
- // check the mount path patterns, if any
- Map<String, String> pathsMapping = toMap(conf.pathsMapping(), new String[0]);
- pathsMapping = SettingsUtils.removeEmptyEntries(pathsMapping);
-
boolean strictImport = conf.strictImport();
- DistributionContentSerializer contentSerializer = new FileVaultContentSerializer(name, packaging, importMode, aclHandling, cugHandling,
- packageRoots, packageNodeFilters, packagePropertyFilters, useBinaryReferences, autosaveThreshold, pathsMapping, strictImport);
+ boolean overwritePrimaryTypesOfFolders = conf.overwritePrimaryTypesOfFolders();
+
+ IdConflictPolicy idConflictPolicy = conf.idConflictPolicy();
+
+ ImportSettings importSettings = new ImportSettings(importMode, aclHandling, cugHandling, autosaveThreshold, strictImport,
+ overwritePrimaryTypesOfFolders, idConflictPolicy);
+
+ DistributionContentSerializer contentSerializer = new FileVaultContentSerializer(name, packaging, packageRoots, packageNodeFilters,
+ packagePropertyFilters, useBinaryReferences, pathsMapping, importSettings);
DistributionPackageBuilder wrapped;
if ("filevlt".equals(type)) {
@@ -301,7 +322,7 @@ public class VaultDistributionPackageBuilderFactory implements DistributionPacka
* (taken and adjusted from PropertiesUtil, because the handy toMap() function is not available as
* part of the metatype functionality
*
- * @param propValue The object to convert.
+ * @param values The path mappings.
* @param defaultArray The default array converted to map.
* @return Map value
*/
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 dfc501fb..40cef7cb 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
@@ -44,6 +44,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.vault.fs.api.ImportMode;
import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
+import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
import org.apache.jackrabbit.vault.fs.config.DefaultMetaInf;
import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
import org.apache.jackrabbit.vault.fs.config.MetaInf;
@@ -79,14 +80,13 @@ public class VltUtils {
private static final String MAPPING_DELIMITER = ";";
public static WorkspaceFilter createFilter(DistributionRequest distributionRequest, NavigableMap<String, List<String>> nodeFilters,
- NavigableMap<String, List<String>> propertyFilters) {
+ NavigableMap<String, List<String>> propertyFilters) throws ConfigurationException {
DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
for (String path : distributionRequest.getPaths()) {
// Set node path filters
- List<String> patterns = new ArrayList<String>();
- patterns.addAll(Arrays.asList(distributionRequest.getFilters(path)));
+ List<String> patterns = new ArrayList<String>(Arrays.asList(distributionRequest.getFilters(path)));
boolean deep = distributionRequest.isDeep(path);
PathFilterSet nodeFilterSet = new PathFilterSet(path);
if (!deep) {
@@ -122,7 +122,8 @@ public class VltUtils {
return paths;
}
- private static void initFilterSet(PathFilterSet filterSet, NavigableMap<String, List<String>> globalFilters, List<String> patterns) {
+ private static void initFilterSet(PathFilterSet filterSet, NavigableMap<String, List<String>> globalFilters,
+ List<String> patterns) throws ConfigurationException {
// add the most specific filter rules
String root = filterSet.getRoot();
@@ -227,22 +228,22 @@ public class VltUtils {
return packageRoot;
}
- public static ImportOptions getImportOptions(AccessControlHandling aclHandling, AccessControlHandling cugHandling, ImportMode importMode, int autosaveThreshold, boolean strict) {
+ public static ImportOptions getImportOptions(ImportSettings importSettings) {
ImportOptions opts = new ImportOptions();
- if (aclHandling != null) {
- opts.setAccessControlHandling(aclHandling);
+ if (importSettings.getAclHandling() != null) {
+ opts.setAccessControlHandling(importSettings.getAclHandling());
} else {
// default to overwrite
opts.setAccessControlHandling(AccessControlHandling.OVERWRITE);
}
- if (cugHandling != null) {
- opts.setCugHandling(cugHandling);
+ if (importSettings.getCugHandling() != null) {
+ opts.setCugHandling(importSettings.getCugHandling());
} else {
// default to overwrite
opts.setCugHandling(AccessControlHandling.OVERWRITE);
}
- if (importMode != null) {
- opts.setImportMode(importMode);
+ if (importSettings.getImportMode() != null) {
+ opts.setImportMode(importSettings.getImportMode());
} else {
// default to update
opts.setImportMode(ImportMode.UPDATE);
@@ -250,11 +251,15 @@ public class VltUtils {
opts.setPatchKeepInRepo(false);
- if (autosaveThreshold >= 0) {
- opts.setAutoSaveThreshold(autosaveThreshold);
+ if (importSettings.getAutosaveThreshold() >= 0) {
+ opts.setAutoSaveThreshold(importSettings.getAutosaveThreshold());
}
- opts.setStrict(strict);
+ opts.setStrict(importSettings.isStrict());
+
+ opts.setIdConflictPolicy(importSettings.getIdConflictPolicy());
+
+ opts.setOverwritePrimaryTypesOfFolders(importSettings.isOverwritePrimaryTypesOfFolders());
return opts;
}
@@ -435,7 +440,7 @@ public class VltUtils {
return new SimpleDistributionRequest(requestType, paths.toArray(new String[paths.size()]), deepPaths, filters);
}
- private static PathFilterSet.Entry<DefaultPathFilter> extractPathPattern(String pattern) {
+ private static PathFilterSet.Entry<DefaultPathFilter> extractPathPattern(String pattern) throws ConfigurationException {
PathFilterSet.Entry<DefaultPathFilter> result;
if (pattern.startsWith("+")) {
result = new PathFilterSet.Entry<DefaultPathFilter>(new DefaultPathFilter(pattern.substring(1)), true);
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 e66c3164..64afbbe4 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
@@ -19,6 +19,7 @@
package org.apache.sling.distribution.packaging.impl.importer;
import org.apache.commons.lang3.StringUtils;
+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.impl.PackagingImpl;
@@ -35,6 +36,7 @@ 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.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;
@@ -78,19 +80,18 @@ public class LocalDistributionPackageImporterTest {
LocalDistributionPackageImporter localdistributionPackageImporter =
new LocalDistributionPackageImporter("mockImporter", distributionEventFactory, packageBuilder);
+ ImportSettings importSettings = new ImportSettings(ImportMode.UPDATE, AccessControlHandling.IGNORE,
+ AccessControlHandling.IGNORE, -1, false, false, IdConflictPolicy.LEGACY);
+
FileVaultContentSerializer vaultSerializer = new FileVaultContentSerializer(
"importPackageWithLargeHeader",
new PackagingImpl(),
- ImportMode.UPDATE,
- AccessControlHandling.IGNORE,
- AccessControlHandling.IGNORE,
new String[0],
new String[0],
new String[0],
false,
- -1,
null,
- false
+ importSettings
);
DistributionPackageBuilder builder =
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 f74b0121..8149c884 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
@@ -27,6 +27,7 @@ import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.HashMap;
+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.ExportOptions;
@@ -73,17 +74,16 @@ public class FileVaultContentSerializerTest {
@Test
public void testExportToStream() throws Exception {
Packaging packaging = mock(Packaging.class);
-
- ImportMode importMode = ImportMode.REPLACE;
- AccessControlHandling aclHandling = AccessControlHandling.IGNORE;
+ ImportSettings importSettings = new ImportSettings(ImportMode.REPLACE, AccessControlHandling.IGNORE,
+ AccessControlHandling.IGNORE, 1024, false, false, IdConflictPolicy.LEGACY);
String[] packageRoots = new String[]{"/etc/packages"};
String[] nodeFilters = new String[0];
String[] propertyFilters = new String[0];
boolean useReferences = false;
int threshold = 1024;
- FileVaultContentSerializer fileVaultContentSerializer = new FileVaultContentSerializer("vlt", packaging, importMode,
- aclHandling, aclHandling, packageRoots, nodeFilters, propertyFilters, useReferences, threshold, new HashMap<String, String>(), false);
+ FileVaultContentSerializer fileVaultContentSerializer = new FileVaultContentSerializer("vlt", packaging, packageRoots, nodeFilters,
+ propertyFilters, useReferences, new HashMap<String, String>(), importSettings);
ResourceResolver sessionResolver = mock(ResourceResolver.class);
Session session = mock(Session.class);
@@ -116,16 +116,15 @@ public class FileVaultContentSerializerTest {
@Test
public void testImportFromStream() throws Exception {
Packaging packaging = mock(Packaging.class);
- ImportMode importMode = ImportMode.REPLACE;
- AccessControlHandling aclHandling = AccessControlHandling.IGNORE;
+ ImportSettings importSettings = new ImportSettings(ImportMode.REPLACE, AccessControlHandling.IGNORE,
+ AccessControlHandling.IGNORE, 1024, true, true, IdConflictPolicy.LEGACY);
String[] packageRoots = new String[]{"/"};
String[] nodeFilters = new String[0];
String[] propertyFilters = new String[0];
boolean useReferences = false;
- int thershold = 1024;
- FileVaultContentSerializer fileVaultContentSerializer = new FileVaultContentSerializer("vlt", packaging, importMode,
- aclHandling, aclHandling, packageRoots, nodeFilters, propertyFilters, useReferences, thershold, new HashMap<String, String>(), true);
+ FileVaultContentSerializer fileVaultContentSerializer = new FileVaultContentSerializer("vlt", packaging, packageRoots, nodeFilters,
+ propertyFilters, useReferences, new HashMap<String, String>(), importSettings);
File file = new File(getClass().getResource("/vlt/dp.vlt").getFile());
diff --git a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java
index 348db108..55184b51 100644
--- a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java
+++ b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java
@@ -119,7 +119,7 @@ public class VltUtilsTest {
}
@Test
- public void testCreateFilterWithParenthesis() {
+ public void testCreateFilterWithParenthesis() throws Exception {
DistributionRequest request = new SimpleDistributionRequest(ADD, false, "/nodewith(shouldwork");
NavigableMap<String, List<String>> nodeFilters = new TreeMap<String, List<String>>();
NavigableMap<String, List<String>> propFilters = new TreeMap<String, List<String>>();