This is an automated email from the ASF dual-hosted git repository. daim pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push: new c514f197e2 Revert "OAK-11605 : removed usage of Guava's ImmutableSet.copyOf with LinkedS…" (#2198) c514f197e2 is described below commit c514f197e2bf0398b14444eb8e05ffd49979e706 Author: Rishabh Kumar <rishabhdaim1...@gmail.com> AuthorDate: Wed Mar 26 13:28:45 2025 +0530 Revert "OAK-11605 : removed usage of Guava's ImmutableSet.copyOf with LinkedS…" (#2198) This reverts commit dea40543d3a6563d9d6ad882c7644db91965581a. --- .../authorization/cug/impl/CugAccessControlManager.java | 2 +- .../security/authorization/cug/impl/CugExcludeImpl.java | 3 +-- oak-doc/src/site/markdown/security/user/default.md | 2 +- .../index/lucene/directory/CopyOnReadDirectory.java | 3 +-- .../oak/plugins/index/lucene/directory/OakDirectory.java | 3 +-- .../lucene/property/UniquenessConstraintValidator.java | 4 +--- .../oak/spi/security/ConfigurationParameters.java | 7 +++---- .../oak/spi/security/authentication/AuthInfoImpl.java | 3 +-- .../credentials/SimpleCredentialsSupport.java | 4 ++-- .../oak/spi/security/authorization/accesscontrol/ACE.java | 3 +-- .../restriction/AbstractRestrictionProvider.java | 3 +-- .../oak/spi/security/privilege/PrivilegeBitsProvider.java | 5 ++--- .../jackrabbit/oak/composite/CompositeNodeStore.java | 3 +-- .../composite/checks/NodeTypeMountedNodeStoreChecker.java | 6 ++---- .../jackrabbit/oak/upgrade/RepositorySidegrade.java | 11 +++++------ .../apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java | 15 +++++++-------- 16 files changed, 31 insertions(+), 46 deletions(-) diff --git a/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugAccessControlManager.java b/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugAccessControlManager.java index 499d41031e..5d40860b78 100644 --- a/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugAccessControlManager.java +++ b/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugAccessControlManager.java @@ -374,7 +374,7 @@ class CugAccessControlManager extends AbstractAccessControlManager implements Cu Tree cug = CugUtil.getCug(t); PropertyState pNames = (cug == null) ? null : cug.getProperty(REP_PRINCIPAL_NAMES); if (pNames != null) { - if (!Collections.disjoint(Collections.unmodifiableSet(SetUtils.toLinkedSet(principalNames)), Collections.unmodifiableSet(SetUtils.toLinkedSet(pNames.getValue(Type.STRINGS))))) { + if (!Collections.disjoint(ImmutableSet.copyOf(principalNames), ImmutableSet.copyOf(pNames.getValue(Type.STRINGS)))) { candidates.add(path); } nestedCugPaths(cug).forEach(eval::add); diff --git a/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugExcludeImpl.java b/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugExcludeImpl.java index 8947d622d3..d92d3bb4f9 100644 --- a/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugExcludeImpl.java +++ b/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugExcludeImpl.java @@ -22,7 +22,6 @@ import java.util.Map; import java.util.Set; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.oak.commons.PropertiesUtil; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authorization.cug.CugExclude; import org.jetbrains.annotations.NotNull; import org.osgi.service.component.annotations.Activate; @@ -81,6 +80,6 @@ public class CugExcludeImpl extends CugExclude.Default { } private void setPrincipalNames(@NotNull Map<String, Object> properties) { - this.principalNames = Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("principalNames"), new String[0]))); + this.principalNames = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("principalNames"), new String[0])); } } diff --git a/oak-doc/src/site/markdown/security/user/default.md b/oak-doc/src/site/markdown/security/user/default.md index 2ddcaddbaa..3bb9817370 100644 --- a/oak-doc/src/site/markdown/security/user/default.md +++ b/oak-doc/src/site/markdown/security/user/default.md @@ -326,7 +326,7 @@ implementation. //------------------------------------------------< SCR Integration >--- @Activate private void activate(Map<String, Object> properties) { - ids = Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("ids"), new String[0]))); + ids = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("ids"), new String[0])); } } diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java index 2e0c69327b..ce29ff52c9 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java @@ -35,7 +35,6 @@ import java.util.stream.Collectors; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.oak.commons.PerfLogger; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FilterDirectory; @@ -333,7 +332,7 @@ public class CopyOnReadDirectory extends FilterDirectory { Set<String> filesToBeDeleted = // Files present locally - SetUtils.toLinkedSet(local.listAll()).stream() + ImmutableSet.copyOf(local.listAll()).stream() // but not in my view .filter(name -> !remoteFiles.contains(name)) // and also older than a safe timestamp (deleteBeforeTS) diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/OakDirectory.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/OakDirectory.java index ad353e0916..f2fc6a88d6 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/OakDirectory.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/OakDirectory.java @@ -20,7 +20,6 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.security.SecureRandom; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Set; @@ -342,7 +341,7 @@ public class OakDirectory extends Directory { if (fileNames == null){ fileNames = directoryBuilder.getChildNodeNames(); } - Set<String> result = Collections.unmodifiableSet(SetUtils.toLinkedSet(fileNames)); + Set<String> result = ImmutableSet.copyOf(fileNames); PERF_LOGGER.end(start, 100, "Directory listing performed. Total {} files", result.size()); return result; } diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java index f7e13e93d9..2df17786a5 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java @@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.plugins.index.lucene.property; -import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -32,7 +31,6 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; import org.apache.jackrabbit.oak.spi.state.NodeStateUtils; @@ -70,7 +68,7 @@ public class UniquenessConstraintValidator { String propertyRelativePath = e.getKey(); String value = e.getValue(); Iterable<String> indexedPaths = getIndexedPaths(propertyRelativePath, value); - Set<String> allPaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(indexedPaths)); + Set<String> allPaths = ImmutableSet.copyOf(indexedPaths); //If more than one match found then filter out stale paths if (allPaths.size() > 1) { diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java index 89827a9069..63406d872e 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java @@ -29,7 +29,6 @@ import java.util.regex.Pattern; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.oak.commons.PropertiesUtil; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -307,13 +306,13 @@ public final class ConfigurationParameters implements Map<String, Object> { if (configProperty instanceof Set) { return (Set) configProperty; } else if (configProperty instanceof Collection<?>) { - return Collections.unmodifiableSet(SetUtils.toLinkedSet((Collection<?>) configProperty)); + return ImmutableSet.copyOf((Collection<?>) configProperty); } else if (configProperty.getClass().isArray()) { - return Collections.unmodifiableSet(SetUtils.toLinkedSet((Object[]) configProperty)); + return ImmutableSet.copyOf((Object[]) configProperty); } else { String[] arr = PropertiesUtil.toStringArray(configProperty); if (arr != null) { - return Collections.unmodifiableSet(SetUtils.toLinkedSet(arr)); + return ImmutableSet.copyOf(arr); } else { String str = configProperty.toString(); log.warn("Unsupported target type {} for value {}", clazz.getName(), str); diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthInfoImpl.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthInfoImpl.java index ecbaea7dc3..19ad19ecc9 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthInfoImpl.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthInfoImpl.java @@ -27,7 +27,6 @@ import javax.security.auth.Subject; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.oak.api.AuthInfo; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -49,7 +48,7 @@ public final class AuthInfoImpl implements AuthInfo { @Nullable Iterable<? extends Principal> principals) { this.userID = userID; this.attributes = (attributes == null) ? Collections.emptyMap() : attributes; - this.principals = (principals == null) ? Collections.emptySet() : Collections.unmodifiableSet(SetUtils.toLinkedSet(principals)); + this.principals = (principals == null) ? Collections.emptySet() : ImmutableSet.copyOf(principals); } public static AuthInfo createFromSubject(@NotNull Subject subject) { diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupport.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupport.java index d3bc5b76f1..1b12c44982 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupport.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupport.java @@ -26,7 +26,6 @@ import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.guava.common.collect.Maps; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -66,7 +65,8 @@ public final class SimpleCredentialsSupport implements CredentialsSupport { public Map<String, ?> getAttributes(@NotNull Credentials credentials) { if (credentials instanceof SimpleCredentials) { final SimpleCredentials sc = (SimpleCredentials) credentials; - return Maps.asMap(Collections.unmodifiableSet(SetUtils.toLinkedSet(sc.getAttributeNames())), sc::getAttribute); + return Maps.asMap(ImmutableSet.copyOf(sc.getAttributeNames()), + input -> sc.getAttribute(input)); } else { return Collections.emptyMap(); } diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACE.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACE.java index a630b918ab..c590a7b0f2 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACE.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACE.java @@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry; import org.apache.jackrabbit.api.security.authorization.PrivilegeCollection; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.plugins.value.jcr.PartialValueFactory; import org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction; @@ -77,7 +76,7 @@ public abstract class ACE implements JackrabbitAccessControlEntry { this.principal = principal; this.privilegeBits = privilegeBits; this.isAllow = isAllow; - this.restrictions = (restrictions == null) ? Collections.emptySet() : Collections.unmodifiableSet(SetUtils.toLinkedSet(restrictions)); + this.restrictions = (restrictions == null) ? Collections.emptySet() : ImmutableSet.copyOf(restrictions); this.namePathMapper = namePathMapper; this.valueFactory = new PartialValueFactory(namePathMapper); } diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProvider.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProvider.java index 18194f3999..b811eb00bf 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProvider.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProvider.java @@ -35,7 +35,6 @@ import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants; import org.apache.jackrabbit.oak.plugins.tree.TreeUtil; @@ -71,7 +70,7 @@ public abstract class AbstractRestrictionProvider implements RestrictionProvider if (isUnsupportedPath(oakPath)) { return Collections.emptySet(); } else { - return Collections.unmodifiableSet(SetUtils.toLinkedSet(supported.values())); + return ImmutableSet.copyOf(supported.values()); } } diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeBitsProvider.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeBitsProvider.java index 635c0904f2..a0cfc44cbb 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeBitsProvider.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeBitsProvider.java @@ -34,7 +34,6 @@ import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.namepath.NameMapper; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -203,7 +202,7 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants { privilegeNames = bitsToNames.get(pb); } else { privilegeNames = collectPrivilegeNames(privilegesTree, pb); - bitsToNames.put(pb, Collections.unmodifiableSet(SetUtils.toLinkedSet(privilegeNames))); + bitsToNames.put(pb, ImmutableSet.copyOf(privilegeNames)); } return privilegeNames; } @@ -252,7 +251,7 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants { return extractAggregatedPrivileges(Collections.singleton(privName)); } } else { - Set<String> pNames = Collections.unmodifiableSet(SetUtils.toLinkedSet(privilegeNames)); + Set<String> pNames = ImmutableSet.copyOf(privilegeNames); if (NON_AGGREGATE_PRIVILEGES.containsAll(pNames)) { return pNames; } else { diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java index f0ab65e57a..557d3a51a3 100644 --- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java +++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java @@ -22,7 +22,6 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.composite.checks.NodeStoreChecks; import org.apache.jackrabbit.oak.spi.commit.ChangeDispatcher; @@ -294,7 +293,7 @@ public class CompositeNodeStore implements NodeStore, PrefetchNodeStore, Observa } private String getPartialCheckpointName(MountedNodeStore nodeStore, String globalCheckpoint, Map<String, String> globalCheckpointProperties, boolean resolveByName) { - Set<String> validCheckpointNames = Collections.unmodifiableSet(SetUtils.toLinkedSet(nodeStore.getNodeStore().checkpoints())); + Set<String> validCheckpointNames = ImmutableSet.copyOf(nodeStore.getNodeStore().checkpoints()); String result = globalCheckpointProperties.get(CHECKPOINT_METADATA_MOUNT + nodeStore.getMount().getName()); if (result != null && validCheckpointNames.contains(result)) { return result; diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java index 43f29d016b..0ee31a4a48 100644 --- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java +++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java @@ -18,10 +18,8 @@ package org.apache.jackrabbit.oak.composite.checks; import static java.util.Objects.requireNonNull; -import java.util.Collections; import java.util.Set; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.ComponentPropertyType; import org.osgi.service.component.annotations.ConfigurationPolicy; @@ -83,13 +81,13 @@ public class NodeTypeMountedNodeStoreChecker implements public NodeTypeMountedNodeStoreChecker(String invalidNodeType, String errorLabel, String... excludedNodeTypes) { this.invalidNodeType = invalidNodeType; this.errorLabel = errorLabel; - this.excludedNodeTypes = Collections.unmodifiableSet(SetUtils.toLinkedSet(excludedNodeTypes)); + this.excludedNodeTypes = ImmutableSet.copyOf(excludedNodeTypes); } protected void activate(ComponentContext ctx) { invalidNodeType = requireNonNull(PropertiesUtil.toString(ctx.getProperties().get(INVALID_NODE_TYPE), null), INVALID_NODE_TYPE); errorLabel = requireNonNull(PropertiesUtil.toString(ctx.getProperties().get(ERROR_LABEL), null), ERROR_LABEL); - excludedNodeTypes = Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(ctx.getProperties().get(EXCLUDED_NODE_TYPES), new String[0]))); + excludedNodeTypes = ImmutableSet.copyOf(PropertiesUtil.toStringArray(ctx.getProperties().get(EXCLUDED_NODE_TYPES), new String[0])); } @Override diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java index 1b3b2b349f..6689186f04 100755 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java @@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.upgrade; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -35,7 +34,6 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.ListUtils; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.plugins.document.DocumentNodeState; import org.apache.jackrabbit.oak.plugins.migration.FilteringNodeState; import org.apache.jackrabbit.oak.plugins.migration.NodeStateCopier; @@ -71,6 +69,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static java.util.Objects.requireNonNull; +import static org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf; import static org.apache.jackrabbit.guava.common.collect.Sets.union; import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE; import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM; @@ -218,7 +217,7 @@ public class RepositorySidegrade { * @param includes Paths to be included in the copy. */ public void setIncludes(@NotNull String... includes) { - this.includePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(includes))); + this.includePaths = copyOf(requireNonNull(includes)); } /** @@ -228,7 +227,7 @@ public class RepositorySidegrade { * @param excludes Paths to be excluded from the copy. */ public void setExcludes(@NotNull String... excludes) { - this.excludePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(excludes))); + this.excludePaths = copyOf(requireNonNull(excludes)); } /** @@ -238,7 +237,7 @@ public class RepositorySidegrade { * @param merges Paths to be merged during copy. */ public void setMerges(@NotNull String... merges) { - this.mergePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(merges))); + this.mergePaths = copyOf(requireNonNull(merges)); } public void setFilterLongNames(boolean filterLongNames) { @@ -473,7 +472,7 @@ public class RepositorySidegrade { } excludes.add("/:async"); - final Set<String> merges = union(Collections.unmodifiableSet(SetUtils.toLinkedSet(this.mergePaths)), Set.of("/jcr:system")); + final Set<String> merges = union(copyOf(this.mergePaths), Set.of("/jcr:system")); NodeStateCopier.builder() .include(includes) .exclude(excludes.build()) diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java index 827bc7eabc..e67fc9239c 100644 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java @@ -17,6 +17,7 @@ package org.apache.jackrabbit.oak.upgrade; import static java.util.Objects.requireNonNull; +import static org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf; import static org.apache.jackrabbit.guava.common.collect.Sets.union; import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM; import static org.apache.jackrabbit.oak.plugins.migration.FilteringNodeState.ALL; @@ -34,7 +35,6 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -77,7 +77,6 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.commons.PathUtils; -import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.commons.conditions.Validate; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.plugins.document.util.Utils; @@ -322,7 +321,7 @@ public class RepositoryUpgrade { * @param includes Paths to be included in the copy. */ public void setIncludes(@NotNull String... includes) { - this.includePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(includes))); + this.includePaths = copyOf(requireNonNull(includes)); } /** @@ -332,7 +331,7 @@ public class RepositoryUpgrade { * @param excludes Paths to be excluded from the copy. */ public void setExcludes(@NotNull String... excludes) { - this.excludePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(excludes))); + this.excludePaths = copyOf(requireNonNull(excludes)); } /** @@ -342,7 +341,7 @@ public class RepositoryUpgrade { * @param merges Paths to be merged during copy. */ public void setMerges(@NotNull String... merges) { - this.mergePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(merges))); + this.mergePaths = copyOf(requireNonNull(merges)); } /** @@ -940,8 +939,8 @@ public class RepositoryUpgrade { private String copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot, String workspaceName) throws RepositoryException { final Set<String> includes = calculateEffectiveIncludePaths(includePaths, sourceRoot); - final Set<String> excludes = union(Collections.unmodifiableSet(SetUtils.toLinkedSet(this.excludePaths)), Set.of("/jcr:system/jcr:versionStorage")); - final Set<String> merges = union(Collections.unmodifiableSet(SetUtils.toLinkedSet(this.mergePaths)), Set.of("/jcr:system")); + final Set<String> excludes = union(copyOf(this.excludePaths), Set.of("/jcr:system/jcr:versionStorage")); + final Set<String> merges = union(copyOf(this.mergePaths), Set.of("/jcr:system")); logger.info("Copying workspace {} [i: {}, e: {}, m: {}]", workspaceName, includes, excludes, merges); @@ -960,7 +959,7 @@ public class RepositoryUpgrade { static Set<String> calculateEffectiveIncludePaths(Set<String> includePaths, NodeState sourceRoot) { if (!includePaths.contains("/")) { - return Collections.unmodifiableSet(SetUtils.toLinkedSet(includePaths)); + return copyOf(includePaths); } // include child nodes from source individually to avoid deleting other initialized content