Author: carlos Date: Sat Sep 9 15:59:18 2006 New Revision: 441871 URL: http://svn.apache.org/viewvc?view=rev&rev=441871 Log: Change signature of getUsersInstancePermissions
Added: maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java (with props) Modified: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AcegiUserManager.java maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AclManager.java Modified: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AcegiUserManager.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AcegiUserManager.java?view=diff&rev=441871&r1=441870&r2=441871 ============================================================================== --- maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AcegiUserManager.java (original) +++ maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AcegiUserManager.java Sat Sep 9 15:59:18 2006 @@ -16,8 +16,14 @@ * limitations under the License. */ +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import org.acegisecurity.acl.basic.BasicAclEntry; +import org.acegisecurity.acl.basic.SimpleAclEntry; +import org.apache.maven.user.model.InstancePermissions; import org.apache.maven.user.model.PasswordRuleViolationException; import org.apache.maven.user.model.Permission; import org.apache.maven.user.model.User; @@ -44,7 +50,7 @@ /** * @plexus.requirement */ - private AclManager aclEventHandler; + private AclManager aclManager; public void setUserManager( UserManager userManager ) { @@ -56,6 +62,78 @@ return userManager; } + public void setAclManager( AclManager aclManager ) + { + this.aclManager = aclManager; + } + + public AclManager getAclManager() + { + return aclManager; + } + + public List getUsersInstancePermissions( Class clazz, Object id ) + { + List userPermissions = getUserManager().getUsersInstancePermissions( clazz, id ); + + BasicAclEntry[] acls = getAclManager().getAcls( clazz, id ); + + /* put ACLs in a map indexed by username, transforming from BasicAclEntry to InstancePermissions */ + Map aclsByUserName = new HashMap(); + for ( int i = 0; i < acls.length; i++ ) + { + BasicAclEntry acl = acls[i]; + String recipient = (String) acl.getRecipient(); + + BasicAclEntry p = (BasicAclEntry) aclsByUserName.get( recipient ); + if ( p != null ) + { + throw new IllegalStateException( "There is more than one ACL for user '" + recipient + "': " + p + + " and " + acl ); + } + + aclsByUserName.put( recipient, p ); + } + + /* add permissions to each user, and then return a List with permissions */ + Iterator it = userPermissions.iterator(); + while ( it.hasNext() ) + { + InstancePermissions p = (InstancePermissions) it.next(); + BasicAclEntry acl = (BasicAclEntry) aclsByUserName.get( p.getUser().getUsername() ); + if ( acl != null ) + { + aclToPermission( acl, p ); + } + } + return userPermissions; + } + + private InstancePermissions aclToPermission( BasicAclEntry acl, InstancePermissions p ) + { + if ( acl.isPermitted( SimpleAclEntry.CREATE ) ) + { + p.setBuild( true ); + } + if ( acl.isPermitted( SimpleAclEntry.DELETE ) ) + { + p.setDelete( true ); + } + if ( acl.isPermitted( SimpleAclEntry.READ ) ) + { + p.setView( true ); + } + if ( acl.isPermitted( SimpleAclEntry.WRITE ) ) + { + p.setEdit( true ); + } + return p; + } + + //----------------------------------------------------------------------- + // delegation methods + //----------------------------------------------------------------------- + public Permission addPermission( Permission perm ) { return getUserManager().addPermission( perm ); @@ -122,11 +200,6 @@ return getUserManager().getUsers(); } - public List getUsersInstancePermissions() - { - return getUserManager().getUsersInstancePermissions(); - } - public boolean login( String username, String rawpassword ) { return getUserManager().login( username, rawpassword ); @@ -162,7 +235,7 @@ { getUserManager().updateUserGroup( userGroup ); } - + public User getMyUser() { return getUserManager().getMyUser(); Modified: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AclManager.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AclManager.java?view=diff&rev=441871&r1=441870&r2=441871 ============================================================================== --- maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AclManager.java (original) +++ maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AclManager.java Sat Sep 9 15:59:18 2006 @@ -55,24 +55,24 @@ getAclDao().create( aclEntry ); } - protected void delete( Class clazz, int id ) + protected void delete( Class clazz, Object id ) { getAclDao().delete( createObjectIdentity( clazz, id ) ); } - protected NamedEntityObjectIdentity createObjectIdentity( Class clazz, int id ) + protected NamedEntityObjectIdentity createObjectIdentity( Class clazz, Object id ) { - return new NamedEntityObjectIdentity( clazz.getName(), Integer.toString( id ) ); + return new NamedEntityObjectIdentity( clazz.getName(), id.toString() ); } - public BasicAclEntry[] getAcls( Class clazz, int id ) + public BasicAclEntry[] getAcls( Class clazz, Object id ) { NamedEntityObjectIdentity objectIdentity = createObjectIdentity( clazz, id ); BasicAclEntry[] acls = getAclDao().getAcls( objectIdentity ); return acls; } - public BasicAclEntry getAcl( Class clazz, int id, String userName ) + public BasicAclEntry getAcl( Class clazz, Object id, String userName ) { BasicAclEntry[] acls = getAcls( clazz, id ); for ( int i = 0; i < acls.length; i++ ) @@ -85,7 +85,7 @@ return null; } - public void setPermissions( Class clazz, int id, String userName, int permissions, AclObjectIdentity parentAclId ) + public void setPermissions( Class clazz, Object id, String userName, int permissions, AclObjectIdentity parentAclId ) { BasicAclEntry acl = getAcl( clazz, id, userName ); NamedEntityObjectIdentity objectIdentity = createObjectIdentity( clazz, id ); Added: maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java?view=auto&rev=441871 ============================================================================== --- maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java (added) +++ maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java Sat Sep 9 15:59:18 2006 @@ -0,0 +1,84 @@ +package org.apache.maven.user.acegi; + +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.util.ArrayList; +import java.util.List; + +import org.acegisecurity.acl.basic.BasicAclEntry; +import org.acegisecurity.acl.basic.BasicAclExtendedDao; +import org.acegisecurity.acl.basic.SimpleAclEntry; +import org.apache.maven.user.model.InstancePermissions; +import org.apache.maven.user.model.User; +import org.apache.maven.user.model.UserManager; +import org.jmock.Mock; +import org.jmock.MockObjectTestCase; + +/** + * Test for [EMAIL PROTECTED] AcegiUserManager} + * + * @author <a href="mailto:[EMAIL PROTECTED]">Carlos Sanchez</a> + * @version $Id$ + */ +public class AcegiUserManagerTest + extends MockObjectTestCase +{ + private AcegiUserManager manager; + + private Mock delegate, dao; + + protected void setUp() + throws Exception + { + super.setUp(); + manager = new AcegiUserManager(); + delegate = mock( UserManager.class ); + manager.setUserManager( (UserManager) delegate.proxy() ); + + dao = mock( BasicAclExtendedDao.class ); + AclManager aclManager = new AclManager(); + aclManager.setAclDao( (BasicAclExtendedDao) dao.proxy() ); + manager.setAclManager( aclManager ); + } + + public void testGetUsersInstancePermissions() + { + List users = new ArrayList(); + User u = new User(); + InstancePermissions p = new InstancePermissions( u ); + users.add( p ); + delegate.expects( once() ).method( "getUsersInstancePermissions" ).will( returnValue( users ) ); + + BasicAclEntry[] acls = new BasicAclEntry[1]; + acls[0] = new SimpleAclEntry(); + dao.expects( once() ).method( "getAcls" ).will( returnValue( acls ) ); + + List usersInstancePermissions = manager.getUsersInstancePermissions( User.class, new Integer( 1 ) ); + + assertNotNull( usersInstancePermissions ); + assertEquals( 1, usersInstancePermissions.size() ); + + p = (InstancePermissions) usersInstancePermissions.iterator().next(); + + assertEquals( u, p.getUser() ); + assertFalse( p.isBuild() ); + assertFalse( p.isDelete() ); + assertFalse( p.isEdit() ); + assertFalse( p.isView() ); + } + +} Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"