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 <[email protected]> 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);
