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

Reply via email to