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);