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"