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()
+ {
+
+ }
}