This is an automated email from the ASF dual-hosted git repository.

daim pushed a commit to branch OAK-11605
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 4fe6d6a25cb787349897f4e33d61632086cfc960
Author: Rishabh Kumar <[email protected]>
AuthorDate: Mon Mar 17 14:30:53 2025 +0530

    OAK-11605 : removed usage of Guava's ImmutableSet.copyOf with LinkedSet
---
 .../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, 46 insertions(+), 31 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 5d40860b78..499d41031e 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(Collections.unmodifiableSet(SetUtils.toLinkedSet(principalNames)),
 
Collections.unmodifiableSet(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..8947d622d3 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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(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 3bb9817370..2ddcaddbaa 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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(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 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..ad353e0916 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,6 +20,7 @@ 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;
 
@@ -341,7 +342,7 @@ public class OakDirectory extends Directory {
         if (fileNames == null){
             fileNames = directoryBuilder.getChildNodeNames();
         }
-        Set<String> result = ImmutableSet.copyOf(fileNames);
+        Set<String> result = 
Collections.unmodifiableSet(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..f7e13e93d9 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,6 +19,7 @@
 
 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;
@@ -31,6 +32,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 +70,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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(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 63406d872e..89827a9069 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 
Collections.unmodifiableSet(SetUtils.toLinkedSet((Collection<?>) 
configProperty));
         } else if (configProperty.getClass().isArray()) {
-            return ImmutableSet.copyOf((Object[]) configProperty);
+            return Collections.unmodifiableSet(SetUtils.toLinkedSet((Object[]) 
configProperty));
         } else {
             String[] arr = PropertiesUtil.toStringArray(configProperty);
             if (arr != null) {
-                return ImmutableSet.copyOf(arr);
+                return Collections.unmodifiableSet(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..ecbaea7dc3 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() : 
Collections.unmodifiableSet(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..d3bc5b76f1 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,8 +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()),
-                    input -> sc.getAttribute(input));
+            return 
Maps.asMap(Collections.unmodifiableSet(SetUtils.toLinkedSet(sc.getAttributeNames())),
 sc::getAttribute);
         } 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..a630b918ab 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() : 
Collections.unmodifiableSet(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..18194f3999 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 
Collections.unmodifiableSet(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..635c0904f2 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, 
Collections.unmodifiableSet(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 = 
Collections.unmodifiableSet(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..f0ab65e57a 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 = 
Collections.unmodifiableSet(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..43f29d016b 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,8 +18,10 @@ 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;
@@ -81,13 +83,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 = 
Collections.unmodifiableSet(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 = 
Collections.unmodifiableSet(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..1b3b2b349f 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,6 +19,7 @@ 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;
@@ -34,6 +35,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 +71,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 +218,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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(includes)));
     }
 
     /**
@@ -227,7 +228,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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(excludes)));
     }
 
     /**
@@ -237,7 +238,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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(merges)));
     }
 
     public void setFilterLongNames(boolean filterLongNames) {
@@ -472,7 +473,7 @@ public class RepositorySidegrade {
         }
         excludes.add("/:async");
 
-        final Set<String> merges = union(copyOf(this.mergePaths), 
Set.of("/jcr:system"));
+        final Set<String> merges = 
union(Collections.unmodifiableSet(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..827bc7eabc 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;
@@ -35,6 +34,7 @@ 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,6 +77,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 +322,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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(includes)));
     }
 
     /**
@@ -331,7 +332,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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(excludes)));
     }
 
     /**
@@ -341,7 +342,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 = 
Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(merges)));
     }
 
     /**
@@ -939,8 +940,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(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"));
 
         logger.info("Copying workspace {} [i: {}, e: {}, m: {}]", 
workspaceName, includes, excludes, merges);
 
@@ -959,7 +960,7 @@ public class RepositoryUpgrade {
 
     static Set<String> calculateEffectiveIncludePaths(Set<String> 
includePaths, NodeState sourceRoot) {
         if (!includePaths.contains("/")) {
-            return copyOf(includePaths);
+            return 
Collections.unmodifiableSet(SetUtils.toLinkedSet(includePaths));
         }
 
         // include child nodes from source individually to avoid deleting 
other initialized content

Reply via email to