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/11/02 12:59:35 UTC
[jackrabbit-filevault] branch
bugfix/JCRVLT-557-conf-implicit-nt-calc updated: JCRVLT-557: move default
into OSGi config
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 6663fac JCRVLT-557: move default into OSGi config
6663fac is described below
commit 6663fac5bf69300bb2830154e3565ba764930d44
Author: Julian Reschke <ju...@gmx.de>
AuthorDate: Tue Nov 2 13:59:04 2021 +0100
JCRVLT-557: move default into OSGi config
---
.../jackrabbit/vault/fs/io/ImportOptions.java | 30 +++++++---------------
.../apache/jackrabbit/vault/fs/io/Importer.java | 12 ++++++---
.../vault/packaging/impl/JcrPackageImpl.java | 3 ++-
.../packaging/impl/JcrPackageManagerImpl.java | 7 +++--
.../vault/packaging/impl/PackagingImpl.java | 13 ++++++----
.../vault/packaging/impl/ZipVaultPackage.java | 15 ++++++-----
.../registry/impl/AbstractPackageRegistry.java | 9 ++++++-
.../packaging/registry/impl/FSPackageRegistry.java | 10 ++++----
.../registry/impl/JcrPackageRegistry.java | 7 ++---
.../packaging/integration/PackageInstallIT.java | 2 +-
10 files changed, 60 insertions(+), 48 deletions(-)
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 a853a9a..17e4ef1 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,16 +29,12 @@ 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;
@@ -73,19 +69,7 @@ public class ImportOptions {
private @NotNull IdConflictPolicy idConflictPolicy = IdConflictPolicy.FAIL;
- private static boolean OVERWRITE_PRIMARY_TYPES_OF_FOLDERS;
- static {
- boolean t = true;
- String key = "org.apache.jackrabbit.vault.fs.io.ImportOptions.OVERWRITE_PRIMARY_TYPES_OF_FOLDERS";
- String sp = System.getProperty(key);
- if (sp != null) {
- log.info(key + " set to: '" + sp + "' (default is '" + t + "')");
- t = Boolean.parseBoolean(sp);
- }
- OVERWRITE_PRIMARY_TYPES_OF_FOLDERS = t;
- }
-
- private boolean overwritePrimaryTypesOfFolders = OVERWRITE_PRIMARY_TYPES_OF_FOLDERS;
+ private Boolean overwritePrimaryTypesOfFolders;
/**
* Default constructor.
@@ -149,6 +133,14 @@ public class ImportOptions {
return ret;
}
+ public boolean overwritePrimaryTypesOfFolders(boolean overwritePrimaryTypesOfFoldersByDefault) {
+ if (overwritePrimaryTypesOfFolders == null) {
+ return overwritePrimaryTypesOfFoldersByDefault;
+ } else {
+ return overwritePrimaryTypesOfFolders;
+ }
+ }
+
public boolean isStrict(boolean isStrictByDefault) {
if (strict == null) {
return isStrictByDefault;
@@ -281,10 +273,6 @@ public class ImportOptions {
this.cugHandling = cugHandling;
}
- public boolean getOverwritePrimaryTypesOfFolders() {
- return overwritePrimaryTypesOfFolders;
- }
-
/**
* 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
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 5faa099..776bbee 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
@@ -273,11 +273,12 @@ public class Importer {
* list of intermediate infos that were removed since the last auto save
*/
private Map<String, TxInfo> removedIntermediates = new LinkedHashMap<String, TxInfo>();
-
+
private final boolean isStrictByDefault;
+ private final boolean overwritePrimaryTypesOfFoldersByDefault;
public Importer() {
- this(new ImportOptions(), false);
+ this(new ImportOptions(), false, true);
}
public Importer(ImportOptions opts) {
@@ -285,8 +286,13 @@ public class Importer {
}
public Importer(ImportOptions opts, boolean isStrictByDefault) {
+ this(opts, isStrictByDefault, true);
+ }
+
+ public Importer(ImportOptions opts, boolean isStrictByDefault, boolean overwritePrimaryTypesOfFoldersByDefault) {
this.opts = opts;
this.isStrictByDefault = isStrictByDefault;
+ this.overwritePrimaryTypesOfFoldersByDefault = overwritePrimaryTypesOfFoldersByDefault;
}
public ImportOptions getOptions() {
@@ -400,7 +406,7 @@ public class Importer {
genericHandler.setCugHandling(opts.getCugHandling());
folderHandler.setAcHandling(opts.getAccessControlHandling());
folderHandler.setCugHandling(opts.getCugHandling());
- folderHandler.setOverwritePrimaryTypesOfFolders(opts.getOverwritePrimaryTypesOfFolders());
+ folderHandler.setOverwritePrimaryTypesOfFolders(opts.overwritePrimaryTypesOfFolders(overwritePrimaryTypesOfFoldersByDefault));
filter = opts.getFilter();
if (filter == null) {
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 3dd99dc..4d5a8b0 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,7 +386,8 @@ public class JcrPackageImpl implements JcrPackage {
// MAX_VALUE disables saving completely, therefore we have to use a lower value!
opts.setAutoSaveThreshold(Integer.MAX_VALUE - 1);
}
- InstallContextImpl ctx = pack.prepareExtract(node.getSession(), opts, mgr.getSecurityConfig(), mgr.isStrictByDefault());
+ InstallContextImpl ctx = pack.prepareExtract(node.getSession(), opts, mgr.getSecurityConfig(), mgr.isStrictByDefault(),
+ mgr.overwritePrimaryTypesOfFoldersByDefault());
JcrPackage snap = null;
if (!opts.isDryRun() && createSnapshot) {
ExportOptions eOpts = new ExportOptions();
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 0096d2b..756868a 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
@@ -95,8 +95,11 @@ public class JcrPackageManagerImpl extends PackageManagerImpl implements JcrPack
this(new JcrPackageRegistry(session, roots));
}
- public JcrPackageManagerImpl(@NotNull Session session, @Nullable String[] roots, @Nullable String[] authIdsForHookExecution, @Nullable String[] authIdsForRootInstallation, boolean isStrict) {
- this(new JcrPackageRegistry(session, new AbstractPackageRegistry.SecurityConfig(authIdsForHookExecution, authIdsForRootInstallation), isStrict, roots));
+ public JcrPackageManagerImpl(@NotNull Session session, @Nullable String[] roots, @Nullable String[] authIdsForHookExecution,
+ @Nullable String[] authIdsForRootInstallation, boolean isStrict, boolean overwritePrimaryTypesOfFoldersByDefault) {
+ this(new JcrPackageRegistry(session,
+ new AbstractPackageRegistry.SecurityConfig(authIdsForHookExecution, authIdsForRootInstallation), isStrict,
+ overwritePrimaryTypesOfFoldersByDefault, roots));
}
protected JcrPackageManagerImpl(JcrPackageRegistry 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 6b1347b..cc1d50e 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
@@ -94,15 +94,18 @@ public class PackagingImpl implements Packaging {
*/
@AttributeDefinition(description = "The locations in the repository which are used by the package manager")
String[] packageRoots() default {"/etc/packages"};
-
+
@AttributeDefinition(description = "The authorizable ids or principal names which are allowed to execute hooks (in addition to 'admin', 'administrators' and 'system'")
String[] authIdsForHookExecution();
-
+
@AttributeDefinition(description = "The authorizable ids or principal names which are allowed to install packages with the 'requireRoot' flag (in addition to 'admin', 'administrators' and 'system'")
String[] authIdsForRootInstallation();
-
+
@AttributeDefinition(description = "The default value for strict imports (i.e. whether it just logs certain errors or always throws exceptions")
boolean isStrict() default true;
+
+ @AttributeDefinition(description = "Whether to overwrite the primary type of folders")
+ boolean overwritePrimaryTypesOfFolders() default true;
}
@Activate
@@ -123,7 +126,7 @@ public class PackagingImpl implements Packaging {
* {@inheritDoc}
*/
public JcrPackageManager getPackageManager(Session session) {
- JcrPackageManagerImpl mgr = new JcrPackageManagerImpl(session, config.packageRoots(), config.authIdsForHookExecution(), config.authIdsForRootInstallation(), config.isStrict());
+ JcrPackageManagerImpl mgr = new JcrPackageManagerImpl(session, config.packageRoots(), config.authIdsForHookExecution(), config.authIdsForRootInstallation(), config.isStrict(), config.overwritePrimaryTypesOfFolders());
mgr.setDispatcher(eventDispatcher);
setBaseRegistry(mgr.getInternalRegistry(), registries);
return mgr;
@@ -177,7 +180,7 @@ public class PackagingImpl implements Packaging {
}
private JcrPackageRegistry getJcrPackageRegistry(Session session, boolean useBaseRegistry) {
- JcrPackageRegistry registry = new JcrPackageRegistry(session, new AbstractPackageRegistry.SecurityConfig(config.authIdsForHookExecution(), config.authIdsForRootInstallation()), config.isStrict(), config.packageRoots());
+ JcrPackageRegistry registry = new JcrPackageRegistry(session, new AbstractPackageRegistry.SecurityConfig(config.authIdsForHookExecution(), config.authIdsForRootInstallation()), config.isStrict(), config.overwritePrimaryTypesOfFolders(), config.packageRoots());
registry.setDispatcher(eventDispatcher);
if (useBaseRegistry) {
setBaseRegistry(registry, registries);
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java
index 1d44cab..67fd9c7 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java
@@ -162,15 +162,16 @@ public class ZipVaultPackage extends PackagePropertiesImpl implements VaultPacka
* @throws PackageException if an error during packaging occurs
* @throws RepositoryException if a repository error during installation occurs.
*/
- public void extract(Session session, ImportOptions opts, @NotNull AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrict) throws PackageException, RepositoryException {
- extract(prepareExtract(session, opts, securityConfig, isStrict), null);
+ public void extract(Session session, ImportOptions opts, @NotNull AbstractPackageRegistry.SecurityConfig securityConfig,
+ boolean isStrict, boolean isOverwritePrimaryTypesOfFolders) throws PackageException, RepositoryException {
+ extract(prepareExtract(session, opts, securityConfig, isStrict, isOverwritePrimaryTypesOfFolders), null);
}
-
+
/**
* {@inheritDoc}
*/
public void extract(Session session, ImportOptions opts) throws RepositoryException, PackageException {
- extract(session, opts, new AbstractPackageRegistry.SecurityConfig(null, null), false);
+ extract(session, opts, new AbstractPackageRegistry.SecurityConfig(null, null), false, true);
}
/**
@@ -191,7 +192,9 @@ public class ZipVaultPackage extends PackagePropertiesImpl implements VaultPacka
* @throws IllegalStateException if the package is not valid.
* @return installation context
*/
- protected InstallContextImpl prepareExtract(Session session, ImportOptions opts, @NotNull AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrictByDefault) throws PackageException, RepositoryException {
+ protected InstallContextImpl prepareExtract(Session session, ImportOptions opts,
+ @NotNull AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrictByDefault,
+ boolean overwritePrimaryTypesOfFoldersByDefault) throws PackageException, RepositoryException {
if (!isValid()) {
throw new IllegalStateException("Package not valid.");
}
@@ -211,7 +214,7 @@ public class ZipVaultPackage extends PackagePropertiesImpl implements VaultPacka
opts.setAutoSaveThreshold(Integer.MAX_VALUE - 1);
}
- Importer importer = new Importer(opts, isStrictByDefault);
+ Importer importer = new Importer(opts, isStrictByDefault, overwritePrimaryTypesOfFoldersByDefault);
AccessControlHandling ac = getACHandling();
if (opts.getAccessControlHandling() == null) {
opts.setAccessControlHandling(ac);
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 858a9ad..fcc2492 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
@@ -83,19 +83,26 @@ public abstract class AbstractPackageRegistry implements PackageRegistry, Intern
*/
private final boolean isStrictByDefault;
- public AbstractPackageRegistry(SecurityConfig securityConfig, boolean isStrictByDefault) {
+ private final boolean overwritePrimaryTypesOfFoldersByDefault;
+
+ public AbstractPackageRegistry(SecurityConfig securityConfig, boolean isStrictByDefault, boolean overwritePrimaryTypesOfFoldersByDefault) {
if (securityConfig != null) {
this.securityConfig = securityConfig;
} else {
this.securityConfig = new SecurityConfig(null, null);
}
this.isStrictByDefault = isStrictByDefault;
+ this.overwritePrimaryTypesOfFoldersByDefault = overwritePrimaryTypesOfFoldersByDefault;
}
public boolean isStrictByDefault() {
return isStrictByDefault;
}
+ public boolean overwritePrimaryTypesOfFoldersByDefault() {
+ return overwritePrimaryTypesOfFoldersByDefault;
+ }
+
/**
* {@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 b78ee6c..ff8d72b 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
@@ -137,11 +137,11 @@ public class FSPackageRegistry extends AbstractPackageRegistry {
*/
@Deprecated
public FSPackageRegistry(@NotNull File homeDir, InstallationScope scope, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig) throws IOException {
- this(homeDir, scope, securityConfig, false);
+ this(homeDir, scope, securityConfig, false, true);
}
- public FSPackageRegistry(@NotNull File homeDir, InstallationScope scope, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrict) throws IOException {
- super(securityConfig, isStrict);
+ public FSPackageRegistry(@NotNull File homeDir, InstallationScope scope, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrict, boolean overwritePrimaryTypesOfFolders) throws IOException {
+ super(securityConfig, isStrict, overwritePrimaryTypesOfFolders);
log.info("Jackrabbit Filevault FS Package Registry initialized with home location {}", homeDir.getPath());
this.scope = scope;
this.stateCache = new FSInstallStateCache(homeDir.toPath());
@@ -152,7 +152,7 @@ public class FSPackageRegistry extends AbstractPackageRegistry {
* @throws IOException
*/
public FSPackageRegistry() throws IOException {
- super(null, false); // set security config delayed (i.e. only after activate())
+ super(null, false, true); // set security config delayed (i.e. only after activate())
}
@Activate
@@ -628,7 +628,7 @@ public class FSPackageRegistry extends AbstractPackageRegistry {
}
if (vltPkg instanceof ZipVaultPackage) {
- ((ZipVaultPackage)vltPkg).extract(session, opts, getSecurityConfig(), isStrictByDefault());
+ ((ZipVaultPackage)vltPkg).extract(session, opts, getSecurityConfig(), isStrictByDefault(), overwritePrimaryTypesOfFoldersByDefault());
dispatch(PackageEvent.Type.EXTRACT, pkg.getId(), null);
stateCache.updatePackageStatus(vltPkg.getId(), FSPackageStatus.EXTRACTED);
} else {
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 4100659..897348e 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
@@ -117,11 +117,12 @@ 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, roots);
+ this(session, null, false, true, roots);
}
- public JcrPackageRegistry(@NotNull Session session, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrict, @Nullable String... roots) {
- super(securityConfig, isStrict);
+ public JcrPackageRegistry(@NotNull Session session, @Nullable AbstractPackageRegistry.SecurityConfig securityConfig,
+ boolean isStrict, boolean overwritePrimaryTypesOfFoldersByDefault, @Nullable String... roots) {
+ super(securityConfig, isStrict, overwritePrimaryTypesOfFoldersByDefault);
this.session = session;
if (roots == null || roots.length == 0) {
packRootPaths = new String[]{DEFAULT_PACKAGE_ROOT_PATH};
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 1f1e6d0..4ae429c 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
@@ -291,7 +291,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);
+ packMgr = new JcrPackageManagerImpl(userSession, new String[0], new String[] {"user1"}, null, false, true);
PackageEventDispatcherImpl dispatcher = new PackageEventDispatcherImpl();
dispatcher.bindPackageEventListener(new ActivityLog(), Collections.singletonMap("component.id", (Object) "1234"));