You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/06/10 21:11:51 UTC

svn commit: r190007 - in /incubator/roller/branches/roller_2.0: .classpath src/org/roller/business/UserManagerImpl.java src/org/roller/business/hibernate/HibernateUserManagerImpl.java src/org/roller/model/UserManager.java src/org/roller/pojos/WebsiteData.java tests/org/roller/business/PermissionsTest.java

Author: snoopdave
Date: Fri Jun 10 12:11:50 2005
New Revision: 190007

URL: http://svn.apache.org/viewcvs?rev=190007&view=rev
Log:
recreating Roller 2.0 branch in Subversion

Modified:
    incubator/roller/branches/roller_2.0/.classpath
    incubator/roller/branches/roller_2.0/src/org/roller/business/UserManagerImpl.java
    incubator/roller/branches/roller_2.0/src/org/roller/business/hibernate/HibernateUserManagerImpl.java
    incubator/roller/branches/roller_2.0/src/org/roller/model/UserManager.java
    incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java
    incubator/roller/branches/roller_2.0/tests/org/roller/business/PermissionsTest.java

Modified: incubator/roller/branches/roller_2.0/.classpath
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/.classpath?rev=190007&r1=190006&r2=190007&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/.classpath (original)
+++ incubator/roller/branches/roller_2.0/.classpath Fri Jun 10 12:11:50 2005
@@ -55,7 +55,6 @@
 	<classpathentry kind="lib" path="tools/buildtime/xercesImpl-2.3.0.jar"/>
 	<classpathentry kind="lib" path="tools/standard-1.0.3/lib/jaxen-full.jar"/>
 	<classpathentry sourcepath="/rome" kind="lib" path="tools/lib/rome-0.6.jar"/>
-	<classpathentry kind="lib" path="personal/postgresql.jar"/>
 	<classpathentry kind="lib" path="tools/struts-1.2.4/lib/commons-logging.jar"/>
 	<classpathentry kind="lib" path="tools/buildtime/junit-3.8.1.jar"/>
 	<classpathentry kind="lib" path="tools/buildtime/mockrunner-0.35/lib/nekohtml.jar"/>
@@ -66,5 +65,6 @@
 	<classpathentry kind="lib" path="tools/lib/commons-httpclient-2.0.2.jar"/>
 	<classpathentry sourcepath="/Users/dave/Desktop/lucene-1.4.1/src/java" kind="lib" path="tools/lib/lucene-1.4.3.jar"/>
 	<classpathentry kind="lib" path="tools/lib/xmlrpc-2.0.jar"/>
+	<classpathentry kind="lib" path="sandbox/standalone/lib/catalina.jar"/>
 	<classpathentry kind="output" path="classes.eclipse"/>
 </classpath>

Modified: incubator/roller/branches/roller_2.0/src/org/roller/business/UserManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/business/UserManagerImpl.java?rev=190007&r1=190006&r2=190007&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/business/UserManagerImpl.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/business/UserManagerImpl.java Fri Jun 10 12:11:50 2005
@@ -3,16 +3,24 @@
  */
 package org.roller.business;
 
+import java.io.IOException;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.roller.RollerException;
 import org.roller.model.BookmarkManager;
 import org.roller.model.Roller;
+import org.roller.model.RollerFactory;
 import org.roller.model.UserManager;
 import org.roller.model.WeblogManager;
 import org.roller.pojos.BookmarkData;
 import org.roller.pojos.FolderData;
 import org.roller.pojos.PageData;
+import org.roller.pojos.PermissionsData;
 import org.roller.pojos.RoleData;
 import org.roller.pojos.UserCookieData;
 import org.roller.pojos.UserData;
@@ -21,13 +29,6 @@
 import org.roller.util.RandomGUID;
 import org.roller.util.Utilities;
 
-import java.io.IOException;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import org.roller.model.RollerFactory;
-
 /**
  * Abstract base implementation using PersistenceStrategy.
  * @author Dave Johnson
@@ -414,5 +415,19 @@
             cookieString = cookie.getUsername() + "|" + cookie.getCookieId();
         }
         return cookieString;
+    }
+
+    /**
+     * Creates and stores a pending PermissionsData for user and website specified.
+     */
+    public PermissionsData inviteUser(WebsiteData website, 
+            UserData user, short mask) throws RollerException
+    {
+        PermissionsData perms = new PermissionsData();
+        perms.setWebsite(website);
+        perms.setUser(user);
+        perms.setPermissionMask(mask);
+        mStrategy.store(perms);
+        return perms;
     }
 }

Modified: incubator/roller/branches/roller_2.0/src/org/roller/business/hibernate/HibernateUserManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/business/hibernate/HibernateUserManagerImpl.java?rev=190007&r1=190006&r2=190007&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/business/hibernate/HibernateUserManagerImpl.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/business/hibernate/HibernateUserManagerImpl.java Fri Jun 10 12:11:50 2005
@@ -3,11 +3,16 @@
  */
 package org.roller.business.hibernate;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import net.sf.hibernate.Criteria;
 import net.sf.hibernate.HibernateException;
 import net.sf.hibernate.Session;
-import net.sf.hibernate.expression.Expression;
 import net.sf.hibernate.expression.EqExpression;
+import net.sf.hibernate.expression.Expression;
 import net.sf.hibernate.expression.Order;
 
 import org.apache.commons.logging.Log;
@@ -15,14 +20,15 @@
 import org.roller.RollerException;
 import org.roller.business.PersistenceStrategy;
 import org.roller.business.UserManagerImpl;
+import org.roller.model.AutoPingManager;
 import org.roller.model.BookmarkManager;
+import org.roller.model.PingQueueManager;
+import org.roller.model.PingTargetManager;
 import org.roller.model.RollerFactory;
 import org.roller.model.WeblogManager;
-import org.roller.model.AutoPingManager;
-import org.roller.model.PingTargetManager;
-import org.roller.model.PingQueueManager;
 import org.roller.pojos.FolderData;
 import org.roller.pojos.PageData;
+import org.roller.pojos.PermissionsData;
 import org.roller.pojos.RefererData;
 import org.roller.pojos.RoleData;
 import org.roller.pojos.UserCookieData;
@@ -33,11 +39,6 @@
 import org.roller.util.StringUtils;
 import org.roller.util.Utilities;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Hibernate queries.
  * @author David M Johnson
@@ -58,6 +59,22 @@
         mLogger.debug("Instantiating User Manager");
     }
     
+    /**
+     * Get websites of a user
+     */
+    public List getWebsites(UserData user, Boolean enabled) 
+    {
+        return null;
+    }
+    
+    /**
+     * Get users of a website
+     */
+    public List  getUsers(WebsiteData user)
+    {
+        return null;
+    }
+    
     /** 
      * Use Hibernate directly because Roller's Query API does too much allocation.
      */
@@ -428,5 +445,63 @@
         }
     }
 
+    /**
+     * Return permissions for specified user in website
+     */
+    public PermissionsData getPermissions(
+            WebsiteData website, UserData user) throws RollerException
+    {
+        Session session = ((HibernateStrategy)mStrategy).getSession();
+        Criteria criteria = session.createCriteria(PermissionsData.class);            
+        criteria.add(Expression.eq("website", website));
+        criteria.add(Expression.eq("user", user));
+        try
+        {
+            List list = criteria.list();
+            return list.size()!=0 ? (PermissionsData)list.get(0) : null;
+        }
+        catch (HibernateException e)
+        {
+            throw new RollerException(e);
+        }
+    }
+    
+    /** 
+     * Get pending permissions for user
+     */
+    public List getPendingPermissions(UserData user) throws RollerException
+    {
+        Session session = ((HibernateStrategy)mStrategy).getSession();
+        Criteria criteria = session.createCriteria(PermissionsData.class);            
+        criteria.add(Expression.eq("user", user));
+        criteria.add(Expression.eq("pending", Boolean.TRUE));
+        try
+        {
+            return criteria.list();
+        }
+        catch (HibernateException e)
+        {
+            throw new RollerException(e);
+        }
+    }
+    
+    /** 
+     * Get pending permissions for website
+     */
+    public List getPendingPermissions(WebsiteData website) throws RollerException
+    {
+        Session session = ((HibernateStrategy)mStrategy).getSession();
+        Criteria criteria = session.createCriteria(PermissionsData.class);            
+        criteria.add(Expression.eq("website", website));
+        criteria.add(Expression.eq("pending", Boolean.TRUE));
+        try
+        {
+            return criteria.list();
+        }
+        catch (HibernateException e)
+        {
+            throw new RollerException(e);
+        }
+    }
 }
 

Modified: incubator/roller/branches/roller_2.0/src/org/roller/model/UserManager.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/model/UserManager.java?rev=190007&r1=190006&r2=190007&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/model/UserManager.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/model/UserManager.java Fri Jun 10 12:11:50 2005
@@ -1,16 +1,17 @@
 
 package org.roller.model;
 
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
 import org.roller.RollerException;
 import org.roller.pojos.PageData;
+import org.roller.pojos.PermissionsData;
 import org.roller.pojos.RoleData;
 import org.roller.pojos.UserData;
 import org.roller.pojos.WebsiteData;
 
-import java.io.Serializable;
-import java.util.Map;
-import java.util.List;
-
 
 /**
  * Manages storage, retrieval, and querying of user, website, and page data.
@@ -19,6 +20,66 @@
  */
 public interface UserManager extends Serializable
 {
+    /** 
+     * Get user by name
+     * @param name Username of user
+     */
+    //public UserData getUserByName(String name);
+
+    /**
+     * Get all users or a website.
+     * @param website Get all users of this website (or null for all)
+     * @returns List of UserData objects.
+     */
+    public List getUsers(WebsiteData website);
+    
+    /** 
+     * Get website by name
+     * @param name Name of website
+     */
+    //public WebsiteData getWebsiteByName(String name);
+
+    /** 
+     * Get all websites of which user is a member
+     * @param user    Get all websites for this user (or null for all)
+     * @param enabled Get all with this enabled state (or null or all)
+     * @returns List of WebsiteData objects.
+     */
+    public List getWebsites(UserData user, Boolean enabled);
+
+    /** 
+     * Get pending permissions for user
+     * @param user User (not null)
+     * @returns List of PermissionsData objects.
+     */
+    public List getPendingPermissions(UserData user) throws RollerException;
+    
+    /** 
+     * Get pending permissions for website
+     * @param website Website (not null)
+     * @returns List of PermissionsData objects.
+     */
+    public List getPendingPermissions(WebsiteData user) throws RollerException;
+    
+    /**
+     * Get permissions of user in website
+     * @param website Website (not null)
+     * @param user    User (not null)
+     * @return        PermissionsData object
+     */
+    public PermissionsData getPermissions(
+            WebsiteData website, UserData user) throws RollerException;
+    
+    /**
+     * Invite user to join a website with specific permissions
+     * @param website Website to be joined (persistent instance) 
+     * @param user    User to be invited (persistent instance)
+     * @param perms   Permissions mask (see statics in PermissionsData)
+     * @return        New PermissionsData object, with pending=true
+     */
+    public PermissionsData inviteUser(
+            WebsiteData website, UserData user, short perms) throws RollerException;
+
     /** Release any resources used */
     public void release();
     

Modified: incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java?rev=190007&r1=190006&r2=190007&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java Fri Jun 10 12:11:50 2005
@@ -134,7 +134,7 @@
     }
 
     /**
-     * Id of owner.
+     * Original creator of website
      * @ejb:persistent-field
      * @hibernate.many-to-one column="userid" cascade="none" not-null="true"
      */

Modified: incubator/roller/branches/roller_2.0/tests/org/roller/business/PermissionsTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/tests/org/roller/business/PermissionsTest.java?rev=190007&r1=190006&r2=190007&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/tests/org/roller/business/PermissionsTest.java (original)
+++ incubator/roller/branches/roller_2.0/tests/org/roller/business/PermissionsTest.java Fri Jun 10 12:11:50 2005
@@ -1,28 +1,22 @@
 package org.roller.business; 
 
-import java.sql.Timestamp;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
- 
-import org.roller.RollerException;
+
 import org.roller.RollerPermissionsException;
+import org.roller.RollerTestBase;
 import org.roller.model.UserManager;
 import org.roller.model.WeblogManager;
 import org.roller.pojos.BookmarkData;
-import org.roller.pojos.CommentData;
 import org.roller.pojos.FolderData;
 import org.roller.pojos.PageData;
+import org.roller.pojos.PermissionsData;
 import org.roller.pojos.UserData;
-import org.roller.pojos.WeblogCategoryData;
 import org.roller.pojos.WeblogEntryData;
 import org.roller.pojos.WebsiteData;
-import org.roller.util.Utilities;
-import org.roller.RollerTestBase;
 
 /**
  * Test Roller Weblog Management.
@@ -221,5 +215,103 @@
         getRoller().rollback();
     }
     */
+    
+    /**
+     * Tests permissions object creation and invitations, specifically:
+     * <ul>
+     * <li> user can be invited to website </li>
+     * <li> can get list of invitations (pending permissions) for user </li>
+     * <li> can accept invitation by setting pending to false</li>
+     * <li> can get list of permissions from user </li>
+     * <li> can get list of permissions from website </li>
+     * </ul>
+     */
+    public void testInvitations()
+    {
+        try 
+        {
+            UserManager umgr = getRoller().getUserManager();
+            String userName = "testuser0";
+            String permsId;
+            
+            getRoller().begin();
+            {
+                // invite user to website
+                UserData tuser = umgr.getUser(userName);       
+                WebsiteData tsite = umgr.getWebsite(userName);
+                PermissionsData perms = umgr.inviteUser(
+                        tsite, tuser, PermissionsData.LIMITED);
+                permsId = perms.getId();
+            }
+            getRoller().commit();  
+            
+            getRoller().begin();
+            {
+                UserData tuser = umgr.getUser(userName);       
+                WebsiteData tsite = umgr.getWebsite(userName);
+                
+                // can get pending permission object
+                PermissionsData perms = umgr.getPermissions(tsite, tuser);
+                assertNotNull(perms);
+                assertTrue(perms.isPending());
+
+                // can get pending permission object via user
+                List invitations = umgr.getPendingPermissions(tuser);
+                PermissionsData pending = (PermissionsData)invitations.get(0);
+                assertTrue(pending.getId().equals(permsId));
+
+                // can get pending permission object via website
+                invitations = umgr.getPendingPermissions(tsite);
+                pending = (PermissionsData)invitations.get(0);
+                assertTrue(pending.getId().equals(permsId));
+
+                // accept invitation
+                pending.setPending(false);
+                pending.save();
+            }
+            getRoller().commit();
+            
+            getRoller().begin();
+            {
+                UserData tuser = umgr.getUser(userName);       
+                WebsiteData tsite = umgr.getWebsite(userName);
+
+                // assert that invitation list is empty
+                assertTrue(umgr.getPendingPermissions(tuser).isEmpty());
+                assertTrue(umgr.getPendingPermissions(tsite).isEmpty());
+
+                // assert that user is member of website
+                assertFalse(umgr.getPermissions(tsite, tuser).isPending());
+                
+                // assert that user has website
+                List websites = umgr.getWebsites(tuser, null);
+                assertEquals( tsite.getId(), 
+                              ((WebsiteData)websites.get(0)).getId());
+                
+                // assert that website has user
+                List users = umgr.getUsers(tsite);
+                assertEquals( tuser.getId(),
+                              ((UserData)users.get(0)).getId());
+            }
+            getRoller().commit();            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }               
+    }
+    
+    /**
+     * Test permissions removal and related cascades, specifically:
+     * <ul>
+     * <li> users can be removed from website
+     * <li> when user is deleted, permissions are deleted too </li>
+     * <li> when website is deleted, permissions are deleted too </li>
+     * </ul>
+     */
+     public void testPermissionsRemoval() 
+     {
+         
+     }
 }