Skip to content

Commit 8d6c904

Browse files
authored
Merge pull request #1927 from apache/OAK-11325
OAK-11325 : removed usage of Guava's Sets.powerSet
2 parents 38a0dcb + 0b65f94 commit 8d6c904

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020
import java.util.List;
2121
import java.util.Map;
2222
import java.util.Set;
23+
import java.util.stream.Collectors;
24+
import java.util.stream.IntStream;
2325

24-
import org.apache.jackrabbit.guava.common.collect.Sets;
2526
import org.apache.jackrabbit.api.JackrabbitSession;
2627
import org.apache.jackrabbit.oak.AbstractSecurityTest;
2728
import org.apache.jackrabbit.oak.api.PropertyState;
@@ -63,9 +64,9 @@ public void hasPrivilegesTest() throws Exception {
6364

6465
// tests all possible 256 shuffles
6566
for (CompositionType type : CompositionType.values()) {
66-
for (Set<String> granted1 : Sets.powerSet(supp1)) {
67-
for (Set<String> granted2 : Sets.powerSet(supp2)) {
68-
for (Set<String> ps : Sets.powerSet(all)) {
67+
for (Set<String> granted1 : powerSet(supp1)) {
68+
for (Set<String> granted2 : powerSet(supp2)) {
69+
for (Set<String> ps : powerSet(all)) {
6970
CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, null);
7071

7172
boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, true);
@@ -99,9 +100,9 @@ public void isGrantedTest() throws Exception {
99100
Tree tree = mock(Tree.class, withSettings().extraInterfaces(ReadOnly.class));
100101
// tests all possible 256 shuffles
101102
for (CompositionType type : CompositionType.values()) {
102-
for (Set<String> granted1 : Sets.powerSet(supp1)) {
103-
for (Set<String> granted2 : Sets.powerSet(supp2)) {
104-
for (Set<String> ps : Sets.powerSet(all)) {
103+
for (Set<String> granted1 : powerSet(supp1)) {
104+
for (Set<String> granted2 : powerSet(supp2)) {
105+
for (Set<String> ps : powerSet(all)) {
105106
CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, grantMap);
106107
boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, false);
107108

@@ -140,9 +141,9 @@ public void getRepositoryPermissionTest() throws Exception {
140141

141142
// tests all possible 256 shuffles
142143
for (CompositionType type : CompositionType.values()) {
143-
for (Set<String> granted1 : Sets.powerSet(supp1)) {
144-
for (Set<String> granted2 : Sets.powerSet(supp2)) {
145-
for (Set<String> ps : Sets.powerSet(all)) {
144+
for (Set<String> granted1 : powerSet(supp1)) {
145+
for (Set<String> granted2 : powerSet(supp2)) {
146+
for (Set<String> ps : powerSet(all)) {
146147
CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, grantMap);
147148

148149
boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, false);
@@ -170,9 +171,9 @@ public void getTreePermissionTest() throws Exception {
170171

171172
// tests all possible 256 shuffles
172173
for (CompositionType type : CompositionType.values()) {
173-
for (Set<String> granted1 : Sets.powerSet(supp1)) {
174-
for (Set<String> granted2 : Sets.powerSet(supp2)) {
175-
for (Set<String> ps : Sets.powerSet(all)) {
174+
for (Set<String> granted1 : powerSet(supp1)) {
175+
for (Set<String> granted2 : powerSet(supp2)) {
176+
for (Set<String> ps : powerSet(all)) {
176177
CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, grantMap);
177178

178179
boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, false);
@@ -410,4 +411,13 @@ public boolean isGranted(long permissions, @NotNull PropertyState property) {
410411
}
411412

412413
}
414+
415+
private <T> Set<Set<T>> powerSet(final Set<T> s) {
416+
final T[] arr = s.toArray((T[]) new Object[0]);
417+
return IntStream
418+
.range(0, (int) Math.pow(2, arr.length))
419+
.parallel() //performance improvement
420+
.mapToObj(e -> IntStream.range(0, arr.length).filter(i -> (e & (0b1 << i)) != 0).mapToObj(i -> arr[i]).collect(Collectors.toSet()))
421+
.collect(Collectors.toSet());
422+
}
413423
}

0 commit comments

Comments
 (0)