Skip to content

Commit 3216a1d

Browse files
rishabhdaimRishabh Kumar
andauthored
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 <diam@adobe.com>
1 parent df1135d commit 3216a1d

File tree

10 files changed

+51
-32
lines changed

10 files changed

+51
-32
lines changed

oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818

1919
import java.util.Collections;
2020
import java.util.HashSet;
21+
import java.util.LinkedHashSet;
2122
import java.util.Map;
2223
import java.util.Set;
24+
import java.util.stream.Collectors;
25+
import java.util.stream.Stream;
2326

2427
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
28+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2529
import org.jetbrains.annotations.NotNull;
2630

2731
/**
@@ -203,9 +207,9 @@ public Authorizable setAutoMembershipConfig(@NotNull AutoMembershipConfig autoMe
203207
*/
204208
@NotNull
205209
public Set<String> getAutoMembership(@NotNull org.apache.jackrabbit.api.security.user.Authorizable authorizable) {
206-
return ImmutableSet.<String>builder().
207-
addAll(autoMembershipConfig.getAutoMembership(authorizable)).
208-
addAll(getAutoMembership()).build();
210+
return Collections.unmodifiableSet((Set<String>)
211+
Stream.concat(autoMembershipConfig.getAutoMembership(authorizable).stream(), getAutoMembership().stream())
212+
.collect(Collectors.toCollection(LinkedHashSet::new)));
209213
}
210214

211215
/**

oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818

1919
import java.security.Principal;
2020
import java.util.ArrayList;
21+
import java.util.Arrays;
22+
import java.util.Collections;
2123
import java.util.Iterator;
24+
import java.util.LinkedHashSet;
2225
import java.util.List;
2326
import java.util.Set;
2427
import javax.jcr.AccessDeniedException;
@@ -71,12 +74,11 @@ public CompositeAccessControlManager(@NotNull Root root,
7174
@NotNull
7275
@Override
7376
public Privilege[] getSupportedPrivileges(String absPath) throws RepositoryException {
74-
ImmutableSet.Builder<Privilege> privs = ImmutableSet.builder();
77+
Set<Privilege> privs = new LinkedHashSet<>();
7578
for (AccessControlManager acMgr : acMgrs) {
76-
privs.add(acMgr.getSupportedPrivileges(absPath));
79+
privs.addAll(Arrays.asList(acMgr.getSupportedPrivileges(absPath)));
7780
}
78-
Set<Privilege> s = privs.build();
79-
return s.toArray(new Privilege[0]);
81+
return privs.toArray(new Privilege[0]);
8082
}
8183

8284
@Override

oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/simplifiedroles/Role.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@
1616
*/
1717
package org.apache.jackrabbit.oak.exercise.security.authorization.models.simplifiedroles;
1818

19+
import java.util.Arrays;
1920
import java.util.Collections;
21+
import java.util.LinkedHashSet;
2022
import java.util.Set;
23+
import java.util.stream.Collectors;
24+
import java.util.stream.Stream;
25+
2126
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
2227
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2328
import org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions;
@@ -44,7 +49,9 @@ private Role(long permissions, String... privilegeNames) {
4449

4550
private Role(@NotNull Role base, long permissions, String... privilegeNames) {
4651
this.permissions = base.permissions|permissions;
47-
this.privilegeNames = ImmutableSet.<String>builder().addAll(base.privilegeNames).add(privilegeNames).build();
52+
this.privilegeNames = Collections.unmodifiableSet(
53+
(Set<String>) Stream.concat(base.privilegeNames.stream(), Arrays.stream(privilegeNames))
54+
.collect(Collectors.toCollection(LinkedHashSet::new)));
4855
}
4956

5057
boolean grants(long permissions) {

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.security.PrivilegedExceptionAction;
2323
import java.util.Collections;
2424
import java.util.HashSet;
25+
import java.util.LinkedHashSet;
2526
import java.util.Map;
2627
import java.util.Set;
2728
import javax.jcr.Credentials;
@@ -212,9 +213,10 @@ public void initialize(Subject subject, CallbackHandler callbackHandler, Map<Str
212213
@Override
213214
public boolean logout() throws LoginException {
214215
boolean success = false;
215-
Set<Object> creds = ImmutableSet.builder()
216-
.addAll(subject.getPublicCredentials(Credentials.class))
217-
.addAll(subject.getPublicCredentials(AuthInfo.class)).build();
216+
Set<Object> builder = new LinkedHashSet<>(subject.getPublicCredentials(Credentials.class));
217+
builder.addAll(subject.getPublicCredentials(AuthInfo.class));
218+
Set<Object> creds = Collections.unmodifiableSet(builder);
219+
218220
if (!subject.getPrincipals().isEmpty() && !creds.isEmpty()) {
219221
// clear subject if not readonly
220222
if (!subject.isReadOnly()) {

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
*/
1717
package org.apache.jackrabbit.oak.spi.security.privilege;
1818

19+
import java.util.Collections;
1920
import java.util.Objects;
2021
import java.util.Set;
2122

2223
import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
2324

25+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
2426
import org.jetbrains.annotations.NotNull;
2527
import org.jetbrains.annotations.Nullable;
2628

@@ -37,11 +39,7 @@ public final class ImmutablePrivilegeDefinition implements PrivilegeDefinition {
3739
public ImmutablePrivilegeDefinition(@NotNull String name, boolean isAbstract, @Nullable Iterable<String> declaredAggregateNames) {
3840
this.name = name;
3941
this.isAbstract = isAbstract;
40-
ImmutableSet.Builder<String> builder = ImmutableSet.builder();
41-
if (declaredAggregateNames != null) {
42-
builder.addAll(declaredAggregateNames);
43-
}
44-
this.declaredAggregateNames = builder.build();
42+
this.declaredAggregateNames = declaredAggregateNames != null ? Collections.unmodifiableSet(SetUtils.toLinkedSet(declaredAggregateNames)) : Set.of();
4543
hashcode = Objects.hash(this.name, this.isAbstract, this.declaredAggregateNames);
4644
}
4745

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Collections;
2121
import java.util.HashMap;
2222
import java.util.HashSet;
23+
import java.util.LinkedHashSet;
2324
import java.util.Map;
2425
import java.util.Set;
2526
import java.util.function.Function;
@@ -268,15 +269,15 @@ private Iterable<String> extractAggregatedPrivileges(@NotNull Iterable<String> p
268269

269270
@NotNull
270271
private Set<String> resolveBuiltInAggregation(@NotNull String privilegeName) {
271-
ImmutableSet.Builder<String> builder = ImmutableSet.builder();
272+
Set<String> builder = new LinkedHashSet<>();
272273
for (String name : AGGREGATE_PRIVILEGES.get(privilegeName)) {
273274
if (!AGGREGATE_PRIVILEGES.containsKey(name)) {
274275
builder.add(name);
275276
} else {
276277
builder.addAll(resolveBuiltInAggregation(name));
277278
}
278279
}
279-
Set<String> set = builder.build();
280+
Set<String> set = Collections.unmodifiableSet(builder);
280281
aggregation.put(privilegeName, set);
281282
return set;
282283
}
@@ -295,10 +296,10 @@ public Iterable<String> apply(@Nullable String privName) {
295296
} else if (AGGREGATE_PRIVILEGES.containsKey(privName)) {
296297
return resolveBuiltInAggregation(privName);
297298
} else {
298-
ImmutableSet.Builder<String> builder = ImmutableSet.builder();
299+
Set<String> builder = new LinkedHashSet<>();
299300
fillAggregation(getPrivilegesTree().getChild(privName), builder);
300301

301-
Set<String> aggregates = builder.build();
302+
Set<String> aggregates = Collections.unmodifiableSet(builder);
302303
if (!JCR_ALL.equals(privName) && !aggregates.isEmpty()) {
303304
aggregation.put(privName, aggregates);
304305
}
@@ -307,7 +308,7 @@ public Iterable<String> apply(@Nullable String privName) {
307308
}
308309
}
309310

310-
private void fillAggregation(@NotNull Tree privTree, @NotNull ImmutableSet.Builder<String> builder) {
311+
private void fillAggregation(@NotNull Tree privTree, @NotNull Set<String> builder) {
311312
if (!privTree.exists()) {
312313
return;
313314
}

oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/v8/AzureSegmentStoreV8Test.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@
2323
import java.net.URISyntaxException;
2424
import java.time.Duration;
2525
import java.time.Instant;
26+
import java.util.Collections;
2627
import java.util.Date;
2728
import java.util.EnumSet;
2829
import java.util.HashMap;
2930
import java.util.Set;
3031
import java.util.stream.StreamSupport;
3132

3233
import org.apache.jackrabbit.oak.blob.cloud.azure.blobstorage.AzuriteDockerRule;
34+
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
3335
import org.apache.jackrabbit.oak.segment.azure.AzureSegmentStoreService;
3436
import org.apache.jackrabbit.oak.segment.azure.Configuration;
3537
import org.apache.jackrabbit.oak.segment.azure.util.Environment;
@@ -244,8 +246,11 @@ private static Instant yesterday() {
244246
return Instant.now().minus(Duration.ofDays(1));
245247
}
246248

247-
private static ImmutableSet<String> concat(ImmutableSet<String> blobs, String element) {
248-
return ImmutableSet.<String>builder().addAll(blobs).add(element).build();
249+
private static Set<String> concat(Set<String> blobs, String element) {
250+
251+
final Set<String> set = SetUtils.toLinkedSet(blobs);
252+
set.add(element);
253+
return Collections.unmodifiableSet(set);
249254
}
250255

251256
private static Configuration getConfigurationWithSharedAccessSignature(String sasToken) {

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
import java.io.InputStream;
3131
import java.util.ArrayList;
3232
import java.util.Collection;
33+
import java.util.Collections;
3334
import java.util.HashMap;
35+
import java.util.LinkedHashSet;
3436
import java.util.List;
3537
import java.util.Map;
3638
import java.util.Set;
@@ -67,10 +69,10 @@ class CompositionContext {
6769
this.prefetchNodeStore = globalStore instanceof PrefetchNodeStore ? (PrefetchNodeStore) globalStore : PrefetchNodeStore.NOOP;
6870
this.nonDefaultStores = nonDefaultStores;
6971

70-
ImmutableSet.Builder<MountedNodeStore> b = ImmutableSet.builder();
72+
Set<MountedNodeStore> b = new LinkedHashSet<>();
7173
b.add(this.globalStore);
7274
b.addAll(this.nonDefaultStores);
73-
allStores = b.build();
75+
allStores = Collections.unmodifiableSet(b);
7476

7577
this.nodeStoresByMount = allStores.stream().collect(Collectors.toMap(MountedNodeStore::getMount, Function.identity()));
7678
this.nodeStateMonitor = nodeStateMonitor;

oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,15 @@
3838

3939
import java.util.HashMap;
4040
import java.util.Map;
41+
import java.util.Set;
4142
import java.util.concurrent.TimeUnit;
4243
import java.util.regex.Matcher;
4344
import java.util.regex.Pattern;
4445
public class MongoStatus implements ServerMonitorListener {
4546

4647
private static final Logger LOG = LoggerFactory.getLogger(MongoStatus.class);
4748

48-
private static final ImmutableSet<String> SERVER_DETAIL_FIELD_NAMES
49-
= ImmutableSet.<String>builder()
50-
.add("host", "process", "connections", "repl", "storageEngine", "mem")
51-
.build();
49+
private static final Set<String> SERVER_DETAIL_FIELD_NAMES = Set.of("host", "process", "connections", "repl", "storageEngine", "mem");
5250

5351
private final MongoClient client;
5452

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Calendar;
2222
import java.util.Collections;
2323
import java.util.LinkedHashMap;
24+
import java.util.LinkedHashSet;
2425
import java.util.List;
2526
import java.util.Map;
2627
import java.util.Set;
@@ -465,8 +466,7 @@ private boolean isCompleteMigration() {
465466

466467
private void copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot) {
467468
final Set<String> includes = calculateEffectiveIncludePaths(includePaths, sourceRoot);
468-
ImmutableSet.Builder<String> excludes = new ImmutableSet.Builder<>();
469-
excludes.addAll(excludePaths);
469+
Set<String> excludes = new LinkedHashSet<>(excludePaths);
470470
if (!versionCopyConfiguration.isCopyAll()) {
471471
excludes.add("/jcr:system/jcr:versionStorage");
472472
}
@@ -477,7 +477,7 @@ private void copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot) {
477477

478478
NodeStateCopier.builder()
479479
.include(includes)
480-
.exclude(excludes.build())
480+
.exclude(Collections.unmodifiableSet(excludes))
481481
.merge(merges)
482482
.copy(sourceRoot, targetRoot);
483483

0 commit comments

Comments
 (0)