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 3216a1d85c OAK-11640 : removed usage of ImmutableSet.builder (#2212)
3216a1d85c is described below

commit 3216a1d85c6afe661a48cd1c93bb1f0b57e56d2f
Author: Rishabh Kumar <[email protected]>
AuthorDate: Wed Apr 9 07:21:10 2025 +0530

    OAK-11640 : removed usage of ImmutableSet.builder (#2212)
    
    * OAK-11640 : removed usage of ImmutableSet.builder
    
    * OAK-11640 : incorporated review comments)
    
    * OAK-11640 : revert unintendent code change
    
    ---------
    
    Co-authored-by: Rishabh Kumar <[email protected]>
---
 .../authentication/external/basic/DefaultSyncConfig.java      | 10 +++++++---
 .../composite/CompositeAccessControlManager.java              | 10 ++++++----
 .../security/authorization/models/simplifiedroles/Role.java   |  9 ++++++++-
 .../oak/spi/security/authentication/AbstractLoginModule.java  |  8 +++++---
 .../spi/security/privilege/ImmutablePrivilegeDefinition.java  |  8 +++-----
 .../oak/spi/security/privilege/PrivilegeBitsProvider.java     | 11 ++++++-----
 .../oak/segment/azure/v8/AzureSegmentStoreV8Test.java         |  9 +++++++--
 .../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, 51 insertions(+), 32 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..d1e4ef8f01 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,9 @@ 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();
+        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..c54b28d64b 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,6 +22,7 @@ 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 javax.jcr.Credentials;
@@ -212,9 +213,10 @@ 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> builder = new 
LinkedHashSet<>(subject.getPublicCredentials(Credentials.class));
+        builder.addAll(subject.getPublicCredentials(AuthInfo.class));
+        Set<Object> creds = Collections.unmodifiableSet(builder);
+
         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..1a7e9789a4 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
@@ -16,11 +16,13 @@
  */
 package org.apache.jackrabbit.oak.spi.security.privilege;
 
+import java.util.Collections;
 import java.util.Objects;
 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 +39,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 ? 
Collections.unmodifiableSet(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..5132150e54 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;
@@ -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);
 

Reply via email to