Hi
Am Donnerstag, den 04.11.2010, 18:07 +0000 schrieb [email protected]:
> 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 <code>Authorizable</code> to test.
> + * @return <code>true</code> 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 <code>Authorizable</code> 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<Authorizable> 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
>
>