You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2006/09/10 00:59:19 UTC
svn commit: r441871 - in /maven/shared/trunk/maven-user/maven-user-acegi/src:
main/java/org/apache/maven/user/acegi/AcegiUserManager.java
main/java/org/apache/maven/user/acegi/AclManager.java
test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java
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 {@link AcegiUserManager}
+ *
+ * @author <a href="mailto:carlos@apache.org">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"