Author: snoopdave
Date: Wed Aug 29 10:45:11 2007
New Revision: 570876

URL: http://svn.apache.org/viewvc?rev=570876&view=rev
Log:
More progress on permssions, adding support for pending permissions

Part of Externalizing User Management proposal:
http://opensource.atlassian.com/projects/roller/browse/ROL-1534

Modified:
    
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/UserManager.java
    
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
    
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.java
    
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.orm.xml
    
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
    
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/TestUtils.java
    
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/business/PermissionTest.java

Modified: 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/UserManager.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/UserManager.java?rev=570876&r1=570875&r2=570876&view=diff
==============================================================================
--- 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/UserManager.java
 (original)
+++ 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/UserManager.java
 Wed Aug 29 10:45:11 2007
@@ -214,16 +214,31 @@
     
     
     /**
+     * Get all of user's pending weblog permissions.
+     */
+    public List<WeblogPermission> getWeblogPermissionsPending(User user) 
+            throws WebloggerException;
+    
+    
+    /**
      * Get all permissions associated with a weblog.
      */
     public List<WeblogPermission> getWeblogPermissions(Weblog weblog) 
             throws WebloggerException;
     
+    
+    /**
+     * Get all pending permissions associated with a weblog.
+     */
+    public List<WeblogPermission> getWeblogPermissionsPending(Weblog weblog) 
+            throws WebloggerException;
+    
+    
     /**
      * Get user's permission within a weblog or null if none.
      */
     public WeblogPermission getWeblogPermission(Weblog weblog, User user) 
-            throws WebloggerException;
+            throws WebloggerException;        
     
     
     //--------------------------------------------------------------- role CRUD

Modified: 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java?rev=570876&r1=570875&r2=570876&view=diff
==============================================================================
--- 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
 (original)
+++ 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
 Wed Aug 29 10:45:11 2007
@@ -35,9 +35,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
-import java.util.Collection;
 import java.util.Comparator;
-import java.util.Set;
 import javax.persistence.Query;
 import org.apache.roller.weblogger.business.Weblogger;
 
@@ -455,7 +453,7 @@
 
     
     public WeblogPermission getWeblogPermission(Weblog weblog, User user) 
throws WebloggerException {
-        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId");
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId&NotPending");
         q.setParameter(1, user.getUserName());
         q.setParameter(2, weblog.getHandle());
         try {
@@ -529,6 +527,20 @@
     }
     
     
+    public List<WeblogPermission> getWeblogPermissionsPending(User user) 
throws WebloggerException {
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&Pending");
+        q.setParameter(1, user.getUserName());
+        return (List<WeblogPermission>)q.getResultList();
+    }
+    
+
+    public List<WeblogPermission> getWeblogPermissionsPending(Weblog weblog) 
throws WebloggerException {
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByWeblogId&Pending");
+        q.setParameter(1, weblog.getHandle());
+        return (List<WeblogPermission>)q.getResultList();
+    }
+    
+    
     //-------------------------------------------------------------- role CRUD
  
     
@@ -736,6 +748,7 @@
         return (WeblogUserPermission)this.strategy.load(
                 WeblogUserPermission.class, inviteId);
     }
+
 }
 
 

Modified: 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.java?rev=570876&r1=570875&r2=570876&view=diff
==============================================================================
--- 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.java
 (original)
+++ 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.java
 Wed Aug 29 10:45:11 2007
@@ -35,12 +35,13 @@
 public abstract class ObjectPermission extends RollerPermission {
     private static Log log = LogFactory.getLog(ObjectPermission.class);
 
-    protected String       id = UUIDGenerator.generateUUID();;
-    protected String       userName;
-    protected String       actions;
-    protected String       objectType;
-    protected String       objectId;
-    protected Date         dateCreated = new Date();
+    protected String  id = UUIDGenerator.generateUUID();;
+    protected String  userName;
+    protected String  actions;
+    protected String  objectType;
+    protected String  objectId;
+    protected boolean pending = false;
+    protected Date    dateCreated = new Date();
     
     
     public ObjectPermission() {
@@ -158,6 +159,14 @@
 
     public void setDateCreated(Date dateCreated) {
         this.dateCreated = dateCreated;
+    }
+
+    public boolean isPending() {
+        return pending;
+    }
+
+    public void setPending(boolean pending) {
+        this.pending = pending;
     }
 
 }

Modified: 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.orm.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.orm.xml?rev=570876&r1=570875&r2=570876&view=diff
==============================================================================
--- 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.orm.xml
 (original)
+++ 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/ObjectPermission.orm.xml
 Wed Aug 29 10:45:11 2007
@@ -30,6 +30,9 @@
             <basic name="actions">
                 <column name="actions"/>
             </basic>
+            <basic name="pending">
+                <column name="pending"/>
+            </basic>
             <basic name="dateCreated">
                 <column name="datecreated"/>
             </basic>

Modified: 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml?rev=570876&r1=570875&r2=570876&view=diff
==============================================================================
--- 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
 (original)
+++ 
roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
 Wed Aug 29 10:45:11 2007
@@ -17,16 +17,29 @@
             <query>SELECT p FROM WeblogPermission p</query>
         </named-query>
         
-        <named-query name="WeblogPermission.getByUsername">
-            <query>SELECT p FROM WeblogPermission p WHERE p.userName = 
?1</query>
+        <named-query name="WeblogPermission.getByUserName">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.pending &lt;&gt; TRUE</query>
         </named-query>
         
         <named-query name="WeblogPermission.getByWeblogId">
-            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = 
?1</query>
+            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = ?1 AND 
p.pending &lt;&gt; TRUE</query>
         </named-query>
         
         <named-query name="WeblogPermission.getByUserName&amp;WeblogId">
             <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.objectId = ?2</query>
+        </named-query>
+        
+        <named-query 
name="WeblogPermission.getByUserName&amp;WeblogId&amp;NotPending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.objectId = ?2 AND p.pending &lt;&gt; true</query>
+        </named-query>
+
+        
+        <named-query name="WeblogPermission.getByUserName&amp;Pending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.pending = TRUE</query>
+        </named-query>
+        
+        <named-query name="WeblogPermission.getByWeblogId&amp;Pending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = ?1 AND 
p.pending = true</query>
         </named-query>
         
     </entity>

Modified: 
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/TestUtils.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/TestUtils.java?rev=570876&r1=570875&r2=570876&view=diff
==============================================================================
--- 
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/TestUtils.java
 (original)
+++ 
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/TestUtils.java
 Wed Aug 29 10:45:11 2007
@@ -46,6 +46,7 @@
 import org.apache.roller.weblogger.pojos.WeblogCategory;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.WeblogPermission;
 
 /**
  * Utility class for unit test classes.
@@ -217,14 +218,19 @@
     /**
      * Convenience method for removing a permission.
      */
-    public static void teardownPermissions(String id) throws Exception {
+    public static void teardownPermissions(WeblogPermission perm) throws 
Exception {
         
         // lookup the permissions
         UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
-        WeblogUserPermission perm = mgr.getPermissions(id);
+        
+        // add all actions so permission object will be completely removed
+        perm.setActions(
+                  WeblogPermission.ADMIN + "," 
+                + WeblogPermission.POST + ","
+                + WeblogPermission.EDIT_DRAFT);
         
         // remove the permissions
-        mgr.removePermissions(perm);
+        mgr.revokeWeblogPermission(perm);
         
         // flush to db
         WebloggerFactory.getWeblogger().flush();

Modified: 
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/business/PermissionTest.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/business/PermissionTest.java?rev=570876&r1=570875&r2=570876&view=diff
==============================================================================
--- 
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/business/PermissionTest.java
 (original)
+++ 
roller/branches/roller_4.1_dev/apps/weblogger/test/java/org/apache/roller/weblogger/business/PermissionTest.java
 Wed Aug 29 10:45:11 2007
@@ -95,7 +95,7 @@
     /**
      * Test basic persistence operations ... Create, Update, Delete.
      */
-    public void testPermissionsCRUD2() throws Exception {
+    public void testPermissionsCRUD() throws Exception {
         
         log.info("BEGIN");
         
@@ -146,16 +146,17 @@
         assertTrue(perm.hasAction(WeblogPermission.ADMIN));
         TestUtils.endSession(true);
         
-        // revoke those same permissions, add limited permission
+        // revoke those same permissions
         mgr.revokeWeblogPermission(perm);
         TestUtils.endSession(true);
         
+        // add only draft permission
         WeblogPermission draft = new WeblogPermission(testWeblog, testUser, 
             WeblogPermission.EDIT_DRAFT);
         mgr.grantWeblogPermission(draft);
         TestUtils.endSession(true);
 
-        // check that update was successful
+        // check that user has draft permisson only
         testWeblog = TestUtils.getManagedWebsite(testWeblog);
         testUser = TestUtils.getManagedUser(testUser);
         perm = null;
@@ -166,137 +167,73 @@
         assertFalse(perm.hasAction(WeblogPermission.ADMIN));
         
         log.info("END");
-    }
+    }  
+    
     
     /**
-     * Test basic persistence operations ... Create, Update, Delete.
+     * Test lookup mechanisms.
      */
-    public void _testPermissionsCRUD() throws Exception {
+    public void testPermissionsLookups() throws Exception {
         
         log.info("BEGIN");
         
-        UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
-        WeblogUserPermission perm = null;
-                
-        // delete permissions
-        testWeblog = TestUtils.getManagedWebsite(testWeblog);
-        testUser = TestUtils.getManagedUser(testUser);
-        perm = mgr.getPermissions(testWeblog, testUser);
-        assertNotNull(perm);
-        mgr.removePermissions(perm);
+        // we need a second user for this test
+        User user = TestUtils.setupUser("testPermissionsLookups");
         TestUtils.endSession(true);
-        
-        // check that delete was successful
-        perm = null;
-        testWeblog = TestUtils.getManagedWebsite(testWeblog);
-        testUser = TestUtils.getManagedUser(testUser);
-        perm = mgr.getPermissions(testWeblog, testUser);
-        assertNull(perm);
-        
-        // create permissions
-        perm = new WeblogUserPermission();
-        perm.setUser(testUser);
-        perm.setWebsite(testWeblog);
-        perm.setPending(false);
-        perm.setPermissionMask(WeblogUserPermission.ADMIN);
-        mgr.savePermissions(perm);
+
+        UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
+        WeblogPermission perm = null;
+        List<WeblogPermission> perms = null;
+
+        // get all permissions for a user
+        perms = mgr.getWeblogPermissions(TestUtils.getManagedUser(user));
+        assertEquals(0, perms.size());
+        perms = mgr.getWeblogPermissions(TestUtils.getManagedUser(testUser));
+        assertEquals(1, perms.size());
+
+        // get all permissions for a weblog
+        perms = 
mgr.getWeblogPermissions(TestUtils.getManagedWebsite(testWeblog));
+        assertEquals(1, perms.size());
+
+        perm = new WeblogPermission(
+            TestUtils.getManagedWebsite(testWeblog), 
+            TestUtils.getManagedUser(user),
+            WeblogPermission.POST);
+        perm.setPending(true);
+        mgr.grantWeblogPermission(perm);
         TestUtils.endSession(true);
-        
-        // check that create was successful
-        testWeblog = TestUtils.getManagedWebsite(testWeblog);
-        testUser = TestUtils.getManagedUser(testUser);
+
+        // get pending permissions for a user
+        perms = 
mgr.getWeblogPermissionsPending(TestUtils.getManagedUser(testUser));
+        assertEquals(0, perms.size());
+        perms = 
mgr.getWeblogPermissionsPending(TestUtils.getManagedUser(user));
+        assertEquals(1, perms.size());
+
+        // get pending permissions for a weblog
+        perms = 
mgr.getWeblogPermissionsPending(TestUtils.getManagedWebsite(testWeblog));
+        assertEquals(1, perms.size());            
+
+        // get permissions for a specific user/weblog
         perm = null;
-        perm = mgr.getPermissions(testWeblog, testUser);
+        perm = mgr.getWeblogPermission(
+                TestUtils.getManagedWebsite(testWeblog), 
+                TestUtils.getManagedUser(testUser));
         assertNotNull(perm);
-        assertEquals(WeblogUserPermission.ADMIN, perm.getPermissionMask());
-        
-        // update permissions
-        perm.setPermissionMask(WeblogUserPermission.LIMITED);
-        mgr.savePermissions(perm);
-        TestUtils.endSession(true);
+        assertTrue(perm.hasAction(WeblogPermission.ADMIN));
 
-        // check that update was successful
-        testWeblog = TestUtils.getManagedWebsite(testWeblog);
-        testUser = TestUtils.getManagedUser(testUser);
+        // pending permissions should not be visible
         perm = null;
-        perm = mgr.getPermissions(testWeblog, testUser);
-        assertNotNull(perm);
-        assertEquals(WeblogUserPermission.LIMITED, perm.getPermissionMask());
-        
-        log.info("END");
-    }
-    
-    
-    /**
-     * Test lookup mechanisms.
-     */
-    public void _testPermissionsLookups() throws Exception {
-        
-        log.info("BEGIN");
+        perm = mgr.getWeblogPermission(
+                TestUtils.getManagedWebsite(testWeblog), 
+                TestUtils.getManagedUser(user));
+        assertNull(perm);
         
-        try {
-            // we need a second user for this test
-            User user = TestUtils.setupUser("testPermissionsLookups");
-            TestUtils.endSession(true);
-            
-            UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
-            WeblogUserPermission perm = null;
-            List perms = null;
-            
-            // get all permissions for a user
-            perms = mgr.getAllPermissions(TestUtils.getManagedUser(user));
-            assertEquals(0, perms.size());
-            perms = mgr.getAllPermissions(TestUtils.getManagedUser(testUser));
-            assertEquals(1, perms.size());
-            
-            // get all permissions for a weblog
-            perms = 
mgr.getAllPermissions(TestUtils.getManagedWebsite(testWeblog));
-            assertEquals(1, perms.size());
-            
-            perm = new WeblogUserPermission();
-            perm.setUser(TestUtils.getManagedUser(user));
-            perm.setWebsite(TestUtils.getManagedWebsite(testWeblog));
-            perm.setPending(true);
-            perm.setPermissionMask(WeblogUserPermission.AUTHOR);
-            mgr.savePermissions(perm);
-            TestUtils.endSession(true);
-            
-            // get pending permissions for a user
-            perms = 
mgr.getPendingPermissions(TestUtils.getManagedUser(testUser));
-            assertEquals(0, perms.size());
-            perms = mgr.getPendingPermissions(TestUtils.getManagedUser(user));
-            assertEquals(1, perms.size());
-            
-            // get pending permissions for a weblog
-            perms = 
mgr.getPendingPermissions(TestUtils.getManagedWebsite(testWeblog));
-            assertEquals(1, perms.size());
-            
-            // get permissions by id
-            String id = perm.getId();
-            perm = null;
-            perm = mgr.getPermissions(id);
-            assertNotNull(perm);
-            assertEquals(id, perm.getId());
-            
-            // get permissions for a specific user/weblog
-            perm = null;
-            perm = mgr.getPermissions(TestUtils.getManagedWebsite(testWeblog), 
TestUtils.getManagedUser(testUser));
-            assertNotNull(perm);
-            assertEquals(WeblogUserPermission.ADMIN, perm.getPermissionMask());
-            perm = null;
-            perm = mgr.getPermissions(TestUtils.getManagedWebsite(testWeblog), 
TestUtils.getManagedUser(user));
-            assertNotNull(perm);
-            assertEquals(WeblogUserPermission.AUTHOR, 
perm.getPermissionMask());
-            assertEquals(true, perm.isPending());
-            
-            // cleanup
-            TestUtils.teardownPermissions(perm.getId());
-            TestUtils.teardownUser(user.getId());
-            TestUtils.endSession(true);
-        } catch(Throwable t) {
-            log.error("Error running test", t);
-            throw (Exception) t;
-        }
+        List<WeblogPermission> pendings = 
mgr.getWeblogPermissionsPending(user);
+
+        // cleanup
+        TestUtils.teardownPermissions(pendings.get(0));
+        TestUtils.teardownUser(user.getId());
+        TestUtils.endSession(true);
         
         log.info("END");
     }


Reply via email to