This is an automated email from the ASF dual-hosted git repository. daim pushed a commit to branch OAK-11602 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 02b640f2a97fe1c0908284e4d34e832ed34a2ad6 Author: Rishabh Kumar <[email protected]> AuthorDate: Thu Mar 13 15:50:14 2025 +0530 OAK-11602 : removed usage of Guava's ImmutableSet.copyOf with LinkedSet --- .../impl/principal/AutoMembershipPrincipals.java | 3 ++- .../ExternalAuthorizableActionProvider.java | 3 ++- .../principal/ExternalGroupPrincipalProvider.java | 3 ++- .../impl/principal/ProtectionConfigImpl.java | 5 +++-- .../cug/impl/CugAccessControlManager.java | 2 +- .../authorization/cug/impl/CugExcludeImpl.java | 3 ++- .../authorization/AbstractHasItemGetItemTest.java | 3 ++- .../oak/commons/collections/SetUtils.java | 2 +- .../apache/jackrabbit/oak/spi/mount/MountInfo.java | 2 +- .../jackrabbit/oak/spi/observation/ChangeSet.java | 11 ++++++----- .../oak/plugins/migration/NodeStateCopier.java | 22 +++++++++++----------- .../token/TokenConfigurationImpl.java | 3 ++- .../authorization/restriction/CurrentPattern.java | 3 ++- .../authorization/restriction/ItemNamePattern.java | 3 ++- .../authorization/restriction/NodeTypePattern.java | 3 ++- .../authorization/restriction/PrefixPattern.java | 3 ++- .../security/user/RepMembersConflictHandler.java | 7 ++++--- oak-doc/src/site/markdown/security/user/default.md | 2 +- .../authorization/models/simplifiedroles/Role.java | 3 ++- .../ThreeRolesPermissionProvider.java | 5 +++-- .../principal/CustomPrincipalProvider.java | 3 ++- .../lucene/directory/CopyOnReadDirectory.java | 3 ++- .../index/lucene/directory/OakDirectory.java | 2 +- .../property/UniquenessConstraintValidator.java | 3 ++- .../document/flatfile/PathElementComparator.java | 3 ++- .../oak/spi/security/ConfigurationParameters.java | 7 ++++--- .../spi/security/authentication/AuthInfoImpl.java | 3 ++- .../credentials/SimpleCredentialsSupport.java | 3 ++- .../security/authorization/accesscontrol/ACE.java | 3 ++- .../restriction/AbstractRestrictionProvider.java | 3 ++- .../security/privilege/PrivilegeBitsProvider.java | 5 +++-- .../oak/composite/CompositeNodeStore.java | 3 ++- .../checks/NodeTypeMountedNodeStoreChecker.java | 5 +++-- .../oak/upgrade/RepositorySidegrade.java | 10 +++++----- .../jackrabbit/oak/upgrade/RepositoryUpgrade.java | 14 +++++++------- 35 files changed, 94 insertions(+), 67 deletions(-) diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java index 4e82e98a87..2283a880c7 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java @@ -21,6 +21,7 @@ import org.apache.jackrabbit.api.security.user.Group; import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.guava.common.collect.Iterators; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authentication.external.basic.AutoMembershipConfig; import org.apache.jackrabbit.oak.spi.security.principal.GroupPrincipals; import org.jetbrains.annotations.NotNull; @@ -220,7 +221,7 @@ final class AutoMembershipPrincipals { } } // only cache the principal instance but not the group (tree might become disconnected) - principalMap.put(idpName, ImmutableSet.copyOf(map.keySet())); + principalMap.put(idpName, SetUtils.toLinkedSet(map.keySet())); } else { // resolve Group objects from cached principals principalMap.get(idpName).forEach(groupPrincipal -> { diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalAuthorizableActionProvider.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalAuthorizableActionProvider.java index b20a86ac1c..1e617d3451 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalAuthorizableActionProvider.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalAuthorizableActionProvider.java @@ -21,6 +21,7 @@ import org.apache.jackrabbit.api.security.user.Authorizable; import org.apache.jackrabbit.api.security.user.Group; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.commons.PropertiesUtil; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.spi.security.SecurityProvider; import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalIdentityRef; @@ -199,7 +200,7 @@ public final class ExternalAuthorizableActionProvider implements AuthorizableAct private static void updateAutoMembershipMap(@NotNull Map<String, Set<String>> map, @NotNull String syncHandlerName, @NotNull String idpName, @NotNull String[] membership) { - Set<String> userMembership = ImmutableSet.copyOf(membership); + Set<String> userMembership = SetUtils.toLinkedSet(membership); Set<String> previous = map.put(idpName, userMembership); if (previous != null) { String msg = previous.equals(userMembership) ? "Duplicate" : "Colliding"; diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java index c60e44cf12..62816ffe90 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java @@ -57,6 +57,7 @@ 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.NamePathMapper; import org.apache.jackrabbit.oak.plugins.memory.PropertyValues; import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalIdentityRef; @@ -327,7 +328,7 @@ class ExternalGroupPrincipalProvider implements PrincipalProvider, ExternalIdent return Collections.emptyIterator(); } - Set<Value> valueSet = ImmutableSet.copyOf(vs); + Set<Value> valueSet = SetUtils.toLinkedSet(vs); Iterator<Group> declared = Iterators.filter(Iterators.transform(valueSet.iterator(), value -> { try { String groupPrincipalName = value.getString(); diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ProtectionConfigImpl.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ProtectionConfigImpl.java index afc52c42d4..23a4b1831d 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ProtectionConfigImpl.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ProtectionConfigImpl.java @@ -20,6 +20,7 @@ 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.commons.PropertiesUtil; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authentication.external.ProtectionConfig; import org.jetbrains.annotations.NotNull; import org.osgi.service.component.annotations.Activate; @@ -58,8 +59,8 @@ public class ProtectionConfigImpl implements ProtectionConfig { @Activate protected void activate(Map<String, Object> properties) { - propertyNames = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("propertyNames"), new String[0])); - nodeNames = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("nodeNames"), new String[0])); + propertyNames = SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("propertyNames"), new String[0])); + nodeNames = SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("nodeNames"), new String[0])); } @Override 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 5d40860b78..2e3409975a 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(ImmutableSet.copyOf(principalNames), ImmutableSet.copyOf(pNames.getValue(Type.STRINGS)))) { + if (!Collections.disjoint(SetUtils.toLinkedSet(principalNames), SetUtils.toLinkedSet(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 d92d3bb4f9..dde375cdff 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,6 +22,7 @@ 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; @@ -80,6 +81,6 @@ public class CugExcludeImpl extends CugExclude.Default { } private void setPrincipalNames(@NotNull Map<String, Object> properties) { - this.principalNames = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("principalNames"), new String[0])); + this.principalNames = SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("principalNames"), new String[0])); } } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/AbstractHasItemGetItemTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/AbstractHasItemGetItemTest.java index 2e5a219e7b..459d587274 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/AbstractHasItemGetItemTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/AbstractHasItemGetItemTest.java @@ -25,6 +25,7 @@ import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils; import org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest; import org.apache.jackrabbit.oak.commons.PathUtils; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants; import org.jetbrains.annotations.NotNull; @@ -86,7 +87,7 @@ abstract class AbstractHasItemGetItemTest extends ReadDeepTreeTest { createForEachPrincipal(principal, acMgr, allPrivileges); adminSession.save(); - nodeSet = ImmutableSet.copyOf(nodePaths); + nodeSet = SetUtils.toLinkedSet(nodePaths); } private void createForEachPrincipal(@NotNull Principal pGrantedRead, @NotNull JackrabbitAccessControlManager acMgr, @NotNull List<Privilege> allPrivileges) throws RepositoryException { diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/SetUtils.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/SetUtils.java index cc736bf2b1..e5bde32959 100644 --- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/SetUtils.java +++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/SetUtils.java @@ -114,7 +114,7 @@ public class SetUtils { * @param <T> the type of the elements */ @NotNull - public static <T> Set<T> toLinkedSet(@NotNull final Iterable<T> iterable) { + public static <T> Set<T> toLinkedSet(@NotNull final Iterable<? extends T> iterable) { Objects.requireNonNull(iterable); final Set<T> result = new LinkedHashSet<>(); iterable.forEach(result::add); diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfo.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfo.java index 3fb339b477..ffc020ce66 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfo.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfo.java @@ -65,7 +65,7 @@ public final class MountInfo implements Mount { this.readOnly = readOnly; this.pathFragmentName = "oak:mount-" + name; this.includedPaths = cleanCopy(includedPaths); - this.pathsSupportingFragments = ImmutableSet.copyOf(pathsSupportingFragments); + this.pathsSupportingFragments = SetUtils.toLinkedSet(pathsSupportingFragments); } @Override diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/observation/ChangeSet.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/observation/ChangeSet.java index 3193836945..09578e6feb 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/observation/ChangeSet.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/observation/ChangeSet.java @@ -24,6 +24,7 @@ import java.util.Set; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.oak.commons.PathUtils; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.commons.json.JsopBuilder; import org.apache.jackrabbit.oak.commons.json.JsopReader; import org.apache.jackrabbit.oak.commons.json.JsopTokenizer; @@ -74,11 +75,11 @@ public final class ChangeSet { ChangeSet(int maxPathDepth, Set<String> parentPaths, Set<String> parentNodeNames, Set<String> parentNodeTypes, Set<String> propertyNames, Set<String> allNodeTypes) { this.maxPathDepth = maxPathDepth; - this.parentPaths = parentPaths == null ? null : ImmutableSet.copyOf(parentPaths); - this.parentNodeNames = parentNodeNames == null ? null : ImmutableSet.copyOf(parentNodeNames); - this.parentNodeTypes = parentNodeTypes == null ? null : ImmutableSet.copyOf(parentNodeTypes); - this.propertyNames = propertyNames == null ? null : ImmutableSet.copyOf(propertyNames); - this.allNodeTypes = allNodeTypes == null ? null : ImmutableSet.copyOf(allNodeTypes); + this.parentPaths = parentPaths == null ? null : SetUtils.toLinkedSet(parentPaths); + this.parentNodeNames = parentNodeNames == null ? null : SetUtils.toLinkedSet(parentNodeNames); + this.parentNodeTypes = parentNodeTypes == null ? null : SetUtils.toLinkedSet(parentNodeTypes); + this.propertyNames = propertyNames == null ? null : SetUtils.toLinkedSet(propertyNames); + this.allNodeTypes = allNodeTypes == null ? null : SetUtils.toLinkedSet(allNodeTypes); boolean hitsMaxPathDepth = false; if (parentPaths != null) { diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/NodeStateCopier.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/NodeStateCopier.java index bb12e55889..01e8c9223d 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/NodeStateCopier.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/NodeStateCopier.java @@ -21,6 +21,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; 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.SetUtils; import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState; import org.apache.jackrabbit.oak.spi.commit.CommitHook; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; @@ -41,7 +42,6 @@ import java.util.stream.Collectors; import java.util.stream.StreamSupport; import static java.util.Objects.requireNonNull; -import static org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf; import static java.util.Collections.emptySet; /** @@ -402,7 +402,7 @@ public class NodeStateCopier { @NotNull public Builder include(@NotNull Set<String> paths) { if (!requireNonNull(paths).isEmpty()) { - this.includePaths = copyOf(paths); + this.includePaths = SetUtils.toLinkedSet(paths); } return this; } @@ -416,7 +416,7 @@ public class NodeStateCopier { */ @NotNull public Builder include(@NotNull String... paths) { - return include(copyOf(requireNonNull(paths))); + return include(SetUtils.toLinkedSet(requireNonNull(paths))); } /** @@ -442,7 +442,7 @@ public class NodeStateCopier { @NotNull public Builder exclude(@NotNull Set<String> paths) { if (!requireNonNull(paths).isEmpty()) { - this.excludePaths = copyOf(paths); + this.excludePaths = SetUtils.toLinkedSet(paths); } return this; } @@ -456,7 +456,7 @@ public class NodeStateCopier { */ @NotNull public Builder exclude(@NotNull String... paths) { - return exclude(copyOf(requireNonNull(paths))); + return exclude(SetUtils.toLinkedSet(requireNonNull(paths))); } /** @@ -469,7 +469,7 @@ public class NodeStateCopier { @NotNull public Builder supportFragment(@NotNull Set<String> paths) { if (!requireNonNull(paths).isEmpty()) { - this.fragmentPaths = copyOf(paths); + this.fragmentPaths = SetUtils.toLinkedSet(paths); } return this; } @@ -483,7 +483,7 @@ public class NodeStateCopier { */ @NotNull public Builder supportFragment(@NotNull String... paths) { - return supportFragment(copyOf(requireNonNull(paths))); + return supportFragment(SetUtils.toLinkedSet(requireNonNull(paths))); } /** @@ -496,7 +496,7 @@ public class NodeStateCopier { @NotNull public Builder excludeFragments(@NotNull Set<String> fragments) { if (!requireNonNull(fragments).isEmpty()) { - this.excludeFragments = copyOf(fragments); + this.excludeFragments = SetUtils.toLinkedSet(fragments); } return this; } @@ -510,7 +510,7 @@ public class NodeStateCopier { */ @NotNull public Builder excludeFragments(@NotNull String... fragments) { - return exclude(copyOf(requireNonNull(fragments))); + return exclude(SetUtils.toLinkedSet(requireNonNull(fragments))); } /** @@ -523,7 +523,7 @@ public class NodeStateCopier { @NotNull public Builder merge(@NotNull Set<String> paths) { if (!requireNonNull(paths).isEmpty()) { - this.mergePaths = copyOf(paths); + this.mergePaths = SetUtils.toLinkedSet(paths); } return this; } @@ -537,7 +537,7 @@ public class NodeStateCopier { */ @NotNull public Builder merge(@NotNull String... paths) { - return merge(copyOf(requireNonNull(paths))); + return merge(SetUtils.toLinkedSet(requireNonNull(paths))); } @NotNull diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java index 77ffd3eeb1..b5554bd6cd 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java @@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.security.authentication.token; import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.commit.MoveTracker; import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider; import org.apache.jackrabbit.oak.spi.security.ConfigurationBase; @@ -176,7 +177,7 @@ public class TokenConfigurationImpl extends ConfigurationBase implements TokenCo } else if (size == 1) { return credentialsSupport.values().iterator().next(); } else { - return CompositeCredentialsSupport.newInstance(() -> ImmutableSet.copyOf(credentialsSupport.values())); + return CompositeCredentialsSupport.newInstance(() -> SetUtils.toLinkedSet(credentialsSupport.values())); } } } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/CurrentPattern.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/CurrentPattern.java index 75726625a7..76ce4025f1 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/CurrentPattern.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/CurrentPattern.java @@ -21,6 +21,7 @@ import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.oak.api.PropertyState; 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.plugins.index.IndexConstants; import org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants; import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants; @@ -99,7 +100,7 @@ class CurrentPattern implements RestrictionPattern { CurrentPattern(@NotNull String treePath, @NotNull Iterable<String> propertyNames) { this.treePath = treePath; - this.propertyNames = ImmutableSet.copyOf(propertyNames); + this.propertyNames = SetUtils.toLinkedSet(propertyNames); } @Override diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/ItemNamePattern.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/ItemNamePattern.java index 723227c9b2..9eabebc6b6 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/ItemNamePattern.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/ItemNamePattern.java @@ -21,6 +21,7 @@ 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.commons.PathUtils; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,7 +38,7 @@ class ItemNamePattern implements RestrictionPattern { private final Set<String> names; ItemNamePattern(Iterable<String> names) { - this.names = ImmutableSet.copyOf(names); + this.names = SetUtils.toLinkedSet(names); } @Override diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/NodeTypePattern.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/NodeTypePattern.java index 8e7062f7a2..6cfc97115c 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/NodeTypePattern.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/NodeTypePattern.java @@ -20,6 +20,7 @@ import java.util.Set; 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.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern; import org.apache.jackrabbit.oak.plugins.tree.TreeUtil; import org.jetbrains.annotations.NotNull; @@ -41,7 +42,7 @@ class NodeTypePattern implements RestrictionPattern { private final Set<String> nodeTypeNames; NodeTypePattern(@NotNull Iterable<String> nodeTypeNames) { - this.nodeTypeNames = ImmutableSet.copyOf(nodeTypeNames); + this.nodeTypeNames = SetUtils.toLinkedSet(nodeTypeNames); } @Override diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java index be031e9015..89f50ae029 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java @@ -21,6 +21,7 @@ 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.commons.PathUtils; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern; import org.apache.jackrabbit.util.Text; import org.jetbrains.annotations.NotNull; @@ -45,7 +46,7 @@ class PrefixPattern implements RestrictionPattern { private final Set<String> prefixes; PrefixPattern(@NotNull Iterable<String> prefixes) { - this.prefixes = ImmutableSet.copyOf(prefixes); + this.prefixes = SetUtils.toLinkedSet(prefixes); } @Override diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java index cf0e5fecaf..cbabce1e90 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java @@ -24,6 +24,7 @@ import java.util.Set; import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.plugins.memory.PropertyBuilder; import org.apache.jackrabbit.oak.spi.commit.ThreeWayConflictHandler; import org.apache.jackrabbit.oak.spi.security.user.UserConstants; @@ -81,7 +82,7 @@ class RepMembersConflictHandler implements ThreeWayConflictHandler { public Resolution changeChangedProperty(@NotNull NodeBuilder parent, @NotNull PropertyState ours, @NotNull PropertyState theirs, @NotNull PropertyState base) { if (isRepMembersProperty(theirs)) { - Set<String> baseMembers = ImmutableSet.copyOf(base.getValue(Type.STRINGS)); + Set<String> baseMembers = SetUtils.toLinkedSet(base.getValue(Type.STRINGS)); mergeChange(parent, ours, theirs, baseMembers); return Resolution.MERGED; } else { @@ -157,8 +158,8 @@ class RepMembersConflictHandler implements ThreeWayConflictHandler { PropertyBuilder<String> merged = PropertyBuilder.array(Type.WEAKREFERENCE); merged.setName(UserConstants.REP_MEMBERS); - Set<String> theirMembers = ImmutableSet.copyOf(theirs.getValue(Type.STRINGS)); - Set<String> ourMembers = ImmutableSet.copyOf(ours.getValue(Type.STRINGS)); + Set<String> theirMembers = SetUtils.toLinkedSet(theirs.getValue(Type.STRINGS)); + Set<String> ourMembers = SetUtils.toLinkedSet(ours.getValue(Type.STRINGS)); // merge ours and theirs to a de-duplicated set Set<String> combined = new LinkedHashSet<>(Sets.intersection(ourMembers, theirMembers)); diff --git a/oak-doc/src/site/markdown/security/user/default.md b/oak-doc/src/site/markdown/security/user/default.md index 3bb9817370..fe38c00ac4 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 = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("ids"), new String[0])); + ids = SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("ids"), new String[0])); } } diff --git a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java index 8418d2b535..4b0279cb65 100644 --- a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java +++ b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java @@ -18,6 +18,7 @@ package org.apache.jackrabbit.oak.exercise.security.authorization.models.simplif import java.util.Set; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions; import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants; import org.jetbrains.annotations.NotNull; @@ -37,7 +38,7 @@ final class Role { private Role(long permissions, String... privilegeNames) { this.permissions = permissions; - this.privilegeNames = ImmutableSet.copyOf(privilegeNames); + this.privilegeNames = SetUtils.toLinkedSet(privilegeNames); } private Role(@NotNull Role base, long permissions, String... privilegeNames) { diff --git a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/ThreeRolesPermissionProvider.java b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/ThreeRolesPermissionProvider.java index 175e74a8e4..786a3f8d77 100644 --- a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/ThreeRolesPermissionProvider.java +++ b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/ThreeRolesPermissionProvider.java @@ -21,6 +21,7 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.plugins.tree.ReadOnly; import org.apache.jackrabbit.oak.plugins.tree.RootProvider; import org.apache.jackrabbit.oak.plugins.tree.TreeLocation; @@ -61,7 +62,7 @@ class ThreeRolesPermissionProvider implements AggregatedPermissionProvider, Thre @NotNull String supportedPath, @NotNull Context ctx, @NotNull RootProvider rootProvider) { this.root = root; - this.principalNames = ImmutableSet.copyOf(IterableUtils.transform(principals, Principal::getName)); + this.principalNames = SetUtils.toLinkedSet(IterableUtils.transform(principals, Principal::getName)); this.supportedPath = supportedPath; this.ctx = ctx; this.rootProvider = rootProvider; @@ -166,7 +167,7 @@ class ThreeRolesPermissionProvider implements AggregatedPermissionProvider, Thre @Override public boolean hasPrivileges(@Nullable Tree tree, @NotNull String... privilegeNames) { - return getPrivileges(tree).containsAll(ImmutableSet.copyOf(privilegeNames)); + return getPrivileges(tree).containsAll(SetUtils.toLinkedSet(privilegeNames)); } @NotNull diff --git a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/principal/CustomPrincipalProvider.java b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/principal/CustomPrincipalProvider.java index 87c024906e..1ed4497311 100644 --- a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/principal/CustomPrincipalProvider.java +++ b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/principal/CustomPrincipalProvider.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.Set; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -36,7 +37,7 @@ class CustomPrincipalProvider implements PrincipalProvider { private final Set<String> knownPrincipalNames; CustomPrincipalProvider(String[] knownPrincipalNames) { - this.knownPrincipalNames = ImmutableSet.copyOf(knownPrincipalNames); + this.knownPrincipalNames = SetUtils.toLinkedSet(knownPrincipalNames); } @Nullable 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 ce29ff52c9..2e0c69327b 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,6 +35,7 @@ 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; @@ -332,7 +333,7 @@ public class CopyOnReadDirectory extends FilterDirectory { Set<String> filesToBeDeleted = // Files present locally - ImmutableSet.copyOf(local.listAll()).stream() + SetUtils.toLinkedSet(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 f2fc6a88d6..b88089a6e3 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 @@ -341,7 +341,7 @@ public class OakDirectory extends Directory { if (fileNames == null){ fileNames = directoryBuilder.getChildNodeNames(); } - Set<String> result = ImmutableSet.copyOf(fileNames); + Set<String> result = SetUtils.toLinkedSet(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 2df17786a5..b34de4694a 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 @@ -31,6 +31,7 @@ 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; @@ -68,7 +69,7 @@ public class UniquenessConstraintValidator { String propertyRelativePath = e.getKey(); String value = e.getValue(); Iterable<String> indexedPaths = getIndexedPaths(propertyRelativePath, value); - Set<String> allPaths = ImmutableSet.copyOf(indexedPaths); + Set<String> allPaths = SetUtils.toLinkedSet(indexedPaths); //If more than one match found then filter out stale paths if (allPaths.size() > 1) { diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/PathElementComparator.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/PathElementComparator.java index 3b2d5ff998..729202534a 100644 --- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/PathElementComparator.java +++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/PathElementComparator.java @@ -25,6 +25,7 @@ import java.util.Iterator; import java.util.Set; import org.apache.jackrabbit.guava.common.collect.ImmutableSet; +import org.apache.jackrabbit.oak.commons.collections.SetUtils; public class PathElementComparator implements Comparator<Iterable<String>> { private final Set<String> preferred; @@ -34,7 +35,7 @@ public class PathElementComparator implements Comparator<Iterable<String>> { } public PathElementComparator(Iterable<String> preferredPathElements) { - this.preferred = ImmutableSet.copyOf(preferredPathElements); + this.preferred = SetUtils.toLinkedSet(preferredPathElements); } @Override 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 63406d872e..f26476598c 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,6 +29,7 @@ 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; @@ -306,13 +307,13 @@ public final class ConfigurationParameters implements Map<String, Object> { if (configProperty instanceof Set) { return (Set) configProperty; } else if (configProperty instanceof Collection<?>) { - return ImmutableSet.copyOf((Collection<?>) configProperty); + return SetUtils.toLinkedSet((Collection<?>) configProperty); } else if (configProperty.getClass().isArray()) { - return ImmutableSet.copyOf((Object[]) configProperty); + return SetUtils.toLinkedSet((Object[]) configProperty); } else { String[] arr = PropertiesUtil.toStringArray(configProperty); if (arr != null) { - return ImmutableSet.copyOf(arr); + return SetUtils.toLinkedSet(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 19ad19ecc9..9e8629318d 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,6 +27,7 @@ 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; @@ -48,7 +49,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() : ImmutableSet.copyOf(principals); + this.principals = (principals == null) ? Collections.emptySet() : SetUtils.toLinkedSet(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 1b12c44982..c6efafc00c 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,6 +26,7 @@ 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; @@ -65,7 +66,7 @@ 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(ImmutableSet.copyOf(sc.getAttributeNames()), + return Maps.asMap(SetUtils.toLinkedSet(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 c590a7b0f2..623f46899d 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,6 +19,7 @@ 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; @@ -76,7 +77,7 @@ public abstract class ACE implements JackrabbitAccessControlEntry { this.principal = principal; this.privilegeBits = privilegeBits; this.isAllow = isAllow; - this.restrictions = (restrictions == null) ? Collections.emptySet() : ImmutableSet.copyOf(restrictions); + this.restrictions = (restrictions == null) ? Collections.emptySet() : SetUtils.toLinkedSet(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 b811eb00bf..40aa49720c 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,6 +35,7 @@ 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; @@ -70,7 +71,7 @@ public abstract class AbstractRestrictionProvider implements RestrictionProvider if (isUnsupportedPath(oakPath)) { return Collections.emptySet(); } else { - return ImmutableSet.copyOf(supported.values()); + return SetUtils.toLinkedSet(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 a0cfc44cbb..26f10517ca 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,6 +34,7 @@ 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; @@ -202,7 +203,7 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants { privilegeNames = bitsToNames.get(pb); } else { privilegeNames = collectPrivilegeNames(privilegesTree, pb); - bitsToNames.put(pb, ImmutableSet.copyOf(privilegeNames)); + bitsToNames.put(pb, SetUtils.toLinkedSet(privilegeNames)); } return privilegeNames; } @@ -251,7 +252,7 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants { return extractAggregatedPrivileges(Collections.singleton(privName)); } } else { - Set<String> pNames = ImmutableSet.copyOf(privilegeNames); + Set<String> pNames = SetUtils.toLinkedSet(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 557d3a51a3..cb331af0f1 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,6 +22,7 @@ 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; @@ -293,7 +294,7 @@ public class CompositeNodeStore implements NodeStore, PrefetchNodeStore, Observa } private String getPartialCheckpointName(MountedNodeStore nodeStore, String globalCheckpoint, Map<String, String> globalCheckpointProperties, boolean resolveByName) { - Set<String> validCheckpointNames = ImmutableSet.copyOf(nodeStore.getNodeStore().checkpoints()); + Set<String> validCheckpointNames = SetUtils.toLinkedSet(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 0ee31a4a48..b740c4ebfc 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 @@ -20,6 +20,7 @@ import static java.util.Objects.requireNonNull; 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; @@ -81,13 +82,13 @@ public class NodeTypeMountedNodeStoreChecker implements public NodeTypeMountedNodeStoreChecker(String invalidNodeType, String errorLabel, String... excludedNodeTypes) { this.invalidNodeType = invalidNodeType; this.errorLabel = errorLabel; - this.excludedNodeTypes = ImmutableSet.copyOf(excludedNodeTypes); + this.excludedNodeTypes = SetUtils.toLinkedSet(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 = ImmutableSet.copyOf(PropertiesUtil.toStringArray(ctx.getProperties().get(EXCLUDED_NODE_TYPES), new String[0])); + excludedNodeTypes = SetUtils.toLinkedSet(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 6689186f04..ab7da6abc0 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 @@ -34,6 +34,7 @@ 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; @@ -69,7 +70,6 @@ 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; @@ -217,7 +217,7 @@ public class RepositorySidegrade { * @param includes Paths to be included in the copy. */ public void setIncludes(@NotNull String... includes) { - this.includePaths = copyOf(requireNonNull(includes)); + this.includePaths = SetUtils.toLinkedSet(requireNonNull(includes)); } /** @@ -227,7 +227,7 @@ public class RepositorySidegrade { * @param excludes Paths to be excluded from the copy. */ public void setExcludes(@NotNull String... excludes) { - this.excludePaths = copyOf(requireNonNull(excludes)); + this.excludePaths = SetUtils.toLinkedSet(requireNonNull(excludes)); } /** @@ -237,7 +237,7 @@ public class RepositorySidegrade { * @param merges Paths to be merged during copy. */ public void setMerges(@NotNull String... merges) { - this.mergePaths = copyOf(requireNonNull(merges)); + this.mergePaths = SetUtils.toLinkedSet(requireNonNull(merges)); } public void setFilterLongNames(boolean filterLongNames) { @@ -472,7 +472,7 @@ public class RepositorySidegrade { } excludes.add("/:async"); - final Set<String> merges = union(copyOf(this.mergePaths), Set.of("/jcr:system")); + final Set<String> merges = union(SetUtils.toLinkedSet(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 e67fc9239c..a7bd7e7973 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,7 +17,6 @@ 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; @@ -77,6 +76,7 @@ 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; @@ -321,7 +321,7 @@ public class RepositoryUpgrade { * @param includes Paths to be included in the copy. */ public void setIncludes(@NotNull String... includes) { - this.includePaths = copyOf(requireNonNull(includes)); + this.includePaths = SetUtils.toLinkedSet(requireNonNull(includes)); } /** @@ -331,7 +331,7 @@ public class RepositoryUpgrade { * @param excludes Paths to be excluded from the copy. */ public void setExcludes(@NotNull String... excludes) { - this.excludePaths = copyOf(requireNonNull(excludes)); + this.excludePaths = SetUtils.toLinkedSet(requireNonNull(excludes)); } /** @@ -341,7 +341,7 @@ public class RepositoryUpgrade { * @param merges Paths to be merged during copy. */ public void setMerges(@NotNull String... merges) { - this.mergePaths = copyOf(requireNonNull(merges)); + this.mergePaths = SetUtils.toLinkedSet(requireNonNull(merges)); } /** @@ -939,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(copyOf(this.excludePaths), Set.of("/jcr:system/jcr:versionStorage")); - final Set<String> merges = union(copyOf(this.mergePaths), Set.of("/jcr:system")); + final Set<String> excludes = union(SetUtils.toLinkedSet(this.excludePaths), Set.of("/jcr:system/jcr:versionStorage")); + final Set<String> merges = union(SetUtils.toLinkedSet(this.mergePaths), Set.of("/jcr:system")); logger.info("Copying workspace {} [i: {}, e: {}, m: {}]", workspaceName, includes, excludes, merges); @@ -959,7 +959,7 @@ public class RepositoryUpgrade { static Set<String> calculateEffectiveIncludePaths(Set<String> includePaths, NodeState sourceRoot) { if (!includePaths.contains("/")) { - return copyOf(includePaths); + return SetUtils.toLinkedSet(includePaths); } // include child nodes from source individually to avoid deleting other initialized content
