You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by da...@apache.org on 2024/12/30 11:46:12 UTC

(jackrabbit-oak) branch OAK-11325 created (now d631115da7)

This is an automated email from the ASF dual-hosted git repository.

daim pushed a change to branch OAK-11325
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


      at d631115da7 OAK-11325 : removed usage of Guava's Sets.powerSet

This branch includes the following new commits:

     new d631115da7 OAK-11325 : removed usage of Guava's Sets.powerSet

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(jackrabbit-oak) 01/01: OAK-11325 : removed usage of Guava's Sets.powerSet

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

daim pushed a commit to branch OAK-11325
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit d631115da7d94448a13dce7a99ff2742f7e3c9ac
Author: Rishabh Kumar <di...@adobe.com>
AuthorDate: Mon Dec 30 17:15:54 2024 +0530

    OAK-11325 : removed usage of Guava's Sets.powerSet
---
 .../composite/CompositeProviderCustomMixTest.java  | 36 ++++++++++++++--------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
index 8b90aca2d1..c02eb9e1b7 100644
--- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
+++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
@@ -20,8 +20,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
-import org.apache.jackrabbit.guava.common.collect.Sets;
 import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
 import org.apache.jackrabbit.oak.api.PropertyState;
@@ -63,9 +64,9 @@ public class CompositeProviderCustomMixTest extends AbstractSecurityTest {
 
         // tests all possible 256 shuffles
         for (CompositionType type : CompositionType.values()) {
-            for (Set<String> granted1 : Sets.powerSet(supp1)) {
-                for (Set<String> granted2 : Sets.powerSet(supp2)) {
-                    for (Set<String> ps : Sets.powerSet(all)) {
+            for (Set<String> granted1 : powerSet(supp1)) {
+                for (Set<String> granted2 : powerSet(supp2)) {
+                    for (Set<String> ps : powerSet(all)) {
                         CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, null);
 
                         boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, true);
@@ -99,9 +100,9 @@ public class CompositeProviderCustomMixTest extends AbstractSecurityTest {
         Tree tree = mock(Tree.class, withSettings().extraInterfaces(ReadOnly.class));
         // tests all possible 256 shuffles
         for (CompositionType type : CompositionType.values()) {
-            for (Set<String> granted1 : Sets.powerSet(supp1)) {
-                for (Set<String> granted2 : Sets.powerSet(supp2)) {
-                    for (Set<String> ps : Sets.powerSet(all)) {
+            for (Set<String> granted1 : powerSet(supp1)) {
+                for (Set<String> granted2 : powerSet(supp2)) {
+                    for (Set<String> ps : powerSet(all)) {
                         CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, grantMap);
                         boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, false);
 
@@ -140,9 +141,9 @@ public class CompositeProviderCustomMixTest extends AbstractSecurityTest {
 
         // tests all possible 256 shuffles
         for (CompositionType type : CompositionType.values()) {
-            for (Set<String> granted1 : Sets.powerSet(supp1)) {
-                for (Set<String> granted2 : Sets.powerSet(supp2)) {
-                    for (Set<String> ps : Sets.powerSet(all)) {
+            for (Set<String> granted1 : powerSet(supp1)) {
+                for (Set<String> granted2 : powerSet(supp2)) {
+                    for (Set<String> ps : powerSet(all)) {
                         CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, grantMap);
 
                         boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, false);
@@ -170,9 +171,9 @@ public class CompositeProviderCustomMixTest extends AbstractSecurityTest {
 
         // tests all possible 256 shuffles
         for (CompositionType type : CompositionType.values()) {
-            for (Set<String> granted1 : Sets.powerSet(supp1)) {
-                for (Set<String> granted2 : Sets.powerSet(supp2)) {
-                    for (Set<String> ps : Sets.powerSet(all)) {
+            for (Set<String> granted1 : powerSet(supp1)) {
+                for (Set<String> granted2 : powerSet(supp2)) {
+                    for (Set<String> ps : powerSet(all)) {
                         CompositePermissionProvider cpp = buildCpp(supp1, granted1, supp2, granted2, type, grantMap);
 
                         boolean expected = expected(ps, supp1, granted1, supp2, granted2, type, false);
@@ -410,4 +411,13 @@ public class CompositeProviderCustomMixTest extends AbstractSecurityTest {
         }
 
     }
+
+    private <T> Set<Set<T>> powerSet(final Set<T> s) {
+        final T[] arr = s.toArray((T[]) new Object[0]);
+        return IntStream
+                .range(0, (int) Math.pow(2, arr.length))
+                .parallel() //performance improvement
+                .mapToObj(e -> IntStream.range(0, arr.length).filter(i -> (e & (0b1 << i)) != 0).mapToObj(i -> arr[i]).collect(Collectors.toSet()))
+                .collect(Collectors.toSet());
+    }
 }