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 al...@apache.org on 2017/05/08 09:47:56 UTC

svn commit: r1794303 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/ oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/

Author: alexparvulescu
Date: Mon May  8 09:47:56 2017
New Revision: 1794303

URL: http://svn.apache.org/viewvc?rev=1794303&view=rev
Log:
OAK-6145 Move MembershipWriter#setMembers() to oak-upgrade


Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java
    jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java?rev=1794303&r1=1794302&r2=1794303&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java Mon May  8 09:47:56 2017
@@ -31,7 +31,6 @@ import org.apache.jackrabbit.oak.api.Pro
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
-import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyBuilder;
 
 import com.google.common.collect.Iterators;
@@ -43,12 +42,12 @@ import static org.apache.jackrabbit.oak.
  */
 public class MembershipWriter {
 
-    static final int DEFAULT_MEMBERSHIP_THRESHHOLD = 100;
+    public static final int DEFAULT_MEMBERSHIP_THRESHOLD = 100;
 
     /**
      * size of the membership threshold after which a new overflow node is created.
      */
-    private int membershipSizeThreshold = DEFAULT_MEMBERSHIP_THRESHHOLD;
+    private int membershipSizeThreshold = DEFAULT_MEMBERSHIP_THRESHOLD;
 
     public void setMembershipSizeThreshold(int membershipSizeThreshold) {
         this.membershipSizeThreshold = membershipSizeThreshold;
@@ -138,8 +137,8 @@ public class MembershipWriter {
             // for simplicity this is achieved by introducing new tree(s)
             if ((propCnt + memberIds.size()) > membershipSizeThreshold) {
                 while (!memberIds.isEmpty()) {
-                    Set s = new HashSet();
-                    Iterator it = memberIds.keySet().iterator();
+                    Set<String> s = new HashSet<String>();
+                    Iterator<String> it = memberIds.keySet().iterator();
                     while (propCnt < membershipSizeThreshold && it.hasNext()) {
                         s.add(it.next());
                         it.remove();
@@ -235,45 +234,4 @@ public class MembershipWriter {
         }
         return Sets.newHashSet(memberIds.values());
     }
-
-    /**
-     * Sets the given set of members to the specified group. this method is only used by the migration code.
-     *
-     * @param group node builder of group
-     * @param members set of content ids to set
-     */
-    public void setMembers(@Nonnull NodeBuilder group, @Nonnull Set<String> members) {
-        group.removeProperty(UserConstants.REP_MEMBERS);
-        if (group.hasChildNode(UserConstants.REP_MEMBERS)) {
-            group.getChildNode(UserConstants.REP_MEMBERS).remove();
-        }
-
-        PropertyBuilder<String> prop = null;
-        NodeBuilder refList = null;
-        NodeBuilder node = group;
-
-        int count = 0;
-        int numNodes = 0;
-        for (String ref : members) {
-            if (prop == null) {
-                prop = PropertyBuilder.array(Type.WEAKREFERENCE, UserConstants.REP_MEMBERS);
-            }
-            prop.addValue(ref);
-            count++;
-            if (count > membershipSizeThreshold) {
-                node.setProperty(prop.getPropertyState());
-                prop = null;
-                if (refList == null) {
-                    // create intermediate structure
-                    refList = group.child(UserConstants.REP_MEMBERS_LIST);
-                    refList.setProperty(JcrConstants.JCR_PRIMARYTYPE, UserConstants.NT_REP_MEMBER_REFERENCES_LIST, NAME);
-                }
-                node = refList.child(String.valueOf(numNodes++));
-                node.setProperty(JcrConstants.JCR_PRIMARYTYPE, UserConstants.NT_REP_MEMBER_REFERENCES, NAME);
-            }
-        }
-        if (prop != null) {
-            node.setProperty(prop.getPropertyState());
-        }
-    }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java?rev=1794303&r1=1794302&r2=1794303&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java Mon May  8 09:47:56 2017
@@ -89,7 +89,7 @@ public class UserImporterMembershipIgnor
     @Test
     public void testKnownMemberThresholdReached() throws Exception {
         List<String> memberIds = new ArrayList();
-        for (int i = 0; i <= MembershipWriter.DEFAULT_MEMBERSHIP_THRESHHOLD; i++) {
+        for (int i = 0; i <= MembershipWriter.DEFAULT_MEMBERSHIP_THRESHOLD; i++) {
             memberIds.add(userProvider.getContentID("m"+i));
         }
         groupTree.setProperty(REP_MEMBERS, memberIds, Type.STRINGS);

Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java?rev=1794303&r1=1794302&r2=1794303&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java Mon May  8 09:47:56 2017
@@ -23,6 +23,7 @@ import javax.annotation.Nonnull;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyBuilder;
 import org.apache.jackrabbit.oak.security.user.MembershipWriter;
 import org.apache.jackrabbit.oak.spi.commit.DefaultEditor;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
@@ -35,6 +36,7 @@ import org.slf4j.LoggerFactory;
 
 import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
 import static org.apache.jackrabbit.oak.api.CommitFailedException.CONSTRAINT;
+import static org.apache.jackrabbit.oak.api.Type.NAME;
 
 class GroupEditor extends DefaultEditor {
 
@@ -46,7 +48,7 @@ class GroupEditor extends DefaultEditor
 
     private EditorGroup currentGroup;
 
-    private final MembershipWriter writer = new MembershipWriter();
+    private final UpgradeMembershipWriter writer = new UpgradeMembershipWriter();
 
     GroupEditor(@Nonnull NodeBuilder builder, @Nonnull String groupsPath) {
         this.state = new State(builder);
@@ -177,4 +179,48 @@ class GroupEditor extends DefaultEditor
             }
         }
     }
+
+    private static class UpgradeMembershipWriter {
+
+        /**
+         * Sets the given set of members to the specified group. this method is only used by the migration code.
+         *
+         * @param group node builder of group
+         * @param members set of content ids to set
+         */
+        public void setMembers(@Nonnull NodeBuilder group, @Nonnull Set<String> members) {
+            group.removeProperty(UserConstants.REP_MEMBERS);
+            if (group.hasChildNode(UserConstants.REP_MEMBERS)) {
+                group.getChildNode(UserConstants.REP_MEMBERS).remove();
+            }
+
+            PropertyBuilder<String> prop = null;
+            NodeBuilder refList = null;
+            NodeBuilder node = group;
+
+            int count = 0;
+            int numNodes = 0;
+            for (String ref : members) {
+                if (prop == null) {
+                    prop = PropertyBuilder.array(Type.WEAKREFERENCE, UserConstants.REP_MEMBERS);
+                }
+                prop.addValue(ref);
+                count++;
+                if (count > MembershipWriter.DEFAULT_MEMBERSHIP_THRESHOLD) {
+                    node.setProperty(prop.getPropertyState());
+                    prop = null;
+                    if (refList == null) {
+                        // create intermediate structure
+                        refList = group.child(UserConstants.REP_MEMBERS_LIST);
+                        refList.setProperty(JCR_PRIMARYTYPE, UserConstants.NT_REP_MEMBER_REFERENCES_LIST, NAME);
+                    }
+                    node = refList.child(String.valueOf(numNodes++));
+                    node.setProperty(JCR_PRIMARYTYPE, UserConstants.NT_REP_MEMBER_REFERENCES, NAME);
+                }
+            }
+            if (prop != null) {
+                node.setProperty(prop.getPropertyState());
+            }
+        }
+    }
 }