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 2021/10/27 14:46:03 UTC
[jackrabbit-filevault] branch
bugfix/JCRVLT-557-conf-implicit-nt-calc updated: JCRVLT-577: move flag into
ImportOptions
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch bugfix/JCRVLT-557-conf-implicit-nt-calc
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
The following commit(s) were added to refs/heads/bugfix/JCRVLT-557-conf-implicit-nt-calc by this push:
new 479d4d5 JCRVLT-577: move flag into ImportOptions
479d4d5 is described below
commit 479d4d551a7bd9be108731a796c2f4e64b63ea75
Author: Julian Reschke <ju...@gmx.de>
AuthorDate: Wed Oct 27 15:44:36 2021 +0100
JCRVLT-577: move flag into ImportOptions
---
.../vault/fs/impl/io/FolderArtifactHandler.java | 32 +++++++++++-----------
.../jackrabbit/vault/fs/io/ImportOptions.java | 31 +++++++++++++++++++--
.../apache/jackrabbit/vault/fs/io/Importer.java | 1 +
.../jackrabbit/vault/fs/io/package-info.java | 2 +-
4 files changed, 47 insertions(+), 19 deletions(-)
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java
index e1ffe16..a593c2b 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java
@@ -40,8 +40,6 @@ import org.apache.jackrabbit.vault.fs.io.ImportOptions;
import org.apache.jackrabbit.vault.util.EffectiveNodeType;
import org.apache.jackrabbit.vault.util.JcrConstants;
import org.jetbrains.annotations.NotNull;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Handles artifact sets with just a directory.
@@ -49,19 +47,10 @@ import org.slf4j.LoggerFactory;
*/
public class FolderArtifactHandler extends AbstractArtifactHandler {
- private static final Logger LOG = LoggerFactory.getLogger(FolderArtifactHandler.class);
-
- private static boolean IMPLICIT_NODETYPE_CALCULATION;
- static {
- boolean t = true;
- String key = "org.apache.jackrabbit.filevault.fs.impl.io.FolderArtifactHandler.IMPLICIT_NODETYPE_CALCULATION";
- String sp = System.getProperty(key);
- if (sp != null) {
- LOG.info(key + " set to: '" + sp + "' (default is '" + t + "')");
- t = Boolean.parseBoolean(sp);
- }
- IMPLICIT_NODETYPE_CALCULATION = t;
- }
+ /**
+ * whether correct primary type should be enforced upon creation
+ */
+ private boolean enforceCorrectPrimaryType = true;
/**
* qualified names of those default node types which should not be used for intermediate nodes (as they come with too many restrictions)
@@ -89,6 +78,17 @@ public class FolderArtifactHandler extends AbstractArtifactHandler {
this.nodeType = nodeType;
}
+ /**
+ * Sets whether correct primary type should be enforced upon creation
+ *
+ * @param enforceCorrectPrimaryType
+ * set to "false" to disable the default behavior of enforcing
+ * the primary node type
+ */
+ public void setEnforceCorrectPrimaryType(boolean enforceCorrectPrimaryType) {
+ this.enforceCorrectPrimaryType = enforceCorrectPrimaryType;
+ }
+
private Node createIntermediateNode(Node parent, String intermediateNodeName) throws RepositoryException {
// preferably use default (=primary) node type for intermediate nodes
Optional<String> defaultPrimaryChildNodeType = EffectiveNodeType.ofNode(parent).getDefaultPrimaryChildNodeTypeName(parent, intermediateNodeName);
@@ -139,7 +139,7 @@ public class FolderArtifactHandler extends AbstractArtifactHandler {
}
Node node = parent.getNode(dir.getRelativePath());
- if (IMPLICIT_NODETYPE_CALCULATION
+ if (enforceCorrectPrimaryType
&& wspFilter.contains(node.getPath()) && wspFilter.getImportMode(node.getPath()) == ImportMode.REPLACE && !nodeType.equals(node.getPrimaryNodeType().getName())) {
modifyPrimaryType(node, info);
}
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 82a6f64..20489dd 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
@@ -29,12 +29,16 @@ import org.apache.jackrabbit.vault.fs.api.ProgressTrackerListener;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
import org.apache.jackrabbit.vault.packaging.DependencyHandling;
import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Option that control the package import.
*/
public class ImportOptions {
+ private static final Logger log = LoggerFactory.getLogger(ImportOptions.class);
+
private Boolean strict;
private ProgressTrackerListener listener;
@@ -69,6 +73,20 @@ public class ImportOptions {
private @NotNull IdConflictPolicy idConflictPolicy = IdConflictPolicy.FAIL;
+ private static boolean DEFAULT_ENFORCE_CORRECT_PRIMARY_NODETYPE;
+ static {
+ boolean t = true;
+ String key = "org.apache.jackrabbit.vault.fs.io.ImportOptions.DEFAULT_ENFORCE_CORRECT_PRIMARY_NODETYPE";
+ String sp = System.getProperty(key);
+ if (sp != null) {
+ log.info(key + " set to: '" + sp + "' (default is '" + t + "')");
+ t = Boolean.parseBoolean(sp);
+ }
+ DEFAULT_ENFORCE_CORRECT_PRIMARY_NODETYPE = t;
+ }
+
+ private boolean enforceCorrectPrimaryType = DEFAULT_ENFORCE_CORRECT_PRIMARY_NODETYPE;
+
/**
* Default constructor.
*/
@@ -100,6 +118,7 @@ public class ImportOptions {
pathMapping = base.pathMapping;
dependencyHandling = base.dependencyHandling;
idConflictPolicy = base.idConflictPolicy;
+ enforceCorrectPrimaryType = base.enforceCorrectPrimaryType;
}
}
@@ -126,6 +145,7 @@ public class ImportOptions {
ret.pathMapping = pathMapping;
ret.dependencyHandling = dependencyHandling;
ret.idConflictPolicy = idConflictPolicy;
+ ret.enforceCorrectPrimaryType = enforceCorrectPrimaryType;
return ret;
}
@@ -261,6 +281,10 @@ public class ImportOptions {
this.cugHandling = cugHandling;
}
+ public boolean getEnforceCorrectPrimaryType() {
+ return enforceCorrectPrimaryType;
+ }
+
/**
* Defines the package installation should recursively install sub packages. Note that if this flag is enabled,
* the {@link org.apache.jackrabbit.vault.packaging.SubPackageHandling} configuration has no effect, as sub packages
@@ -465,6 +489,8 @@ public class ImportOptions {
result = prime * result + ((pathMapping == null) ? 0 : pathMapping.hashCode());
result = prime * result + ((idConflictPolicy == null) ? 0 : idConflictPolicy.hashCode());
result = prime * result + (strict ? 1231 : 1237);
+ result = prime * result + (enforceCorrectPrimaryType ? 1231 : 1237);
+
return result;
}
@@ -530,6 +556,8 @@ public class ImportOptions {
return false;
if (strict != other.strict)
return false;
+ if (enforceCorrectPrimaryType != other.enforceCorrectPrimaryType)
+ return false;
if (!idConflictPolicy.equals(other.idConflictPolicy))
return false;
return true;
@@ -548,8 +576,7 @@ public class ImportOptions {
+ (hookClassLoader != null ? "hookClassLoader=" + hookClassLoader + ", " : "")
+ (pathMapping != null ? "pathMapping=" + pathMapping + ", " : "")
+ (dependencyHandling != null ? "dependencyHandling=" + dependencyHandling + ", " : "")
+ + "enforceCorrectPrimaryType=" + enforceCorrectPrimaryType + ", "
+ "idConflictPolicy=" + idConflictPolicy + "]";
}
-
-
}
\ No newline at end of file
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
index 4777004..f1d0a9b 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
@@ -400,6 +400,7 @@ public class Importer {
genericHandler.setCugHandling(opts.getCugHandling());
folderHandler.setAcHandling(opts.getAccessControlHandling());
folderHandler.setCugHandling(opts.getCugHandling());
+ folderHandler.setEnforceCorrectPrimaryType(opts.getEnforceCorrectPrimaryType());
filter = opts.getFilter();
if (filter == null) {
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 06a5dbd..2be7b2f 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.11.0")
+@Version("2.12.0")
package org.apache.jackrabbit.vault.fs.io;
import org.osgi.annotation.versioning.Version;