You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by da...@apache.org on 2025/04/07 06:19:05 UTC
(jackrabbit-oak) 01/01: OAK-11640 : removed usage of ImmutableSet.builder
This is an automated email from the ASF dual-hosted git repository.
daim pushed a commit to branch OAK-11640
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 1abb11458d1cb36d4a2062e93142df6cf68dea13
Author: Rishabh Kumar <di...@adobe.com>
AuthorDate: Mon Apr 7 11:48:53 2025 +0530
OAK-11640 : removed usage of ImmutableSet.builder
---
.../authentication/external/basic/DefaultSyncConfig.java | 10 +++++++---
.../composite/CompositeAccessControlManager.java | 10 ++++++----
.../security/authorization/models/simplifiedroles/Role.java | 10 +++++++++-
.../oak/spi/security/authentication/AbstractLoginModule.java | 8 +++++---
.../spi/security/privilege/ImmutablePrivilegeDefinition.java | 7 ++-----
.../oak/spi/security/privilege/PrivilegeBitsProvider.java | 11 ++++++-----
.../oak/segment/azure/v8/AzureSegmentStoreV8Test.java | 11 ++++++++---
.../apache/jackrabbit/oak/composite/CompositionContext.java | 6 ++++--
.../jackrabbit/oak/plugins/document/mongo/MongoStatus.java | 6 ++----
.../apache/jackrabbit/oak/upgrade/RepositorySidegrade.java | 6 +++---
10 files changed, 52 insertions(+), 33 deletions(-)
diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java
index 73eee24a7b..b73342fc58 100644
--- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java
+++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java
@@ -18,10 +18,14 @@ package org.apache.jackrabbit.oak.spi.security.authentication.external.basic;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
+import org.apache.jackrabbit.oak.commons.collections.SetUtils;
import org.jetbrains.annotations.NotNull;
/**
@@ -203,9 +207,9 @@ public class DefaultSyncConfig {
*/
@NotNull
public Set<String> getAutoMembership(@NotNull org.apache.jackrabbit.api.security.user.Authorizable authorizable) {
- return ImmutableSet.<String>builder().
- addAll(autoMembershipConfig.getAutoMembership(authorizable)).
- addAll(getAutoMembership()).build();
+ return Collections.unmodifiableSet((Set<String>)
+ Stream.concat(autoMembershipConfig.getAutoMembership(authorizable).stream(), getAutoMembership().stream())
+ .collect(Collectors.toCollection(LinkedHashSet::new)));
}
/**
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java
index 0c68a5e047..efba1be31a 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java
@@ -18,7 +18,10 @@ package org.apache.jackrabbit.oak.security.authorization.composite;
import java.security.Principal;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import javax.jcr.AccessDeniedException;
@@ -71,12 +74,11 @@ class CompositeAccessControlManager extends AbstractAccessControlManager {
@NotNull
@Override
public Privilege[] getSupportedPrivileges(String absPath) throws RepositoryException {
- ImmutableSet.Builder<Privilege> privs = ImmutableSet.builder();
+ Set<Privilege> privs = new LinkedHashSet<>();
for (AccessControlManager acMgr : acMgrs) {
- privs.add(acMgr.getSupportedPrivileges(absPath));
+ privs.addAll(Arrays.asList(acMgr.getSupportedPrivileges(absPath)));
}
- Set<Privilege> s = privs.build();
- return s.toArray(new Privilege[0]);
+ return privs.toArray(new Privilege[0]);
}
@Override
diff --git a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java
index 159f07a1f0..924a3c1e4b 100644
--- a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java
+++ b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java
@@ -16,8 +16,13 @@
*/
package org.apache.jackrabbit.oak.exercise.security.authorization.models.simplifiedroles;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.LinkedHashSet;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions;
@@ -44,7 +49,10 @@ final class Role {
private Role(@NotNull Role base, long permissions, String... privilegeNames) {
this.permissions = base.permissions|permissions;
- this.privilegeNames = ImmutableSet.<String>builder().addAll(base.privilegeNames).add(privilegeNames).build();
+ new LinkedHashSet<>(base.privilegeNames).addAll(Arrays.asList(privilegeNames));
+ this.privilegeNames = Collections.unmodifiableSet(
+ (Set<String>) Stream.concat(base.privilegeNames.stream(), Arrays.stream(privilegeNames))
+ .collect(Collectors.toCollection(LinkedHashSet::new)));
}
boolean grants(long permissions) {
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
index 8c49550772..dbc7c5763d 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
@@ -22,8 +22,11 @@ import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import javax.jcr.Credentials;
import javax.jcr.NoSuchWorkspaceException;
import javax.security.auth.DestroyFailedException;
@@ -212,9 +215,8 @@ public abstract class AbstractLoginModule implements LoginModule {
@Override
public boolean logout() throws LoginException {
boolean success = false;
- Set<Object> creds = ImmutableSet.builder()
- .addAll(subject.getPublicCredentials(Credentials.class))
- .addAll(subject.getPublicCredentials(AuthInfo.class)).build();
+ Set<Object> creds = Stream.concat(subject.getPublicCredentials(Credentials.class).stream(), subject.getPublicCredentials(AuthInfo.class).stream())
+ .collect(Collectors.toCollection(LinkedHashSet::new));
if (!subject.getPrincipals().isEmpty() && !creds.isEmpty()) {
// clear subject if not readonly
if (!subject.isReadOnly()) {
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java
index 6cf1199e13..1406f8b146 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java
@@ -21,6 +21,7 @@ import java.util.Set;
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
+import org.apache.jackrabbit.oak.commons.collections.SetUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -37,11 +38,7 @@ public final class ImmutablePrivilegeDefinition implements PrivilegeDefinition {
public ImmutablePrivilegeDefinition(@NotNull String name, boolean isAbstract, @Nullable Iterable<String> declaredAggregateNames) {
this.name = name;
this.isAbstract = isAbstract;
- ImmutableSet.Builder<String> builder = ImmutableSet.builder();
- if (declaredAggregateNames != null) {
- builder.addAll(declaredAggregateNames);
- }
- this.declaredAggregateNames = builder.build();
+ this.declaredAggregateNames = declaredAggregateNames != null ? SetUtils.toLinkedSet(declaredAggregateNames) : Set.of();
hashcode = Objects.hash(this.name, this.isAbstract, this.declaredAggregateNames);
}
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..51a20b6e0a 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
@@ -20,6 +20,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
@@ -268,7 +269,7 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants {
@NotNull
private Set<String> resolveBuiltInAggregation(@NotNull String privilegeName) {
- ImmutableSet.Builder<String> builder = ImmutableSet.builder();
+ Set<String> builder = new LinkedHashSet<>();
for (String name : AGGREGATE_PRIVILEGES.get(privilegeName)) {
if (!AGGREGATE_PRIVILEGES.containsKey(name)) {
builder.add(name);
@@ -276,7 +277,7 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants {
builder.addAll(resolveBuiltInAggregation(name));
}
}
- Set<String> set = builder.build();
+ Set<String> set = Collections.unmodifiableSet(builder);
aggregation.put(privilegeName, set);
return set;
}
@@ -295,10 +296,10 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants {
} else if (AGGREGATE_PRIVILEGES.containsKey(privName)) {
return resolveBuiltInAggregation(privName);
} else {
- ImmutableSet.Builder<String> builder = ImmutableSet.builder();
+ Set<String> builder = new LinkedHashSet<>();
fillAggregation(getPrivilegesTree().getChild(privName), builder);
- Set<String> aggregates = builder.build();
+ Set<String> aggregates = Collections.unmodifiableSet(builder);
if (!JCR_ALL.equals(privName) && !aggregates.isEmpty()) {
aggregation.put(privName, aggregates);
}
@@ -307,7 +308,7 @@ public final class PrivilegeBitsProvider implements PrivilegeConstants {
}
}
- private void fillAggregation(@NotNull Tree privTree, @NotNull ImmutableSet.Builder<String> builder) {
+ private void fillAggregation(@NotNull Tree privTree, @NotNull Set<String> builder) {
if (!privTree.exists()) {
return;
}
diff --git a/oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/v8/AzureSegmentStoreV8Test.java b/oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/v8/AzureSegmentStoreV8Test.java
index 0b8b84415a..d426daa6ee 100644
--- a/oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/v8/AzureSegmentStoreV8Test.java
+++ b/oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/v8/AzureSegmentStoreV8Test.java
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.net.URISyntaxException;
import java.time.Duration;
import java.time.Instant;
+import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
@@ -30,6 +31,7 @@ import java.util.Set;
import java.util.stream.StreamSupport;
import org.apache.jackrabbit.oak.blob.cloud.azure.blobstorage.AzuriteDockerRule;
+import org.apache.jackrabbit.oak.commons.collections.SetUtils;
import org.apache.jackrabbit.oak.segment.azure.AzureSegmentStoreService;
import org.apache.jackrabbit.oak.segment.azure.Configuration;
import org.apache.jackrabbit.oak.segment.azure.util.Environment;
@@ -70,7 +72,7 @@ public class AzureSegmentStoreV8Test {
private static final EnumSet<SharedAccessBlobPermissions> READ_ONLY = EnumSet.of(READ, LIST);
private static final EnumSet<SharedAccessBlobPermissions> READ_WRITE = EnumSet.of(READ, LIST, CREATE, WRITE, ADD);
- private static final ImmutableSet<String> BLOBS = ImmutableSet.of("blob1", "blob2");
+ private static final Set<String> BLOBS = Set.of("blob1", "blob2");
private CloudBlobContainer container;
@@ -244,8 +246,11 @@ public class AzureSegmentStoreV8Test {
return Instant.now().minus(Duration.ofDays(1));
}
- private static ImmutableSet<String> concat(ImmutableSet<String> blobs, String element) {
- return ImmutableSet.<String>builder().addAll(blobs).add(element).build();
+ private static Set<String> concat(Set<String> blobs, String element) {
+
+ final Set<String> set = SetUtils.toLinkedSet(blobs);
+ set.add(element);
+ return Collections.unmodifiableSet(set);
}
private static Configuration getConfigurationWithSharedAccessSignature(String sasToken) {
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositionContext.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositionContext.java
index f8a99669b5..5a582535b9 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositionContext.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositionContext.java
@@ -30,7 +30,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -67,10 +69,10 @@ class CompositionContext {
this.prefetchNodeStore = globalStore instanceof PrefetchNodeStore ? (PrefetchNodeStore) globalStore : PrefetchNodeStore.NOOP;
this.nonDefaultStores = nonDefaultStores;
- ImmutableSet.Builder<MountedNodeStore> b = ImmutableSet.builder();
+ Set<MountedNodeStore> b = new LinkedHashSet<>();
b.add(this.globalStore);
b.addAll(this.nonDefaultStores);
- allStores = b.build();
+ allStores = Collections.unmodifiableSet(b);
this.nodeStoresByMount = allStores.stream().collect(Collectors.toMap(MountedNodeStore::getMount, Function.identity()));
this.nodeStateMonitor = nodeStateMonitor;
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java
index c27cbbb389..7e92b548b1 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java
@@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -45,10 +46,7 @@ public class MongoStatus implements ServerMonitorListener {
private static final Logger LOG = LoggerFactory.getLogger(MongoStatus.class);
- private static final ImmutableSet<String> SERVER_DETAIL_FIELD_NAMES
- = ImmutableSet.<String>builder()
- .add("host", "process", "connections", "repl", "storageEngine", "mem")
- .build();
+ private static final Set<String> SERVER_DETAIL_FIELD_NAMES = Set.of("host", "process", "connections", "repl", "storageEngine", "mem");
private final MongoClient client;
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 b83d0562ec..743826811d 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
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -465,8 +466,7 @@ public class RepositorySidegrade {
private void copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot) {
final Set<String> includes = calculateEffectiveIncludePaths(includePaths, sourceRoot);
- ImmutableSet.Builder<String> excludes = new ImmutableSet.Builder<>();
- excludes.addAll(excludePaths);
+ Set<String> excludes = new LinkedHashSet<>(excludePaths);
if (!versionCopyConfiguration.isCopyAll()) {
excludes.add("/jcr:system/jcr:versionStorage");
}
@@ -477,7 +477,7 @@ public class RepositorySidegrade {
NodeStateCopier.builder()
.include(includes)
- .exclude(excludes.build())
+ .exclude(Collections.unmodifiableSet(excludes))
.merge(merges)
.copy(sourceRoot, targetRoot);