Author: angela
Date: Thu Jul 30 09:31:09 2015
New Revision: 1693401

URL: http://svn.apache.org/r1693401
Log:
OAK-3165 : Redundant test for duplicate membership in Group.addMember

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
    
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/MembershipProviderTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java?rev=1693401&r1=1693400&r2=1693401&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
 Thu Jul 30 09:31:09 2015
@@ -110,11 +110,6 @@ class GroupImpl extends AuthorizableImpl
             }
         }
 
-        if (isDeclaredMember(authorizable)) {
-            log.debug("Authorizable {} is already declared member of {}", 
memberID, getID());
-            return false;
-        }
-
         return getMembershipProvider().addMember(getTree(), 
authorizableImpl.getTree());
     }
 

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=1693401&r1=1693400&r2=1693401&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
 Thu Jul 30 09:31:09 2015
@@ -53,6 +53,7 @@ public class MembershipWriter {
 
     /**
      * Adds a new member to the given {@code groupTree}.
+     *
      * @param groupTree the group to add the member to
      * @param memberContentId the id of the new member
      * @return {@code true} if the member was added
@@ -73,7 +74,7 @@ public class MembershipWriter {
             PropertyState refs = t.getProperty(UserConstants.REP_MEMBERS);
             if (refs != null) {
                 int numRefs = 0;
-                for (String ref: refs.getValue(Type.WEAKREFERENCES)) {
+                for (String ref : refs.getValue(Type.WEAKREFERENCES)) {
                     if (ref.equals(memberContentId)) {
                         return false;
                     }
@@ -100,7 +101,7 @@ public class MembershipWriter {
                     bestTree = membersList.addChild("0");
                 } else {
                     // keep node names linear
-                    int i=0;
+                    int i = 0;
                     String name = String.valueOf(i);
                     while (membersList.hasChild(name)) {
                         name = String.valueOf(++i);
@@ -172,7 +173,7 @@ public class MembershipWriter {
 
         int count = 0;
         int numNodes = 0;
-        for (String ref: members) {
+        for (String ref : members) {
             if (prop == null) {
                 prop = PropertyBuilder.array(Type.WEAKREFERENCE, 
UserConstants.REP_MEMBERS);
             }
@@ -194,6 +195,4 @@ public class MembershipWriter {
             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/MembershipProviderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipProviderTest.java?rev=1693401&r1=1693400&r2=1693401&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipProviderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipProviderTest.java
 Thu Jul 30 09:31:09 2015
@@ -30,6 +30,7 @@ import org.apache.jackrabbit.oak.Abstrac
 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.util.TreeUtil;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -288,6 +289,43 @@ public class MembershipProviderTest exte
         );
     }
 
+    @Test
+    public void testAddMembersAgain() throws Exception {
+        Set<String> members = new HashSet<String>();
+        Group grp  = createGroup();
+        for (int i=0; i<NUM_USERS; i++) {
+            User usr = createUser();
+            grp.addMember(usr);
+            members.add(usr.getID());
+        }
+        root.commit();
+
+        for (String id : members) {
+            assertFalse(grp.addMember(userMgr.getAuthorizable(id)));
+        }
+    }
+
+    @Test
+    public void testAddMembersAgainOnMembershipProvider() throws Exception {
+        Set<String> memberPaths = new HashSet<String>();
+        Group grp  = createGroup();
+        for (int i=0; i<NUM_USERS; i++) {
+            User usr = createUser();
+            grp.addMember(usr);
+            memberPaths.add(usr.getPath());
+        }
+        root.commit();
+
+
+        MembershipProvider mp = userMgr.getMembershipProvider();
+        Tree groupTree = root.getTree(grp.getPath());
+        for (String path : memberPaths) {
+            Tree memberTree = root.getTree(path);
+            assertFalse(mp.addMember(groupTree, memberTree));
+            assertFalse(mp.addMember(groupTree, TreeUtil.getString(memberTree, 
JcrConstants.JCR_UUID)));
+        }
+    }
+
     private User createUser() throws RepositoryException {
         String userId = "testUser" + testUsers.size();
         User usr = userMgr.createUser(userId, "pw");


Reply via email to