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 dea40543d3 OAK-11605 : removed usage of Guava's ImmutableSet.copyOf
with LinkedSet (#2184)
dea40543d3 is described below
commit dea40543d3a6563d9d6ad882c7644db91965581a
Author: Rishabh Kumar <[email protected]>
AuthorDate: Mon Mar 24 13:30:26 2025 +0530
OAK-11605 : removed usage of Guava's ImmutableSet.copyOf with LinkedSet
(#2184)
Co-authored-by: Rishabh Kumar <[email protected]>
---
.../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