Skip to content

Commit dea4054

Browse files
rishabhdaimRishabh Kumar
and
Rishabh Kumar
authored
OAK-11605 : removed usage of Guava's ImmutableSet.copyOf with LinkedSet (#2184)
Co-authored-by: Rishabh Kumar <[email protected]>
1 parent 0178047 commit dea4054

File tree

16 files changed

+46
-31
lines changed

16 files changed

+46
-31
lines changed

oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugAccessControlManager.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ private Set<String> collectEffectiveCandidates(@NotNull Root r, @NotNull Iterabl
374374
Tree cug = CugUtil.getCug(t);
375375
PropertyState pNames = (cug == null) ? null : cug.getProperty(REP_PRINCIPAL_NAMES);
376376
if (pNames != null) {
377-
if (!Collections.disjoint(ImmutableSet.copyOf(principalNames), ImmutableSet.copyOf(pNames.getValue(Type.STRINGS)))) {
377+
if (!Collections.disjoint(Collections.unmodifiableSet(SetUtils.toLinkedSet(principalNames)), Collections.unmodifiableSet(SetUtils.toLinkedSet(pNames.getValue(Type.STRINGS))))) {
378378
candidates.add(path);
379379
}
380380
nestedCugPaths(cug).forEach(eval::add);

oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugExcludeImpl.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.Set;
2323
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
2424
import org.apache.jackrabbit.oak.commons.PropertiesUtil;
25+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2526
import org.apache.jackrabbit.oak.spi.security.authorization.cug.CugExclude;
2627
import org.jetbrains.annotations.NotNull;
2728
import org.osgi.service.component.annotations.Activate;
@@ -80,6 +81,6 @@ protected void modified(Map<String, Object> properties) {
8081
}
8182

8283
private void setPrincipalNames(@NotNull Map<String, Object> properties) {
83-
this.principalNames = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("principalNames"), new String[0]));
84+
this.principalNames = Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("principalNames"), new String[0])));
8485
}
8586
}

oak-doc/src/site/markdown/security/user/default.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ implementation.
326326
//------------------------------------------------< SCR Integration >---
327327
@Activate
328328
private void activate(Map<String, Object> properties) {
329-
ids = ImmutableSet.copyOf(PropertiesUtil.toStringArray(properties.get("ids"), new String[0]));
329+
ids = Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(properties.get("ids"), new String[0])));
330330
}
331331
}
332332

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
3737
import org.apache.jackrabbit.oak.commons.PerfLogger;
38+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3839
import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
3940
import org.apache.lucene.store.Directory;
4041
import org.apache.lucene.store.FilterDirectory;
@@ -332,7 +333,7 @@ private void removeDeletedFiles() throws IOException {
332333

333334
Set<String> filesToBeDeleted =
334335
// Files present locally
335-
ImmutableSet.copyOf(local.listAll()).stream()
336+
SetUtils.toLinkedSet(local.listAll()).stream()
336337
// but not in my view
337338
.filter(name -> !remoteFiles.contains(name))
338339
// and also older than a safe timestamp (deleteBeforeTS)

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/OakDirectory.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.io.IOException;
2121
import java.security.SecureRandom;
2222
import java.util.Collection;
23+
import java.util.Collections;
2324
import java.util.List;
2425
import java.util.Set;
2526

@@ -341,7 +342,7 @@ private Set<String> getListing(){
341342
if (fileNames == null){
342343
fileNames = directoryBuilder.getChildNodeNames();
343344
}
344-
Set<String> result = ImmutableSet.copyOf(fileNames);
345+
Set<String> result = Collections.unmodifiableSet(SetUtils.toLinkedSet(fileNames));
345346
PERF_LOGGER.end(start, 100, "Directory listing performed. Total {} files", result.size());
346347
return result;
347348
}

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.apache.jackrabbit.oak.plugins.index.lucene.property;
2121

22+
import java.util.Collections;
2223
import java.util.HashSet;
2324
import java.util.Map;
2425
import java.util.Set;
@@ -31,6 +32,7 @@
3132
import org.apache.jackrabbit.oak.api.Type;
3233
import org.apache.jackrabbit.oak.commons.PathUtils;
3334
import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
35+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3436
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
3537
import org.apache.jackrabbit.oak.spi.state.NodeState;
3638
import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
@@ -68,7 +70,7 @@ public void validate() throws CommitFailedException {
6870
String propertyRelativePath = e.getKey();
6971
String value = e.getValue();
7072
Iterable<String> indexedPaths = getIndexedPaths(propertyRelativePath, value);
71-
Set<String> allPaths = ImmutableSet.copyOf(indexedPaths);
73+
Set<String> allPaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(indexedPaths));
7274

7375
//If more than one match found then filter out stale paths
7476
if (allPaths.size() > 1) {

oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
3131
import org.apache.jackrabbit.oak.commons.PropertiesUtil;
32+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3233
import org.jetbrains.annotations.NotNull;
3334
import org.jetbrains.annotations.Nullable;
3435
import org.slf4j.Logger;
@@ -306,13 +307,13 @@ private static Set<?> convertToSet(@NotNull Object configProperty, @NotNull Clas
306307
if (configProperty instanceof Set) {
307308
return (Set) configProperty;
308309
} else if (configProperty instanceof Collection<?>) {
309-
return ImmutableSet.copyOf((Collection<?>) configProperty);
310+
return Collections.unmodifiableSet(SetUtils.toLinkedSet((Collection<?>) configProperty));
310311
} else if (configProperty.getClass().isArray()) {
311-
return ImmutableSet.copyOf((Object[]) configProperty);
312+
return Collections.unmodifiableSet(SetUtils.toLinkedSet((Object[]) configProperty));
312313
} else {
313314
String[] arr = PropertiesUtil.toStringArray(configProperty);
314315
if (arr != null) {
315-
return ImmutableSet.copyOf(arr);
316+
return Collections.unmodifiableSet(SetUtils.toLinkedSet(arr));
316317
} else {
317318
String str = configProperty.toString();
318319
log.warn("Unsupported target type {} for value {}", clazz.getName(), str);

oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthInfoImpl.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
2929
import org.apache.jackrabbit.oak.api.AuthInfo;
30+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3031
import org.jetbrains.annotations.NotNull;
3132
import org.jetbrains.annotations.Nullable;
3233

@@ -48,7 +49,7 @@ public AuthInfoImpl(@Nullable String userID, @Nullable Map<String, ?> attributes
4849
@Nullable Iterable<? extends Principal> principals) {
4950
this.userID = userID;
5051
this.attributes = (attributes == null) ? Collections.emptyMap() : attributes;
51-
this.principals = (principals == null) ? Collections.emptySet() : ImmutableSet.copyOf(principals);
52+
this.principals = (principals == null) ? Collections.emptySet() : Collections.unmodifiableSet(SetUtils.toLinkedSet(principals));
5253
}
5354

5455
public static AuthInfo createFromSubject(@NotNull Subject subject) {

oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupport.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
2727
import org.apache.jackrabbit.guava.common.collect.Maps;
2828

29+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2930
import org.jetbrains.annotations.NotNull;
3031
import org.jetbrains.annotations.Nullable;
3132

@@ -65,8 +66,7 @@ public String getUserId(@NotNull Credentials credentials) {
6566
public Map<String, ?> getAttributes(@NotNull Credentials credentials) {
6667
if (credentials instanceof SimpleCredentials) {
6768
final SimpleCredentials sc = (SimpleCredentials) credentials;
68-
return Maps.asMap(ImmutableSet.copyOf(sc.getAttributeNames()),
69-
input -> sc.getAttribute(input));
69+
return Maps.asMap(Collections.unmodifiableSet(SetUtils.toLinkedSet(sc.getAttributeNames())), sc::getAttribute);
7070
} else {
7171
return Collections.emptyMap();
7272
}

oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACE.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
2020
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
2121
import org.apache.jackrabbit.api.security.authorization.PrivilegeCollection;
22+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2223
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
2324
import org.apache.jackrabbit.oak.plugins.value.jcr.PartialValueFactory;
2425
import org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
@@ -76,7 +77,7 @@ public ACE(@Nullable Principal principal, @Nullable PrivilegeBits privilegeBits,
7677
this.principal = principal;
7778
this.privilegeBits = privilegeBits;
7879
this.isAllow = isAllow;
79-
this.restrictions = (restrictions == null) ? Collections.emptySet() : ImmutableSet.copyOf(restrictions);
80+
this.restrictions = (restrictions == null) ? Collections.emptySet() : Collections.unmodifiableSet(SetUtils.toLinkedSet(restrictions));
8081
this.namePathMapper = namePathMapper;
8182
this.valueFactory = new PartialValueFactory(namePathMapper);
8283
}

oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.apache.jackrabbit.oak.api.PropertyState;
3636
import org.apache.jackrabbit.oak.api.Tree;
3737
import org.apache.jackrabbit.oak.api.Type;
38+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3839
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
3940
import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
4041
import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
@@ -70,7 +71,7 @@ public Set<RestrictionDefinition> getSupportedRestrictions(@Nullable String oakP
7071
if (isUnsupportedPath(oakPath)) {
7172
return Collections.emptySet();
7273
} else {
73-
return ImmutableSet.copyOf(supported.values());
74+
return Collections.unmodifiableSet(SetUtils.toLinkedSet(supported.values()));
7475
}
7576
}
7677

oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeBitsProvider.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.apache.jackrabbit.oak.api.Tree;
3535
import org.apache.jackrabbit.oak.api.Type;
3636
import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
37+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3738
import org.apache.jackrabbit.oak.namepath.NameMapper;
3839
import org.jetbrains.annotations.NotNull;
3940
import org.jetbrains.annotations.Nullable;
@@ -202,7 +203,7 @@ public Set<String> getPrivilegeNames(@Nullable PrivilegeBits privilegeBits) {
202203
privilegeNames = bitsToNames.get(pb);
203204
} else {
204205
privilegeNames = collectPrivilegeNames(privilegesTree, pb);
205-
bitsToNames.put(pb, ImmutableSet.copyOf(privilegeNames));
206+
bitsToNames.put(pb, Collections.unmodifiableSet(SetUtils.toLinkedSet(privilegeNames)));
206207
}
207208
return privilegeNames;
208209
}
@@ -251,7 +252,7 @@ public Iterable<String> getAggregatedPrivilegeNames(@NotNull String... privilege
251252
return extractAggregatedPrivileges(Collections.singleton(privName));
252253
}
253254
} else {
254-
Set<String> pNames = ImmutableSet.copyOf(privilegeNames);
255+
Set<String> pNames = Collections.unmodifiableSet(SetUtils.toLinkedSet(privilegeNames));
255256
if (NON_AGGREGATE_PRIVILEGES.containsAll(pNames)) {
256257
return pNames;
257258
} else {

oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.jackrabbit.oak.api.PropertyState;
2323
import org.apache.jackrabbit.oak.commons.PathUtils;
2424
import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
25+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2526
import org.apache.jackrabbit.oak.commons.collections.StreamUtils;
2627
import org.apache.jackrabbit.oak.composite.checks.NodeStoreChecks;
2728
import org.apache.jackrabbit.oak.spi.commit.ChangeDispatcher;
@@ -293,7 +294,7 @@ public boolean release(String checkpoint) {
293294
}
294295

295296
private String getPartialCheckpointName(MountedNodeStore nodeStore, String globalCheckpoint, Map<String, String> globalCheckpointProperties, boolean resolveByName) {
296-
Set<String> validCheckpointNames = ImmutableSet.copyOf(nodeStore.getNodeStore().checkpoints());
297+
Set<String> validCheckpointNames = Collections.unmodifiableSet(SetUtils.toLinkedSet(nodeStore.getNodeStore().checkpoints()));
297298
String result = globalCheckpointProperties.get(CHECKPOINT_METADATA_MOUNT + nodeStore.getMount().getName());
298299
if (result != null && validCheckpointNames.contains(result)) {
299300
return result;

oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818

1919
import static java.util.Objects.requireNonNull;
2020

21+
import java.util.Collections;
2122
import java.util.Set;
2223

24+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2325
import org.osgi.service.component.annotations.Component;
2426
import org.osgi.service.component.annotations.ComponentPropertyType;
2527
import org.osgi.service.component.annotations.ConfigurationPolicy;
@@ -81,13 +83,13 @@ public NodeTypeMountedNodeStoreChecker() {
8183
public NodeTypeMountedNodeStoreChecker(String invalidNodeType, String errorLabel, String... excludedNodeTypes) {
8284
this.invalidNodeType = invalidNodeType;
8385
this.errorLabel = errorLabel;
84-
this.excludedNodeTypes = ImmutableSet.copyOf(excludedNodeTypes);
86+
this.excludedNodeTypes = Collections.unmodifiableSet(SetUtils.toLinkedSet(excludedNodeTypes));
8587
}
8688

8789
protected void activate(ComponentContext ctx) {
8890
invalidNodeType = requireNonNull(PropertiesUtil.toString(ctx.getProperties().get(INVALID_NODE_TYPE), null), INVALID_NODE_TYPE);
8991
errorLabel = requireNonNull(PropertiesUtil.toString(ctx.getProperties().get(ERROR_LABEL), null), ERROR_LABEL);
90-
excludedNodeTypes = ImmutableSet.copyOf(PropertiesUtil.toStringArray(ctx.getProperties().get(EXCLUDED_NODE_TYPES), new String[0]));
92+
excludedNodeTypes = Collections.unmodifiableSet(SetUtils.toLinkedSet(PropertiesUtil.toStringArray(ctx.getProperties().get(EXCLUDED_NODE_TYPES), new String[0])));
9193
}
9294

9395
@Override

oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.IOException;
2020
import java.util.ArrayList;
2121
import java.util.Calendar;
22+
import java.util.Collections;
2223
import java.util.LinkedHashMap;
2324
import java.util.List;
2425
import java.util.Map;
@@ -34,6 +35,7 @@
3435
import org.apache.jackrabbit.oak.api.Type;
3536
import org.apache.jackrabbit.oak.commons.PathUtils;
3637
import org.apache.jackrabbit.oak.commons.collections.ListUtils;
38+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3739
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeState;
3840
import org.apache.jackrabbit.oak.plugins.migration.FilteringNodeState;
3941
import org.apache.jackrabbit.oak.plugins.migration.NodeStateCopier;
@@ -69,7 +71,6 @@
6971
import org.slf4j.LoggerFactory;
7072

7173
import static java.util.Objects.requireNonNull;
72-
import static org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf;
7374
import static org.apache.jackrabbit.guava.common.collect.Sets.union;
7475
import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
7576
import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
@@ -217,7 +218,7 @@ public void setCustomCommitHooks(List<CommitHook> customCommitHooks) {
217218
* @param includes Paths to be included in the copy.
218219
*/
219220
public void setIncludes(@NotNull String... includes) {
220-
this.includePaths = copyOf(requireNonNull(includes));
221+
this.includePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(includes)));
221222
}
222223

223224
/**
@@ -227,7 +228,7 @@ public void setIncludes(@NotNull String... includes) {
227228
* @param excludes Paths to be excluded from the copy.
228229
*/
229230
public void setExcludes(@NotNull String... excludes) {
230-
this.excludePaths = copyOf(requireNonNull(excludes));
231+
this.excludePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(excludes)));
231232
}
232233

233234
/**
@@ -237,7 +238,7 @@ public void setExcludes(@NotNull String... excludes) {
237238
* @param merges Paths to be merged during copy.
238239
*/
239240
public void setMerges(@NotNull String... merges) {
240-
this.mergePaths = copyOf(requireNonNull(merges));
241+
this.mergePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(merges)));
241242
}
242243

243244
public void setFilterLongNames(boolean filterLongNames) {
@@ -472,7 +473,7 @@ private void copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot) {
472473
}
473474
excludes.add("/:async");
474475

475-
final Set<String> merges = union(copyOf(this.mergePaths), Set.of("/jcr:system"));
476+
final Set<String> merges = union(Collections.unmodifiableSet(SetUtils.toLinkedSet(this.mergePaths)), Set.of("/jcr:system"));
476477
NodeStateCopier.builder()
477478
.include(includes)
478479
.exclude(excludes.build())

oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.apache.jackrabbit.oak.upgrade;
1818

1919
import static java.util.Objects.requireNonNull;
20-
import static org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf;
2120
import static org.apache.jackrabbit.guava.common.collect.Sets.union;
2221
import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
2322
import static org.apache.jackrabbit.oak.plugins.migration.FilteringNodeState.ALL;
@@ -35,6 +34,7 @@
3534
import java.util.ArrayList;
3635
import java.util.Calendar;
3736
import java.util.Collection;
37+
import java.util.Collections;
3838
import java.util.HashMap;
3939
import java.util.HashSet;
4040
import java.util.Iterator;
@@ -77,6 +77,7 @@
7777
import org.apache.jackrabbit.oak.api.Root;
7878
import org.apache.jackrabbit.oak.api.Tree;
7979
import org.apache.jackrabbit.oak.commons.PathUtils;
80+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
8081
import org.apache.jackrabbit.oak.commons.conditions.Validate;
8182
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
8283
import org.apache.jackrabbit.oak.plugins.document.util.Utils;
@@ -321,7 +322,7 @@ public void setCustomCommitHooks(List<CommitHook> customCommitHooks) {
321322
* @param includes Paths to be included in the copy.
322323
*/
323324
public void setIncludes(@NotNull String... includes) {
324-
this.includePaths = copyOf(requireNonNull(includes));
325+
this.includePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(includes)));
325326
}
326327

327328
/**
@@ -331,7 +332,7 @@ public void setIncludes(@NotNull String... includes) {
331332
* @param excludes Paths to be excluded from the copy.
332333
*/
333334
public void setExcludes(@NotNull String... excludes) {
334-
this.excludePaths = copyOf(requireNonNull(excludes));
335+
this.excludePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(excludes)));
335336
}
336337

337338
/**
@@ -341,7 +342,7 @@ public void setExcludes(@NotNull String... excludes) {
341342
* @param merges Paths to be merged during copy.
342343
*/
343344
public void setMerges(@NotNull String... merges) {
344-
this.mergePaths = copyOf(requireNonNull(merges));
345+
this.mergePaths = Collections.unmodifiableSet(SetUtils.toLinkedSet(requireNonNull(merges)));
345346
}
346347

347348
/**
@@ -939,8 +940,8 @@ private PropertyDefinitionTemplate createPropertyDefinitionTemplate(ValueFactory
939940
private String copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot, String workspaceName)
940941
throws RepositoryException {
941942
final Set<String> includes = calculateEffectiveIncludePaths(includePaths, sourceRoot);
942-
final Set<String> excludes = union(copyOf(this.excludePaths), Set.of("/jcr:system/jcr:versionStorage"));
943-
final Set<String> merges = union(copyOf(this.mergePaths), Set.of("/jcr:system"));
943+
final Set<String> excludes = union(Collections.unmodifiableSet(SetUtils.toLinkedSet(this.excludePaths)), Set.of("/jcr:system/jcr:versionStorage"));
944+
final Set<String> merges = union(Collections.unmodifiableSet(SetUtils.toLinkedSet(this.mergePaths)), Set.of("/jcr:system"));
944945

945946
logger.info("Copying workspace {} [i: {}, e: {}, m: {}]", workspaceName, includes, excludes, merges);
946947

@@ -959,7 +960,7 @@ private String copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot, Strin
959960

960961
static Set<String> calculateEffectiveIncludePaths(Set<String> includePaths, NodeState sourceRoot) {
961962
if (!includePaths.contains("/")) {
962-
return copyOf(includePaths);
963+
return Collections.unmodifiableSet(SetUtils.toLinkedSet(includePaths));
963964
}
964965

965966
// include child nodes from source individually to avoid deleting other initialized content

0 commit comments

Comments
 (0)