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());
+ }
+ }
+ }
}