Return-Path: Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: (qmail 3066 invoked from network); 4 Nov 2010 18:53:47 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 4 Nov 2010 18:53:47 -0000 Received: (qmail 56098 invoked by uid 500); 4 Nov 2010 18:54:18 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 55981 invoked by uid 500); 4 Nov 2010 18:54:18 -0000 Mailing-List: contact dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list dev@jackrabbit.apache.org Delivered-To: moderator for dev@jackrabbit.apache.org Received: (qmail 49745 invoked by uid 99); 4 Nov 2010 18:52:26 -0000 X-ASF-Spam-Status: No, hits=-2.3 required=10.0 tests=RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of fmeschbe@adobe.com designates 64.18.1.191 as permitted sender) Subject: Re: svn commit: r1031115 - in /jackrabbit/trunk: jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/... From: Felix Meschberger To: "dev@jackrabbit.apache.org" In-Reply-To: <20101104180729.0F24123888E7@eris.apache.org> References: <20101104180729.0F24123888E7@eris.apache.org> Content-Type: text/plain; charset="UTF-8" Date: Thu, 4 Nov 2010 14:51:46 -0400 Message-ID: <1288896706.8573.83.camel@meschbix.corp.day.com> MIME-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit Hi Am Donnerstag, den 04.11.2010, 18:07 +0000 schrieb mduerig@apache.org: > Author: mduerig > Date: Thu Nov 4 18:07:28 2010 > New Revision: 1031115 > > URL: http://svn.apache.org/viewvc?rev=1031115&view=rev > /** > + * Test whether an {@link Authorizable} is a declared member of this group. > + * @param authorizable The Authorizable to test. > + * @return true if the Authorizable to test is a direct member > + * @throws RepositoryException If an error occurs. > + */ > + boolean isDeclaredMember(Authorizable authorizable) throws RepositoryException; I suggest you add a @since tag to this. Regards Felix > + > + /** > * @param authorizable The Authorizable to test. > * @return true if the Authorizable to test is a direct or indirect member > * of this Group. > > Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java > URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java?rev=1031115&r1=1031114&r2=1031115&view=diff > ============================================================================== > --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java (original) > +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java Thu Nov 4 18:07:28 2010 > @@ -104,6 +104,16 @@ class GroupImpl extends AuthorizableImpl > return getMembers(true, UserManager.SEARCH_TYPE_AUTHORIZABLE); > } > > + public boolean isDeclaredMember(Authorizable authorizable) throws RepositoryException { > + if (authorizable == null || !(authorizable instanceof AuthorizableImpl) > + || getNode().isSame(((AuthorizableImpl) authorizable).getNode())) { > + return false; > + } > + else { > + return getMembershipProvider(getNode()).hasMember((AuthorizableImpl) authorizable); > + } > + } > + > /** > * @see Group#isMember(Authorizable) > */ > @@ -330,6 +340,7 @@ class GroupImpl extends AuthorizableImpl > boolean addMember(AuthorizableImpl authorizable) throws RepositoryException; > boolean removeMember(AuthorizableImpl authorizable) throws RepositoryException; > Iterator getMembers(boolean includeIndirect, int type) throws RepositoryException; > + boolean hasMember(AuthorizableImpl authorizable) throws RepositoryException; > } > > private class PropertyBasedMembershipProvider implements MembershipProvider { > @@ -413,6 +424,21 @@ class GroupImpl extends AuthorizableImpl > } > } > > + public boolean hasMember(AuthorizableImpl authorizable) throws RepositoryException { > + if (node.hasProperty(P_MEMBERS)) { > + Value[] members = node.getProperty(P_MEMBERS).getValues(); > + for (Value v : members) { > + if (authorizable.getNode().getIdentifier().equals(v.getString())) { > + return true; > + } > + } > + return false; > + } > + else { > + return false; > + } > + } > + > } > > private class NodeBasedMembershipProvider implements MembershipProvider { > @@ -510,6 +536,16 @@ class GroupImpl extends AuthorizableImpl > } > } > > + public boolean hasMember(AuthorizableImpl authorizable) throws RepositoryException { > + if (node.hasNode(N_MEMBERS)) { > + PropertySequence members = getPropertySequence(node.getNode(N_MEMBERS), userManager); > + return members.hasItem(authorizable.getID()); > + } > + else { > + return false; > + } > + } > + > } > > // -----------------------------------------------------< utility >--- > > Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java > URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java?rev=1031115&r1=1031114&r2=1031115&view=diff > ============================================================================== > --- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java (original) > +++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java Thu Nov 4 18:07:28 2010 > @@ -258,6 +258,43 @@ public class GroupTest extends AbstractU > } > } > > + public void testIsDeclaredMember() throws RepositoryException, NotExecutableException { > + User auth = getTestUser(superuser); > + Group newGroup1 = null; > + Group newGroup2 = null; > + try { > + newGroup1 = userMgr.createGroup(getTestPrincipal()); > + newGroup2 = userMgr.createGroup(getTestPrincipal()); > + save(superuser); > + > + assertFalse(newGroup1.isDeclaredMember(auth)); > + assertFalse(newGroup2.isDeclaredMember(auth)); > + > + assertTrue(newGroup2.addMember(auth)); > + save(superuser); > + assertTrue(newGroup2.isDeclaredMember(auth)); > + assertTrue(newGroup2.isDeclaredMember(userMgr.getAuthorizable(auth.getID()))); > + > + assertTrue(newGroup1.addMember(newGroup2)); > + save(superuser); > + assertTrue(newGroup1.isDeclaredMember(newGroup2)); > + assertTrue(newGroup1.isDeclaredMember(userMgr.getAuthorizable(newGroup2.getID()))); > + assertTrue(newGroup1.isMember(auth)); > + assertTrue(newGroup1.isMember(userMgr.getAuthorizable(auth.getID()))); > + assertFalse(newGroup1.isDeclaredMember(auth)); > + assertFalse(newGroup1.isDeclaredMember(userMgr.getAuthorizable(auth.getID()))); > + } finally { > + if (newGroup1 != null) { > + newGroup1.remove(); > + save(superuser); > + } > + if (newGroup2 != null) { > + newGroup2.remove(); > + save(superuser); > + } > + } > + } > + > public void testAddMemberTwice() throws NotExecutableException, RepositoryException { > User auth = getTestUser(superuser); > Group newGroup = null; > @@ -532,4 +569,5 @@ public class GroupTest extends AbstractU > assertFalse(groupId.equals(it.next().getID())); > } > } > + > } > \ No newline at end of file > >