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 21:11:38 UTC

svn commit: r441989 - in /maven/shared/trunk/maven-user/maven-user-acegi/src: main/java/org/apache/maven/user/acegi/ main/java/org/apache/maven/user/acegi/acl/basic/ test/java/org/apache/maven/user/acegi/ test/java/org/apache/maven/user/acegi/acl/basic/

Author: carlos
Date: Sun Sep 10 12:11:37 2006
New Revision: 441989

URL: http://svn.apache.org/viewvc?view=rev&rev=441989
Log:
Added ExtendedSimpleAclEntry to allow more combinations of permissions

Added:
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntry.java   (with props)
    maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntryTest.java   (with props)
Modified:
    maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/AclManager.java
    maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java

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=441989&r1=441988&r2=441989
==============================================================================
--- 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 Sun Sep 10 12:11:37 2006
@@ -25,7 +25,7 @@
 import org.acegisecurity.acl.basic.BasicAclEntry;
 import org.acegisecurity.acl.basic.BasicAclExtendedDao;
 import org.acegisecurity.acl.basic.NamedEntityObjectIdentity;
-import org.acegisecurity.acl.basic.SimpleAclEntry;
+import org.apache.maven.user.acegi.acl.basic.ExtendedSimpleAclEntry;
 import org.apache.maven.user.model.InstancePermissions;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
@@ -111,7 +111,7 @@
                     + " and " + acl );
             }
 
-            aclsByUserName.put( recipient, p );
+            aclsByUserName.put( recipient, acl );
         }
 
         /* add permissions to each user, and then return a List with permissions */
@@ -149,13 +149,13 @@
             if ( acl == null )
             {
                 NamedEntityObjectIdentity objectIdentity = createObjectIdentity( clazz, id );
-                acl = new SimpleAclEntry();
+                acl = new ExtendedSimpleAclEntry();
                 acl.setAclObjectIdentity( objectIdentity );
                 //acl.setAclObjectParentIdentity( parentAclId );
                 permissionToAcl( p, acl );
 
                 /* create the ACL only if it has any permission */
-                if ( acl.getMask() != SimpleAclEntry.NOTHING )
+                if ( acl.getMask() != ExtendedSimpleAclEntry.NOTHING )
                 {
                     getAclDao().create( acl );
                 }
@@ -165,7 +165,7 @@
                 permissionToAcl( p, acl );
 
                 /* delete the ACL if it has no permissions */
-                if ( acl.getMask() != SimpleAclEntry.NOTHING )
+                if ( acl.getMask() != ExtendedSimpleAclEntry.NOTHING )
                 {
                     getAclDao().changeMask( acl.getAclObjectIdentity(), userName, new Integer( acl.getMask() ) );
                 }
@@ -179,35 +179,35 @@
 
     private void permissionToAcl( InstancePermissions p, BasicAclEntry basicAcl )
     {
-        if ( !( basicAcl instanceof SimpleAclEntry ) )
+        if ( !( basicAcl instanceof ExtendedSimpleAclEntry ) )
         {
-            throw new IllegalArgumentException( "Can't create ACLs other than " + SimpleAclEntry.class );
+            throw new IllegalArgumentException( "Can't create ACLs other than " + ExtendedSimpleAclEntry.class );
         }
 
-        SimpleAclEntry acl = (SimpleAclEntry) basicAcl;
+        ExtendedSimpleAclEntry acl = (ExtendedSimpleAclEntry) basicAcl;
 
         acl.setRecipient( p.getUser().getUsername() );
-        acl.setMask( SimpleAclEntry.NOTHING );
+        acl.setMask( ExtendedSimpleAclEntry.NOTHING );
 
         if ( p.isExecute() )
         {
-            acl.addPermission( SimpleAclEntry.CREATE );
+            acl.addPermission( ExtendedSimpleAclEntry.CREATE );
         }
         if ( p.isDelete() )
         {
-            acl.addPermission( SimpleAclEntry.DELETE );
+            acl.addPermission( ExtendedSimpleAclEntry.DELETE );
         }
         if ( p.isRead() )
         {
-            acl.addPermission( SimpleAclEntry.READ );
+            acl.addPermission( ExtendedSimpleAclEntry.READ );
         }
         if ( p.isWrite() )
         {
-            acl.addPermission( SimpleAclEntry.WRITE );
+            acl.addPermission( ExtendedSimpleAclEntry.WRITE );
         }
         if ( p.isAdminister() )
         {
-            acl.addPermission( SimpleAclEntry.ADMINISTRATION );
+            acl.addPermission( ExtendedSimpleAclEntry.ADMINISTRATION );
         }
     }
 
@@ -219,23 +219,23 @@
      */
     private void aclToPermission( BasicAclEntry acl, InstancePermissions p )
     {
-        if ( acl.isPermitted( SimpleAclEntry.CREATE ) )
+        if ( acl.isPermitted( ExtendedSimpleAclEntry.CREATE ) )
         {
             p.setExecute( true );
         }
-        if ( acl.isPermitted( SimpleAclEntry.DELETE ) )
+        if ( acl.isPermitted( ExtendedSimpleAclEntry.DELETE ) )
         {
             p.setDelete( true );
         }
-        if ( acl.isPermitted( SimpleAclEntry.READ ) )
+        if ( acl.isPermitted( ExtendedSimpleAclEntry.READ ) )
         {
             p.setRead( true );
         }
-        if ( acl.isPermitted( SimpleAclEntry.WRITE ) )
+        if ( acl.isPermitted( ExtendedSimpleAclEntry.WRITE ) )
         {
             p.setWrite( true );
         }
-        if ( acl.isPermitted( SimpleAclEntry.ADMINISTRATION ) )
+        if ( acl.isPermitted( ExtendedSimpleAclEntry.ADMINISTRATION ) )
         {
             p.setAdminister( true );
         }

Added: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntry.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntry.java?view=auto&rev=441989
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntry.java (added)
+++ maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntry.java Sun Sep 10 12:11:37 2006
@@ -0,0 +1,77 @@
+package org.apache.maven.user.acegi.acl.basic;
+
+/*
+ * Copyright 2001-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.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.acegisecurity.acl.basic.SimpleAclEntry;
+
+/**
+ * Extends {@link SimpleAclEntry} to allow more combinations of permissions.
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ExtendedSimpleAclEntry
+    extends SimpleAclEntry
+{
+
+    public static final int EXECUTE = CREATE;
+
+    public static final int READ_WRITE_EXECUTE_DELETE = READ_WRITE_CREATE_DELETE;
+
+    public static final int READ_WRITE_EXECUTE = READ_WRITE_CREATE;
+
+    public static final int READ_EXECUTE = READ | EXECUTE;
+
+    public static final int WRITE_EXECUTE = WRITE | EXECUTE;
+
+    private static final int[] BASIC_PERMISSIONS = { NOTHING, ADMINISTRATION, READ, WRITE, EXECUTE, DELETE };
+
+    private static final int[] VALID_PERMISSIONS;
+
+    static
+    {
+        Set l = new TreeSet();
+        for ( int i = 0; i < BASIC_PERMISSIONS.length; i++ )
+        {
+            for ( int j = i; j < BASIC_PERMISSIONS.length; j++ )
+            {
+                l.add( new Integer( BASIC_PERMISSIONS[i] | BASIC_PERMISSIONS[j] ) );
+            }
+        }
+
+        int k = 0;
+        VALID_PERMISSIONS = new int[l.size()];
+        Iterator it = l.iterator();
+        while ( it.hasNext() )
+        {
+            Integer i = (Integer) it.next();
+            VALID_PERMISSIONS[k++] = i.intValue();
+        }
+    }
+
+    /**
+     * @return a copy of the permissions array, changes to the values won't affect this class.
+     */
+    public int[] getValidPermissions()
+    {
+        return (int[]) VALID_PERMISSIONS.clone();
+    }
+}

Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/main/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntry.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 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=diff&rev=441989&r1=441988&r2=441989
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java (original)
+++ maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/AcegiUserManagerTest.java Sun Sep 10 12:11:37 2006
@@ -21,7 +21,7 @@
 
 import org.acegisecurity.acl.basic.BasicAclEntry;
 import org.acegisecurity.acl.basic.BasicAclExtendedDao;
-import org.acegisecurity.acl.basic.SimpleAclEntry;
+import org.apache.maven.user.acegi.acl.basic.ExtendedSimpleAclEntry;
 import org.apache.maven.user.model.InstancePermissions;
 import org.apache.maven.user.model.User;
 import org.apache.maven.user.model.UserManager;
@@ -70,7 +70,7 @@
         delegate.expects( once() ).method( "getUsersInstancePermissions" ).will( returnValue( users ) );
 
         BasicAclEntry[] acls = new BasicAclEntry[1];
-        acls[0] = new SimpleAclEntry();
+        acls[0] = new ExtendedSimpleAclEntry();
         dao.expects( once() ).method( "getAcls" ).will( returnValue( acls ) );
 
         List usersInstancePermissions = manager.getUsersInstancePermissions( User.class, new Integer( 1 ) );
@@ -95,7 +95,7 @@
         users.add( p );
 
         BasicAclEntry[] acls = new BasicAclEntry[1];
-        BasicAclEntry acl = new SimpleAclEntry();
+        BasicAclEntry acl = new ExtendedSimpleAclEntry();
         acl.setRecipient( user.getUsername() );
         acl.setAclObjectIdentity( aclManager.createObjectIdentity( User.class, new Integer( 1 ) ) );
         acls[0] = acl;
@@ -112,8 +112,8 @@
 
         /* read permission */
         p.setRead( true );
-        dao.expects( once() ).method( "changeMask" )
-            .with( ANYTHING, eq( user.getUsername() ), eq( SimpleAclEntry.READ ) );
+        dao.expects( once() ).method( "changeMask" ).with( ANYTHING, eq( user.getUsername() ),
+                                                           eq( ExtendedSimpleAclEntry.READ ) );
 
         manager.setUsersInstancePermissions( User.class, new Integer( 1 ), users );
         dao.verify();
@@ -130,8 +130,8 @@
 
         /* read permission */
         p.setRead( true );
-        acl.setMask( SimpleAclEntry.READ );
-        dao.expects( once() ).method( "create" ).with( hasProperty( "mask", eq( SimpleAclEntry.READ ) ) );
+        acl.setMask( ExtendedSimpleAclEntry.READ );
+        dao.expects( once() ).method( "create" ).with( hasProperty( "mask", eq( ExtendedSimpleAclEntry.READ ) ) );
 
         manager.setUsersInstancePermissions( User.class, new Integer( 1 ), users );
         dao.verify();

Added: maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntryTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntryTest.java?view=auto&rev=441989
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntryTest.java (added)
+++ maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntryTest.java Sun Sep 10 12:11:37 2006
@@ -0,0 +1,46 @@
+package org.apache.maven.user.acegi.acl.basic;
+
+/*
+ * Copyright 2001-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 junit.framework.TestCase;
+
+/**
+ * Test for {@link ExtendedSimpleAclEntry}.
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ExtendedSimpleAclEntryTest
+    extends TestCase
+{
+
+    private ExtendedSimpleAclEntry entry;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        entry = new ExtendedSimpleAclEntry();
+    }
+
+    public void testGetValidPermissions()
+    {
+        int[] validPermissions = entry.getValidPermissions();
+        assertEquals( 16, validPermissions.length );
+    }
+
+}

Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntryTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-acegi/src/test/java/org/apache/maven/user/acegi/acl/basic/ExtendedSimpleAclEntryTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"