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 7aada40fcd OAK-11602 : removed usage of Guava's ImmutableSet.copyOf
with LinkedSet (#2178)
7aada40fcd is described below
commit 7aada40fcdd70107fbfe929afa2c04eebbdd58a8
Author: Rishabh Kumar <[email protected]>
AuthorDate: Sun Mar 16 20:58:43 2025 +0530
OAK-11602 : removed usage of Guava's ImmutableSet.copyOf with LinkedSet
(#2178)
* OAK-11602 : removed usage of Guava's ImmutableSet.copyOf with LinkedSet
* OAK-11602 : wrapped Set in Collections.unmodifiableSet wherever we are
sending/receiving it to outer world
* OAK-11602 : revert changes from 7 modules
---------
Co-authored-by: Rishabh Kumar <[email protected]>
---
.../impl/principal/AutoMembershipPrincipals.java | 4 +++-
.../ExternalAuthorizableActionProvider.java | 3 ++-
.../principal/ExternalGroupPrincipalProvider.java | 3 ++-
.../impl/principal/ProtectionConfigImpl.java | 5 +++--
.../authorization/AbstractHasItemGetItemTest.java | 3 ++-
.../oak/commons/collections/SetUtils.java | 2 +-
.../apache/jackrabbit/oak/spi/mount/MountInfo.java | 2 +-
.../jackrabbit/oak/spi/observation/ChangeSet.java | 12 +++++++-----
.../oak/plugins/migration/NodeStateCopier.java | 22 +++++++++++-----------
.../token/TokenConfigurationImpl.java | 4 +++-
.../authorization/restriction/CurrentPattern.java | 4 +++-
.../authorization/restriction/ItemNamePattern.java | 4 +++-
.../authorization/restriction/NodeTypePattern.java | 4 +++-
.../authorization/restriction/PrefixPattern.java | 4 +++-
.../security/user/RepMembersConflictHandler.java | 8 +++++---
.../authorization/models/simplifiedroles/Role.java | 4 +++-
.../ThreeRolesPermissionProvider.java | 6 ++++--
.../principal/CustomPrincipalProvider.java | 3 ++-
.../document/flatfile/PathElementComparator.java | 3 ++-
19 files changed, 63 insertions(+), 37 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..7b3a8da36a 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;
@@ -32,6 +33,7 @@ import javax.jcr.RepositoryException;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -220,7 +222,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,
Collections.unmodifiableSet(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..bfec5b7453 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 =
Collections.unmodifiableSet(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..cebfafe1ae 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 =
Collections.unmodifiableSet(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..751f620a91 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 =
Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("propertyNames"),
new String[0])));
+ nodeNames =
Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("nodeNames"),
new String[0])));
}
@Override
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..33aa119512 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 =
Collections.unmodifiableSet(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..67689483f4 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
@@ -18,12 +18,14 @@
*/
package org.apache.jackrabbit.oak.spi.observation;
+import java.util.Collections;
import java.util.HashSet;
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 +76,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 :
Collections.unmodifiableSet(SetUtils.toLinkedSet(parentPaths));
+ this.parentNodeNames = parentNodeNames == null ? null :
Collections.unmodifiableSet(SetUtils.toLinkedSet(parentNodeNames));
+ this.parentNodeTypes = parentNodeTypes == null ? null :
Collections.unmodifiableSet(SetUtils.toLinkedSet(parentNodeTypes));
+ this.propertyNames = propertyNames == null ? null :
Collections.unmodifiableSet(SetUtils.toLinkedSet(propertyNames));
+ this.allNodeTypes = allNodeTypes == null ? null :
Collections.unmodifiableSet(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..a75f8fb3eb 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 =
Collections.unmodifiableSet(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(Collections.unmodifiableSet(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 =
Collections.unmodifiableSet(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(Collections.unmodifiableSet(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 =
Collections.unmodifiableSet(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(Collections.unmodifiableSet(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 =
Collections.unmodifiableSet(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(Collections.unmodifiableSet(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 =
Collections.unmodifiableSet(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(Collections.unmodifiableSet(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..9a266a59dc 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;
@@ -44,6 +45,7 @@ import org.osgi.service.metatype.annotations.Designate;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import java.security.Principal;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -176,7 +178,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(() ->
Collections.unmodifiableSet(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..26fd216dfc 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;
@@ -34,6 +35,7 @@ import org.jetbrains.annotations.Nullable;
import javax.jcr.NamespaceRegistry;
+import java.util.Collections;
import java.util.Objects;
import java.util.Set;
@@ -99,7 +101,7 @@ class CurrentPattern implements RestrictionPattern {
CurrentPattern(@NotNull String treePath, @NotNull Iterable<String>
propertyNames) {
this.treePath = treePath;
- this.propertyNames = ImmutableSet.copyOf(propertyNames);
+ this.propertyNames =
Collections.unmodifiableSet(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..e188b390d3 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
@@ -16,11 +16,13 @@
*/
package org.apache.jackrabbit.oak.security.authorization.restriction;
+import java.util.Collections;
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.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 +39,7 @@ class ItemNamePattern implements RestrictionPattern {
private final Set<String> names;
ItemNamePattern(Iterable<String> names) {
- this.names = ImmutableSet.copyOf(names);
+ this.names = Collections.unmodifiableSet(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..f60ec466dc 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
@@ -16,10 +16,12 @@
*/
package org.apache.jackrabbit.oak.security.authorization.restriction;
+import java.util.Collections;
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 +43,7 @@ class NodeTypePattern implements RestrictionPattern {
private final Set<String> nodeTypeNames;
NodeTypePattern(@NotNull Iterable<String> nodeTypeNames) {
- this.nodeTypeNames = ImmutableSet.copyOf(nodeTypeNames);
+ this.nodeTypeNames =
Collections.unmodifiableSet(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..7eb3d01ae1 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
@@ -16,11 +16,13 @@
*/
package org.apache.jackrabbit.oak.security.authorization.restriction;
+import java.util.Collections;
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.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 +47,7 @@ class PrefixPattern implements RestrictionPattern {
private final Set<String> prefixes;
PrefixPattern(@NotNull Iterable<String> prefixes) {
- this.prefixes = ImmutableSet.copyOf(prefixes);
+ this.prefixes =
Collections.unmodifiableSet(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..28ab7fbf6d 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
@@ -18,12 +18,14 @@
*/
package org.apache.jackrabbit.oak.security.user;
+import java.util.Collections;
import java.util.LinkedHashSet;
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 +83,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 =
Collections.unmodifiableSet(SetUtils.toLinkedSet(base.getValue(Type.STRINGS)));
mergeChange(parent, ours, theirs, baseMembers);
return Resolution.MERGED;
} else {
@@ -157,8 +159,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 =
Collections.unmodifiableSet(SetUtils.toLinkedSet(theirs.getValue(Type.STRINGS)));
+ Set<String> ourMembers =
Collections.unmodifiableSet(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-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..159f07a1f0 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
@@ -16,8 +16,10 @@
*/
package
org.apache.jackrabbit.oak.exercise.security.authorization.models.simplifiedroles;
+import java.util.Collections;
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 +39,7 @@ final class Role {
private Role(long permissions, String... privilegeNames) {
this.permissions = permissions;
- this.privilegeNames = ImmutableSet.copyOf(privilegeNames);
+ this.privilegeNames =
Collections.unmodifiableSet(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..1f7d4e7dee 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;
@@ -38,6 +39,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.security.Principal;
+import java.util.Collections;
import java.util.Set;
class ThreeRolesPermissionProvider implements AggregatedPermissionProvider,
ThreeRolesConstants {
@@ -61,7 +63,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 =
Collections.unmodifiableSet(SetUtils.toLinkedSet(IterableUtils.transform(principals,
Principal::getName)));
this.supportedPath = supportedPath;
this.ctx = ctx;
this.rootProvider = rootProvider;
@@ -166,7 +168,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(Collections.unmodifiableSet(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..14b6feb417 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 =
Collections.unmodifiableSet(SetUtils.toLinkedSet(knownPrincipalNames));
}
@Nullable
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..c7b9c2bebf 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 =
Collections.unmodifiableSet(SetUtils.toLinkedSet(preferredPathElements));
}
@Override