You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2022/01/20 08:23:14 UTC
[jackrabbit-filevault] branch master updated: JCRVLT-596: add OSGi config for default IdConflictPolicy
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
The following commit(s) were added to refs/heads/master by this push:
new 4062332 JCRVLT-596: add OSGi config for default IdConflictPolicy
4062332 is described below
commit 4062332786a31b38866be2ebd468eeb92e204150
Author: Julian Reschke <re...@apache.org>
AuthorDate: Thu Jan 20 09:23:09 2022 +0100
JCRVLT-596: add OSGi config for default IdConflictPolicy
* JCRVLT-596: add OSGi config for default IdConflictPolicy
* JCRVLT-596: add OSGi config for default IdConflictPolicy - use actual enum as type in OSGi
* JCRVLT-596: add OSGi config for default IdConflictPolicy - fix Javadoc
* JCRVLT-596: try to detect whether a policy was set (test failing)
* Revert "JCRVLT-596: try to detect whether a policy was set (test failing)"
This reverts commit 06fcdf928b3dd72a8e239750f7289d483113a80f.
* JCRVLT-596: try to detect whether a policy was set
* Revert "JCRVLT-596: try to detect whether a policy was set"
This reverts commit 7738308066418d735dbbe1c06c8b99a2026da31b.
* Revert "Revert "JCRVLT-596: try to detect whether a policy was set (test failing)""
This reverts commit 3b4c3388a1e2407e230cfb5c2a115afcc07b020e.
* never persist default conflict policy
* fix package version
Co-authored-by: Konrad Windszus <kw...@apache.org>
---
.../vault/fs/impl/io/DocViewSAXImporter.java | 2 +-
.../apache/jackrabbit/vault/fs/io/ImportOptions.java | 18 ++++++++++++++----
.../apache/jackrabbit/vault/fs/io/package-info.java | 2 +-
.../vault/packaging/impl/JcrPackageImpl.java | 4 ++++
.../vault/packaging/impl/JcrPackageManagerImpl.java | 9 +++++----
.../jackrabbit/vault/packaging/impl/PackagingImpl.java | 15 +++++++++++----
.../registry/impl/AbstractPackageRegistry.java | 11 ++++++++++-
.../packaging/registry/impl/FSPackageRegistry.java | 17 ++++++++++-------
.../packaging/registry/impl/JcrPackageRegistry.java | 8 +++++---
.../registry/impl/PackageTaskOptionsSerializer.java | 7 +++++++
.../vault/packaging/integration/PackageInstallIT.java | 3 ++-
11 files changed, 70 insertions(+), 26 deletions(-)
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java
index 00221ff..4854642 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java
@@ -271,7 +271,7 @@ public class DocViewSAXImporter extends RejectingEntityDefaultHandler implements
getDescriptorValue(Repository.NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED).getBoolean();
this.nsHelper = new JcrNamespaceHelper(session, null);
this.idConflictPolicy = idConflictPolicy;
-
+ log.debug("idConflictPolicy: {}", idConflictPolicy);
String rootPath = parentNode.getPath();
if (!rootPath.equals("/")) {
rootPath += "/";
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ImportOptions.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ImportOptions.java
index 2fa7f53..7372b95 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ImportOptions.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ImportOptions.java
@@ -67,7 +67,7 @@ public class ImportOptions {
private DependencyHandling dependencyHandling = null;
- private @NotNull IdConflictPolicy idConflictPolicy = IdConflictPolicy.FAIL;
+ private IdConflictPolicy idConflictPolicy = null;
private Boolean overwritePrimaryTypesOfFolders = null;
@@ -456,7 +456,14 @@ public class ImportOptions {
* @since 3.5.1
*/
public @NotNull IdConflictPolicy getIdConflictPolicy() {
- return idConflictPolicy;
+ return idConflictPolicy != null ? idConflictPolicy : IdConflictPolicy.FAIL;
+ }
+
+ /**
+ * @since 3.5.10
+ */
+ public boolean hasIdConflictPolicyBeenSet() {
+ return idConflictPolicy != null;
}
/**
@@ -558,7 +565,10 @@ public class ImportOptions {
return false;
if (overwritePrimaryTypesOfFolders != other.overwritePrimaryTypesOfFolders)
return false;
- if (!idConflictPolicy.equals(other.idConflictPolicy))
+ if (idConflictPolicy == null) {
+ if (other.idConflictPolicy != null)
+ return false;
+ } else if (!idConflictPolicy.equals(other.idConflictPolicy))
return false;
return true;
}
@@ -577,6 +587,6 @@ public class ImportOptions {
+ (pathMapping != null ? "pathMapping=" + pathMapping + ", " : "")
+ (dependencyHandling != null ? "dependencyHandling=" + dependencyHandling + ", " : "")
+ "overwritePrimaryTypesOfFolders=" + overwritePrimaryTypesOfFolders + ", "
- + "idConflictPolicy=" + idConflictPolicy + "]";
+ + "idConflictPolicy=" + (idConflictPolicy != null ? idConflictPolicy : IdConflictPolicy.FAIL) + "]";
}
}
\ No newline at end of file
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java
index 2be7b2f..4989948 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-@Version("2.12.0")
+@Version("2.13.0")
package org.apache.jackrabbit.vault.fs.io;
import org.osgi.annotation.versioning.Version;
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java
index aecdaac..af74a2b 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java
@@ -386,6 +386,10 @@ public class JcrPackageImpl implements JcrPackage {
// MAX_VALUE disables saving completely, therefore we have to use a lower value!
opts.setAutoSaveThreshold(Integer.MAX_VALUE - 1);
}
+ if (!opts.hasIdConflictPolicyBeenSet()) {
+ opts.setIdConflictPolicy(mgr.getDefaultIdConflictPolicy());
+ }
+ opts.setIdConflictPolicy(mgr.getDefaultIdConflictPolicy());
InstallContextImpl ctx = pack.prepareExtract(node.getSession(), opts, mgr.getSecurityConfig(), mgr.isStrictByDefault(),
mgr.overwritePrimaryTypesOfFoldersByDefault());
JcrPackage snap = null;
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImpl.java
index 4e5d477..61deeca 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImpl.java
@@ -38,6 +38,7 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.fs.api.ProgressTrackerListener;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
import org.apache.jackrabbit.vault.fs.config.DefaultMetaInf;
@@ -88,7 +89,7 @@ public class JcrPackageManagerImpl extends PackageManagerImpl implements JcrPack
*
* @param session repository session
* @param roots the root paths to store the packages.
- * @deprecated Use {@link #JcrPackageManagerImpl(Session, String[], String[], String[], boolean, boolean)} instead.
+ * @deprecated Use {@link #JcrPackageManagerImpl(Session, String[], String[], String[], boolean, boolean, IdConflictPolicy)} instead.
*/
@Deprecated
public JcrPackageManagerImpl(@NotNull Session session, @Nullable String[] roots) {
@@ -96,10 +97,10 @@ public class JcrPackageManagerImpl extends PackageManagerImpl implements JcrPack
}
public JcrPackageManagerImpl(@NotNull Session session, @Nullable String[] roots, @Nullable String[] authIdsForHookExecution,
- @Nullable String[] authIdsForRootInstallation, boolean isStrict, boolean overwritePrimaryTypesOfFoldersByDefault) {
+ @Nullable String[] authIdsForRootInstallation, boolean isStrict, boolean overwritePrimaryTypesOfFoldersByDefault, IdConflictPolicy idConflictPolicy) {
this(new JcrPackageRegistry(session,
new AbstractPackageRegistry.SecurityConfig(authIdsForHookExecution, authIdsForRootInstallation), isStrict,
- overwritePrimaryTypesOfFoldersByDefault, roots));
+ overwritePrimaryTypesOfFoldersByDefault, idConflictPolicy, roots));
}
protected JcrPackageManagerImpl(JcrPackageRegistry registry) {
@@ -116,7 +117,7 @@ public class JcrPackageManagerImpl extends PackageManagerImpl implements JcrPack
public PackageRegistry getRegistry() {
return registry;
}
-
+
public JcrPackageRegistry getInternalRegistry() {
return registry;
}
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java
index cc1d50e..9fdd298 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagingImpl.java
@@ -24,6 +24,7 @@ import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.packaging.JcrPackage;
import org.apache.jackrabbit.vault.packaging.JcrPackageDefinition;
import org.apache.jackrabbit.vault.packaging.JcrPackageManager;
@@ -81,7 +82,6 @@ public class PackagingImpl implements Packaging {
Config config;
public PackagingImpl() {
-
}
@ObjectClassDefinition(
@@ -106,6 +106,9 @@ public class PackagingImpl implements Packaging {
@AttributeDefinition(description = "Whether to overwrite the primary type of folders")
boolean overwritePrimaryTypesOfFolders() default true;
+
+ @AttributeDefinition(description = "Default IdConflictPolicy")
+ IdConflictPolicy defaultIdConflictPolicy() default IdConflictPolicy.FAIL;
}
@Activate
@@ -126,7 +129,9 @@ public class PackagingImpl implements Packaging {
* {@inheritDoc}
*/
public JcrPackageManager getPackageManager(Session session) {
- JcrPackageManagerImpl mgr = new JcrPackageManagerImpl(session, config.packageRoots(), config.authIdsForHookExecution(), config.authIdsForRootInstallation(), config.isStrict(), config.overwritePrimaryTypesOfFolders());
+ JcrPackageManagerImpl mgr = new JcrPackageManagerImpl(session, config.packageRoots(), config.authIdsForHookExecution(),
+ config.authIdsForRootInstallation(), config.isStrict(), config.overwritePrimaryTypesOfFolders(),
+ config.defaultIdConflictPolicy());
mgr.setDispatcher(eventDispatcher);
setBaseRegistry(mgr.getInternalRegistry(), registries);
return mgr;
@@ -173,14 +178,16 @@ public class PackagingImpl implements Packaging {
return getJcrPackageRegistry(session, true);
}
-
@Override
public PackageRegistry getJcrBasedPackageRegistry(Session session) {
return getJcrPackageRegistry(session);
}
private JcrPackageRegistry getJcrPackageRegistry(Session session, boolean useBaseRegistry) {
- JcrPackageRegistry registry = new JcrPackageRegistry(session, new AbstractPackageRegistry.SecurityConfig(config.authIdsForHookExecution(), config.authIdsForRootInstallation()), config.isStrict(), config.overwritePrimaryTypesOfFolders(), config.packageRoots());
+ JcrPackageRegistry registry = new JcrPackageRegistry(session,
+ new AbstractPackageRegistry.SecurityConfig(config.authIdsForHookExecution(), config.authIdsForRootInstallation()),
+ config.isStrict(), config.overwritePrimaryTypesOfFolders(), config.defaultIdConflictPolicy(),
+ config.packageRoots());
registry.setDispatcher(eventDispatcher);
if (useBaseRegistry) {
setBaseRegistry(registry, registries);
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/AbstractPackageRegistry.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/AbstractPackageRegistry.java
index fcc2492..5453dc7 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/AbstractPackageRegistry.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/AbstractPackageRegistry.java
@@ -27,6 +27,7 @@ import java.util.UUID;
import javax.jcr.Session;
+import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.fs.io.ImportOptions;
import org.apache.jackrabbit.vault.packaging.Dependency;
import org.apache.jackrabbit.vault.packaging.NoSuchPackageException;
@@ -85,7 +86,10 @@ public abstract class AbstractPackageRegistry implements PackageRegistry, Intern
private final boolean overwritePrimaryTypesOfFoldersByDefault;
- public AbstractPackageRegistry(SecurityConfig securityConfig, boolean isStrictByDefault, boolean overwritePrimaryTypesOfFoldersByDefault) {
+ private final IdConflictPolicy defaultIdConflictPolicy;
+
+ public AbstractPackageRegistry(SecurityConfig securityConfig, boolean isStrictByDefault,
+ boolean overwritePrimaryTypesOfFoldersByDefault, IdConflictPolicy defaultIdConflictPolicy) {
if (securityConfig != null) {
this.securityConfig = securityConfig;
} else {
@@ -93,6 +97,7 @@ public abstract class AbstractPackageRegistry implements PackageRegistry, Intern
}
this.isStrictByDefault = isStrictByDefault;
this.overwritePrimaryTypesOfFoldersByDefault = overwritePrimaryTypesOfFoldersByDefault;
+ this.defaultIdConflictPolicy = defaultIdConflictPolicy;
}
public boolean isStrictByDefault() {
@@ -103,6 +108,10 @@ public abstract class AbstractPackageRegistry implements PackageRegistry, Intern
return overwritePrimaryTypesOfFoldersByDefault;
}
+ public IdConflictPolicy getDefaultIdConflictPolicy() {
+ return defaultIdConflictPolicy;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java
index 27f1e34..ab24db1 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java
@@ -36,6 +36,7 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
@@ -107,7 +108,7 @@ public class FSPackageRegistry extends AbstractPackageRegistry {
*
* @param homeDir the directory in which packages and their metadata is stored
* @throws IOException If an I/O error occurs.
- * @deprecated Use {@link #FSPackageRegistry(File, InstallationScope, SecurityConfig, boolean, boolean)} instead
+ * @deprecated Use {@link #FSPackageRegistry(File, InstallationScope, SecurityConfig, boolean, boolean, IdConflictPolicy)} instead
*/
@Deprecated
public FSPackageRegistry(@NotNull File homeDir) throws IOException {
@@ -120,7 +121,7 @@ public class FSPackageRegistry extends AbstractPackageRegistry {
* @param homeDir the directory in which packages and their metadata is stored
* @param scope to set a corresponding workspacefilter
* @throws IOException If an I/O error occurs.
- * @deprecated Use {@link #FSPackageRegistry(File, InstallationScope, SecurityConfig, boolean, boolean)} instead
+ * @deprecated Use {@link #FSPackageRegistry(File, InstallationScope, SecurityConfig, boolean, boolean, IdConflictPolicy)} instead
*/
@Deprecated
public FSPackageRegistry(@NotNull File homeDir, InstallationScope scope) throws IOException {
@@ -133,15 +134,17 @@ public class FSPackageRegistry extends AbstractPackageRegistry {
* @param scope
* @param securityConfig
* @throws IOException
- * @deprecated Use {@link #FSPackageRegistry(File, InstallationScope, SecurityConfig, boolean, boolean)} instead
+ * @deprecated Use {@link #FSPackageRegistry(File, InstallationScope, SecurityConfig, boolean, boolean, IdConflictPolicy)} instead
*/
@Deprecated
public FSPackageRegistry(@NotNull File homeDir, InstallationScope scope, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig) throws IOException {
- this(homeDir, scope, securityConfig, false, true);
+ this(homeDir, scope, securityConfig, false, true, IdConflictPolicy.FAIL);
}
- public FSPackageRegistry(@NotNull File homeDir, InstallationScope scope, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrict, boolean overwritePrimaryTypesOfFolders) throws IOException {
- super(securityConfig, isStrict, overwritePrimaryTypesOfFolders);
+ public FSPackageRegistry(@NotNull File homeDir, InstallationScope scope,
+ @Nullable AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrict,
+ boolean overwritePrimaryTypesOfFolders, IdConflictPolicy defaultIdConflictPolicy) throws IOException {
+ super(securityConfig, isStrict, overwritePrimaryTypesOfFolders, defaultIdConflictPolicy);
log.info("Jackrabbit Filevault FS Package Registry initialized with home location {}", homeDir.getPath());
this.scope = scope;
this.stateCache = new FSInstallStateCache(homeDir.toPath());
@@ -152,7 +155,7 @@ public class FSPackageRegistry extends AbstractPackageRegistry {
* @throws IOException
*/
public FSPackageRegistry() throws IOException {
- super(null, false, true); // set security config delayed (i.e. only after activate())
+ super(null, false, true, IdConflictPolicy.FAIL); // set security config delayed (i.e. only after activate())
}
@Activate
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/JcrPackageRegistry.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/JcrPackageRegistry.java
index 1a2a080..e33c014 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/JcrPackageRegistry.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/JcrPackageRegistry.java
@@ -37,6 +37,7 @@ import javax.jcr.nodetype.NodeType;
import org.apache.commons.io.input.NullInputStream;
import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.fs.config.MetaInf;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.ImportOptions;
@@ -117,12 +118,13 @@ public class JcrPackageRegistry extends AbstractPackageRegistry {
* @param roots the root paths to store the packages.
*/
public JcrPackageRegistry(@NotNull Session session, @Nullable String ... roots) {
- this(session, null, false, true, roots);
+ this(session, null, false, true, IdConflictPolicy.FAIL, roots);
}
public JcrPackageRegistry(@NotNull Session session, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig,
- boolean isStrict, boolean overwritePrimaryTypesOfFoldersByDefault, @Nullable String... roots) {
- super(securityConfig, isStrict, overwritePrimaryTypesOfFoldersByDefault);
+ boolean isStrict, boolean overwritePrimaryTypesOfFoldersByDefault, IdConflictPolicy defaultIdConflictPolicy,
+ @Nullable String... roots) {
+ super(securityConfig, isStrict, overwritePrimaryTypesOfFoldersByDefault, defaultIdConflictPolicy);
this.session = session;
if (roots == null || roots.length == 0) {
packRootPaths = new String[]{DEFAULT_PACKAGE_ROOT_PATH};
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/PackageTaskOptionsSerializer.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/PackageTaskOptionsSerializer.java
index a5653ef..57f3722 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/PackageTaskOptionsSerializer.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/PackageTaskOptionsSerializer.java
@@ -21,6 +21,7 @@ import java.util.function.Consumer;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+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.fs.io.ImportOptions;
@@ -43,6 +44,7 @@ public class PackageTaskOptionsSerializer {
private static final String TAG_DRY_RUN = "dryRun";
private static final String TAG_IMPORT_MODE = "importMode";
private static final String TAG_OVERWRITE_PRIMARY_TYPES_OF_FOLDERS = "overwritePrimaryTypesOfFolders";
+ private static final String TAG_ID_CONFLICT_POLICY = "idConflictPolicy";
enum Type {
ImportOptions;
@@ -98,6 +100,10 @@ public class PackageTaskOptionsSerializer {
writeOption(writer, TAG_DRY_RUN, Boolean.class, importOptions.isDryRun());
writeOption(writer, TAG_IMPORT_MODE, ImportMode.class, importOptions.getImportMode());
writeOption(writer, TAG_OVERWRITE_PRIMARY_TYPES_OF_FOLDERS, Boolean.class, importOptions.overwritePrimaryTypesOfFolders());
+ // don't persist default conflict policy
+ if (importOptions.hasIdConflictPolicyBeenSet()) {
+ writeOption(writer, TAG_ID_CONFLICT_POLICY, IdConflictPolicy.class, importOptions.getIdConflictPolicy());
+ }
}
public ImportOptionsPackageTaskOption loadImportOptions(Element element) {
@@ -111,6 +117,7 @@ public class PackageTaskOptionsSerializer {
readOption(element, TAG_DRY_RUN, Boolean.class, options::setDryRun);
readOption(element, TAG_IMPORT_MODE, ImportMode.class, options::setImportMode);
readOption(element, TAG_OVERWRITE_PRIMARY_TYPES_OF_FOLDERS, Boolean.class, options::setOverwritePrimaryTypesOfFolders);
+ readOption(element, TAG_ID_CONFLICT_POLICY, IdConflictPolicy.class, options::setIdConflictPolicy);
return new ImportOptionsPackageTaskOption(options);
}
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageInstallIT.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageInstallIT.java
index 676e35d..089488b 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageInstallIT.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageInstallIT.java
@@ -42,6 +42,7 @@ import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
+import org.apache.jackrabbit.vault.fs.api.IdConflictPolicy;
import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
import org.apache.jackrabbit.vault.fs.io.ImportOptions;
import org.apache.jackrabbit.vault.packaging.Dependency;
@@ -289,7 +290,7 @@ public class PackageInstallIT extends IntegrationTestBase {
Session userSession = repository.login(new SimpleCredentials(userId, userPwd.toCharArray()));
try {
- packMgr = new JcrPackageManagerImpl(userSession, new String[0], new String[] {"user1"}, null, false, true);
+ packMgr = new JcrPackageManagerImpl(userSession, new String[0], new String[] {"user1"}, null, false, true, IdConflictPolicy.FAIL);
PackageEventDispatcherImpl dispatcher = new PackageEventDispatcherImpl();
dispatcher.bindPackageEventListener(new ActivityLog(), Collections.singletonMap("component.id", (Object) "1234"));