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/07/12 22:43:05 UTC

svn commit: r216016 - in /incubator/roller/branches/roller_2.0: metadata/database/ src/org/roller/business/ src/org/roller/business/hibernate/ src/org/roller/model/ src/org/roller/pojos/ src/org/roller/presentation/website/actions/ tests/org/roller/ te...

Author: snoopdave
Date: Tue Jul 12 13:43:04 2005
New Revision: 216016

URL: http://svn.apache.org/viewcvs?rev=216016&view=rev
Log:
Most unit tests working now. Still working on a couple of sticklers.

Added:
    incubator/roller/branches/roller_2.0/metadata/database/130-to-200-migration-raw.sql
Modified:
    incubator/roller/branches/roller_2.0/metadata/database/createdb-raw.sql
    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/UserData.java
    incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java
    incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java
    incubator/roller/branches/roller_2.0/src/org/roller/presentation/website/actions/UserNewAction.java
    incubator/roller/branches/roller_2.0/tests/org/roller/RollerTestBase.java
    incubator/roller/branches/roller_2.0/tests/org/roller/business/FileManagerTest.java
    incubator/roller/branches/roller_2.0/tests/org/roller/business/PermissionsTest.java
    incubator/roller/branches/roller_2.0/tests/org/roller/business/TestAll.java
    incubator/roller/branches/roller_2.0/tests/org/roller/business/UserManagerTest.java
    incubator/roller/branches/roller_2.0/tests/org/roller/business/WeblogManagerTest.java

Added: incubator/roller/branches/roller_2.0/metadata/database/130-to-200-migration-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/metadata/database/130-to-200-migration-raw.sql?rev=216016&view=auto
==============================================================================
--- incubator/roller/branches/roller_2.0/metadata/database/130-to-200-migration-raw.sql (added)
+++ incubator/roller/branches/roller_2.0/metadata/database/130-to-200-migration-raw.sql Tue Jul 12 13:43:04 2005
@@ -0,0 +1,30 @@
+-- User permissions within a website
+create table roller_user_permissions (
+    id              varchar(48) not null primary key,
+    website_id      varchar(48) not null,
+    user_id         varchar(48) not null,
+    permission_mask integer not null, -- bitmask 001 limited, 011 author, 100 admin
+    pending         @BOOLEAN_SQL_TYPE_TRUE@ not null -- pending user acceptance of invitation to join website
+);
+
+-- Audit log records time and comment about change
+create table roller_audit_log (
+    id              varchar(48) not null primary key,
+    user_id         varchar(48) not null,  -- user that made change
+    object_id       varchar(48),           -- id of associated object, if any
+    object_class    varchar(255),          -- name of associated object class (e.g. WeblogEntryData)
+    comment         varchar(255) not null, -- description of change
+    change_time     timestamp             -- time that change was made
+);
+
+-- Add new handle field to uniquely identify websites in URLs
+alter table website add column (handle varchar(255) not null);
+create index website_handle_index on userrole(handle);
+alter table website add constraint website_handle_uq unique (handle@INDEXSIZE@);
+
+-- Add userid to weblogentry so we can track original creator of entry
+alter table weblogentry add column (userid varchar(48) not null);
+create index weblogentry_userid_index on weblogentry(userid);
+
+alter table rolleruser isenabled @BOOLEAN_SQL_TYPE_TRUE@ not null;
+create index user_isenabled_index on rolleruser( isenabled );

Modified: incubator/roller/branches/roller_2.0/metadata/database/createdb-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/metadata/database/createdb-raw.sql?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/metadata/database/createdb-raw.sql (original)
+++ incubator/roller/branches/roller_2.0/metadata/database/createdb-raw.sql Tue Jul 12 13:43:04 2005
@@ -19,7 +19,8 @@
     passphrase      varchar(255) not null,
     fullname        varchar(255) not null,
     emailaddress    varchar(255) not null,
-    datecreated     timestamp not null
+    datecreated     timestamp not null,
+    isenabled       @BOOLEAN_SQL_TYPE_TRUE@ not null
 );
 alter table rolleruser add constraint rolleruser_username_uq unique ( username@INDEXSIZE@ );
 
@@ -97,10 +98,10 @@
     pinnedtomain      @BOOLEAN_SQL_TYPE_FALSE@ not null,
     isenabled         @BOOLEAN_SQL_TYPE_TRUE@ not null
 );
-create index website_id_index on website( id );
-create index website_userid_index on website( userid );
-create index website_isenabled_index on website( isenabled );
-create index website_handle_index on userrole(handle);
+create index website_id_index        on website(id);
+create index website_userid_index    on website(userid);
+create index website_isenabled_index on website(isenabled);
+create index website_handle_index    on website(handle);
 alter table website add constraint website_handle_uq unique (handle@INDEXSIZE@);
 
 create table folder (

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=216016&r1=216015&r2=216016&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 Tue Jul 12 13:43:04 2005
@@ -8,8 +8,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -23,7 +21,6 @@
 import org.roller.pojos.FolderData;
 import org.roller.pojos.PageData;
 import org.roller.pojos.PermissionsData;
-import org.roller.pojos.PlanetGroupSubscriptionAssoc;
 import org.roller.pojos.RoleData;
 import org.roller.pojos.UserCookieData;
 import org.roller.pojos.UserData;
@@ -197,13 +194,11 @@
      * @param ud  User object representing the new user.
      * @param themeDir Directory containing the theme for this user
      */
-    public void addUser(UserData ud, Map pages, String theme, 
-                        String locale, String timezone)
+    public void addUser(UserData ud)
         throws RollerException
     {        
         Roller mRoller = RollerFactory.getRoller();
         UserManager umgr = mRoller.getUserManager();
-        WeblogManager wmgr = mRoller.getWeblogManager();
         if (    umgr.getUser(ud.getUserName()) != null 
              || umgr.getUser(ud.getUserName().toLowerCase()) != null) 
         {
@@ -216,33 +211,42 @@
         {
             // Make first user an admin
             adminUser = true;
-        }
-        
+        }        
         mStrategy.store(ud);
+        if (adminUser) ud.grantRole("admin");
         
         RoleData rd = new RoleData(null, ud, "editor");
         mStrategy.store(rd);
-        
-        //
-        // CREATE WEBSITE AND CATEGORIES FOR USER
-        //
-        
+    }
+    
+    public WebsiteData createWebsite(
+            UserData ud, 
+            Map pages, 
+            String theme, 
+            String locale, 
+            String timezone) throws RollerException
+    {
+        Roller mRoller = RollerFactory.getRoller();
+        UserManager umgr = mRoller.getUserManager();
+        WeblogManager wmgr = mRoller.getWeblogManager();
+
         WebsiteData website = new WebsiteData(null,
             ud.getFullName()+"'s Weblog", // name
             ud.getUserName(),             // handle
             ud.getFullName()+"'s Weblog", // description
-            ud,                // userId
-            "dummy",           // defaultPageId
-            "dummy",           // weblogDayPageId
-            Boolean.TRUE,      // enableBloggerApi
-            null,                // bloggerCategory
-            null,                // defaultCategory
-            "editor-text.jsp", // editorPage
-            "",                // ignoreWords
-            Boolean.TRUE,      // allowComments  
-            Boolean.FALSE,     // emailComments
-            "",                // emailFromAddress
-            Boolean.TRUE);     // isEnabled
+            ud,                 // userId
+            "dummy",            // defaultPageId
+            "dummy",            // weblogDayPageId
+            Boolean.TRUE,       // enableBloggerApi
+            null,               // bloggerCategory
+            null,               // defaultCategory
+            "editor-text.jsp",  // editorPage
+            "",                 // ignoreWords
+            Boolean.TRUE,       // allowComments  
+            Boolean.FALSE,      // emailComments
+            "",                 // emailFromAddress
+            Boolean.TRUE,       // isEnabled
+            "dummy@example.com");  // emailAddress
         website.setEditorTheme(theme);
         website.setLocale(locale);
         website.setTimezone(timezone);
@@ -364,13 +368,18 @@
                 website.setWeblogDayPageId(pd.getId());                 
             }                
         }
+        mStrategy.store(website); 
         
-        if (adminUser) ud.grantRole("admin");
         
-        // Save website with blogger cat id, defauld page id and day id
-        mStrategy.store(website); 
+        PermissionsData perms = new PermissionsData();
+        perms.setUser(ud);
+        perms.setWebsite(website);
+        perms.setPermissionMask(PermissionsData.ADMIN);
+        perms.save();
+
+        return website;
     }
-    
+
     /**
      * @see org.roller.model.UserManager#createLoginCookie(java.lang.String)
      */

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=216016&r1=216015&r2=216016&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 Tue Jul 12 13:43:04 2005
@@ -376,28 +376,25 @@
         }
     }
 
-    /** 
-     * @see org.roller.model.UserManager#removeUserWebsites(org.roller.pojos.UserData)
-     */
-    public void removeUserWebsites(UserData user) throws RollerException
-    {
-        Session session = ((HibernateStrategy)mStrategy).getSession();
-        Criteria criteria = session.createCriteria(WebsiteData.class);
-        criteria.add(Expression.eq("user", user));
-        try
-        {
-            List websites = criteria.list();
-            for (Iterator iter = websites.iterator(); iter.hasNext();) 
-            {
-                WebsiteData website = (WebsiteData)iter.next();
-                website.remove();
-            }            
-        }
-        catch (HibernateException e)
-        {
-            throw new RollerException(e);
-        }
-    }
+//    public void removeUserWebsites(UserData user) throws RollerException
+//    {
+//        Session session = ((HibernateStrategy)mStrategy).getSession();
+//        Criteria criteria = session.createCriteria(WebsiteData.class);
+//        criteria.add(Expression.eq("user", user));
+//        try
+//        {
+//            List websites = criteria.list();
+//            for (Iterator iter = websites.iterator(); iter.hasNext();) 
+//            {
+//                WebsiteData website = (WebsiteData)iter.next();
+//                website.remove();
+//            }            
+//        }
+//        catch (HibernateException e)
+//        {
+//            throw new RollerException(e);
+//        }
+//    }
 
     /** 
      * @see org.roller.model.UserManager#removeWebsiteContents(org.roller.pojos.WebsiteData)

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=216016&r1=216015&r2=216016&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 Tue Jul 12 13:43:04 2005
@@ -18,6 +18,9 @@
  * 
  * @author David M Johnson
  */
+/**
+ * @author dave
+ */
 public interface UserManager extends Serializable
 {
     /** 
@@ -104,13 +107,32 @@
 	/** Get user object by user name, optionally include dis-enabled users */
 	public UserData getUser( String userName, boolean enabledOnly ) throws RollerException;
 
-    /** Add a new user with pages, bookmarks, folders...
-     * @param user New user object to be added to database
-     * @param themeDir Directory containing theme for user
-     */
-    public void addUser( UserData user, Map page, String theme,
-            String locale, String timezone)
-        throws RollerException;
+
+    /**
+     * Add new user object to Roller. User will be given the global editor role, 
+     * unless it's the first user, who will get the global admin role.
+     * @param user User object to be added, initialized with name, password, etc.
+     * @throws RollerException
+     */
+    public void addUser(UserData user) throws RollerException;
+
+    /**
+     * @param ud
+     * @param pages
+     * @param theme
+     * @param locale
+     * @param timezone
+     * @param mRoller
+     * @param wmgr
+     * @return
+     * @throws RollerException
+     */
+    public WebsiteData createWebsite(
+            UserData ud, 
+            Map pages, 
+            String theme, 
+            String locale, 
+            String timezone) throws RollerException;
 
     public UserData retrieveUser(String id)throws RollerException;
     public void storeUser( UserData data ) throws RollerException;
@@ -197,11 +219,6 @@
      * @param username
      */
     public void removeLoginCookies(String username) throws RollerException;
-
-    /**
-     * Remove website(s) associated with user.
-     */
-    public void removeUserWebsites(UserData data) throws RollerException;
 
     /**
      * Remove contents of website.

Modified: incubator/roller/branches/roller_2.0/src/org/roller/pojos/UserData.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/pojos/UserData.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/pojos/UserData.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/pojos/UserData.java Tue Jul 12 13:43:04 2005
@@ -1,6 +1,7 @@
 
 package org.roller.pojos;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
@@ -28,11 +29,11 @@
    extends org.roller.pojos.PersistentObject
    implements java.io.Serializable
 {
-    public static final UserData SYSTEM_USER = 
-        new UserData("n/a","systemuser","n/a","systemuser","n/a",new Date());
+    public static final UserData SYSTEM_USER = new UserData(
+        "n/a","systemuser","n/a","systemuser","n/a",new Date(), Boolean.TRUE);
        
-    public static final UserData ANONYMOUS_USER = 
-        new UserData("n/a","anonymoususer","n/a","anonymoususer","n/a",new Date());
+    public static final UserData ANONYMOUS_USER = new UserData(
+        "n/a","anonymoususer","n/a","anonymoususer","n/a",new Date(), Boolean.TRUE);
    
    static final long serialVersionUID = -6354583200913127874L;
 
@@ -43,8 +44,9 @@
    protected java.lang.String emailAddress;
    protected java.util.Date dateCreated;
    protected Boolean isEnabled;
+   
    private Set roles = new TreeSet();
-   private List permissions;
+   private List permissions = new ArrayList();
 
    public UserData()
    {
@@ -52,14 +54,16 @@
 
 	public UserData( java.lang.String id, java.lang.String userName,
                      java.lang.String password, java.lang.String fullName,
-                     java.lang.String emailAddress, java.util.Date dateCreated)
+                     java.lang.String emailAddress, java.util.Date dateCreated,
+                     Boolean isEnabled)
 	{
-		this.id = id;
-		this.userName = userName;
-		this.password = password;
-		this.fullName = fullName;
-		this.emailAddress = emailAddress;
-		this.dateCreated = (Date)dateCreated.clone();
+         this.id = id;
+         this.userName = userName;
+         this.password = password;
+         this.fullName = fullName;
+         this.emailAddress = emailAddress;
+         this.dateCreated = (Date)dateCreated.clone();
+         this.isEnabled = isEnabled;
 	}
 
 	public UserData( UserData otherData )
@@ -336,7 +340,6 @@
     public void remove() throws RollerException
     {
         UserManager uMgr = RollerFactory.getRoller().getUserManager();
-        uMgr.removeUserWebsites(this);
         
         // remove user roles
         Iterator roles = uMgr.getUserRoles(this).iterator();
@@ -344,7 +347,6 @@
         {
             ((RoleData)roles.next()).remove();
         }
-        
         super.remove();
     }
     

Modified: incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java Tue Jul 12 13:43:04 2005
@@ -40,28 +40,32 @@
  */
 public class WeblogEntryData extends WebsiteObject implements Serializable
 {
-    private static Log mLogger = LogFactory.getFactory()
-                                           .getInstance(WeblogEntryData.class);
+    private static Log mLogger = 
+        LogFactory.getFactory().getInstance(WeblogEntryData.class);
                                            
     static final long serialVersionUID = 2341505386843044125L;
     
-    protected String id=null;
-    protected org.roller.pojos.WeblogCategoryData category=null;
-    protected String title=null;
-    protected String link=null;
-    protected String text=null;
-    protected String anchor=null;
-    protected Timestamp pubTime=null;
-    protected Timestamp updateTime=null;
-    protected Boolean publishEntry=null;
-    protected UserData mCreator=null;
-    protected WebsiteData mWebsite=null;
-    protected String mPlugins;
-    protected Boolean allowComments = Boolean.TRUE;
-    protected Integer commentDays = new Integer(7);
-    protected Boolean rightToLeft = Boolean.FALSE;
-    protected Boolean pinnedToMain = Boolean.FALSE;
-    
+    // Simple properies
+    protected String    id            = null;
+    protected String    title         = null;
+    protected String    link          = null;
+    protected String    text          = null;
+    protected String    anchor        = null;
+    protected Timestamp pubTime       = null;
+    protected Timestamp updateTime    = null;
+    protected Boolean   publishEntry  = null;
+    protected String    plugins       = null;
+    protected Boolean   allowComments = Boolean.TRUE;
+    protected Integer   commentDays   = new Integer(7);
+    protected Boolean   rightToLeft   = Boolean.FALSE;
+    protected Boolean   pinnedToMain  = Boolean.FALSE;
+    
+    // Associated objects
+    protected UserData           creator  = null;
+    protected WebsiteData        website  = null;
+    protected WeblogCategoryData category = null;
+        
+    // Collection of name/value entry attributes
     private Map attMap = new HashMap();
     private Set attSet = new TreeSet();
     
@@ -73,8 +77,9 @@
 
     public WeblogEntryData(
        java.lang.String id, 
-       org.roller.pojos.WeblogCategoryData category, 
+       WeblogCategoryData category, 
        WebsiteData website, 
+       UserData creator,
        java.lang.String title, 
        java.lang.String link,
        java.lang.String text, 
@@ -85,7 +90,8 @@
     {
         this.id = id;
         this.category = category;
-        this.mWebsite = website;
+        this.website = website;
+        this.creator = creator;
         this.title = title;
         this.link = link;
         this.text = text;
@@ -110,7 +116,8 @@
         WeblogEntryData other = (WeblogEntryData)otherData;
         this.id = other.id;
         this.category = other.category;
-        this.mWebsite = other.mWebsite;
+        this.website = other.website;
+        this.creator = other.creator;
         this.title = other.title;
         this.link = other.link;
         this.text = other.text;
@@ -118,7 +125,7 @@
         this.pubTime = other.pubTime;
         this.updateTime = other.updateTime;
         this.publishEntry = other.publishEntry;
-        this.mPlugins = other.mPlugins;
+        this.plugins = other.plugins;
         this.allowComments = other.allowComments;
         this.commentDays = other.commentDays;
         this.rightToLeft = other.rightToLeft;
@@ -174,13 +181,13 @@
      */
     public WebsiteData getWebsite()
     {
-        return this.mWebsite;
+        return this.website;
     }
 
     /** @ejb:persistent-field */
     public void setWebsite(WebsiteData website)
     {
-        this.mWebsite = website;
+        this.website = website;
     }
 
     /** 
@@ -189,13 +196,13 @@
      */
     public UserData getCreator()
     {
-        return this.mCreator;
+        return this.creator;
     }
 
     /** @ejb:persistent-field */
     public void setCreator(UserData creator)
     {
-        this.mCreator = creator;
+        this.creator = creator;
     }
     
     /** 
@@ -406,13 +413,13 @@
      */
     public java.lang.String getPlugins()
     {
-        return mPlugins;
+        return plugins;
     }
 
     /** @ejb:persistent-field */
     public void setPlugins(java.lang.String string)
     {
-        mPlugins = string;
+        plugins = string;
     }
 
     
@@ -755,7 +762,7 @@
                     "pubTime=" + pubTime + " " + 
                     "updateTime=" + updateTime + " " + 
                     "publishEntry=" + publishEntry + " " + 
-                    "plugins=" + mPlugins);
+                    "plugins=" + plugins);
         str.append('}');
 
         return (str.toString());
@@ -788,13 +795,13 @@
                 lEquals = lEquals && this.category.equals(lTest.category);
             }
 
-            if (this.mWebsite == null)
+            if (this.website == null)
             {
-                lEquals = lEquals && (lTest.mWebsite == null);
+                lEquals = lEquals && (lTest.website == null);
             }
             else
             {
-                lEquals = lEquals && this.mWebsite.equals(lTest.mWebsite);
+                lEquals = lEquals && this.website.equals(lTest.website);
             }
 
             if (this.title == null)
@@ -853,14 +860,14 @@
                           this.publishEntry.equals(lTest.publishEntry);
             }
 
-            if (this.mPlugins == null)
+            if (this.plugins == null)
             {
-                lEquals = lEquals && (lTest.mPlugins == null);
+                lEquals = lEquals && (lTest.plugins == null);
             }
             else
             {
                 lEquals = lEquals && 
-                          this.mPlugins.equals(lTest.mPlugins);
+                          this.plugins.equals(lTest.plugins);
             }
 
 
@@ -882,7 +889,7 @@
         result = (37 * result) + 
                  ((this.category != null) ? this.category.hashCode() : 0);
         result = (37 * result) + 
-                 ((this.mWebsite != null) ? this.mWebsite.hashCode() : 0);
+                 ((this.website != null) ? this.website.hashCode() : 0);
         result = (37 * result) + 
                  ((this.title != null) ? this.title.hashCode() : 0);
         result = (37 * result) + 
@@ -896,7 +903,7 @@
         result = (37 * result) + 
                  ((this.publishEntry != null) ? this.publishEntry.hashCode() : 0);
         result = (37 * result) + 
-                 ((this.mPlugins != null) ? this.mPlugins.hashCode() : 0);
+                 ((this.plugins != null) ? this.plugins.hashCode() : 0);
 
         return result;
     }
@@ -1002,9 +1009,9 @@
      */
     public List getPluginsList()
     {
-        if (mPlugins != null)
+        if (plugins != null)
         {
-            return Arrays.asList( StringUtils.split(mPlugins, ",") );
+            return Arrays.asList( StringUtils.split(plugins, ",") );
         }
         return new ArrayList();
     }

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=216016&r1=216015&r2=216016&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 Tue Jul 12 13:43:04 2005
@@ -1,28 +1,36 @@
 package org.roller.pojos;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.TimeZone;
+
 import org.apache.commons.lang.StringUtils;
 import org.roller.RollerException;
 import org.roller.model.Roller;
 import org.roller.model.RollerFactory;
 import org.roller.util.PojoUtil;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.TimeZone;
 /**
- * A user's website is a weweblog, newsfeed channels and bookmarks.
+ * Website has many-to-many association with users. Website has one-to-many and 
+ * one-direction associations with weblog entries, weblog categories, folders and
+ * other objects. Use UserManager to create, fetch, update and retreive websites.
+ * 
  * @author David M Johnson
  *
  * @ejb:bean name="WebsiteData"
  * @struts.form include-all="true"
  * @hibernate.class table="website"
+ * 
  * hibernate.jcs-cache usage="read-write"
  */
 public class WebsiteData extends org.roller.pojos.PersistentObject
     implements java.io.Serializable
 {
     static final long serialVersionUID = 206437645033737127L;
+    
+    // Simple properties
     protected String  id;
     protected String  handle;
     protected String  name;
@@ -41,11 +49,13 @@
     protected String  timezone;
     protected String  mDefaultPlugins;
     protected Boolean isEnabled;
-    protected List    permissions;
+    
+    // Associated objects
+    protected UserData mUser = null; // TODO: decide if website.user is needed
+    protected List     permissions = new ArrayList();    
     protected WeblogCategoryData bloggerCategory;
     protected WeblogCategoryData defaultCategory;
 
-    protected UserData mUser = null;
 
     public WebsiteData()
     {
@@ -66,7 +76,8 @@
                        final Boolean  allowComments,
                        final Boolean  emailComments,
                        final String   emailFromAddress,
-                       final Boolean  isEnabled)
+                       final Boolean  isEnabled,
+                       final String   emailAddress)
     {
         this.id = id;
         this.name = name;
@@ -84,6 +95,7 @@
         this.emailComments = emailComments;
         this.emailFromAddress = emailFromAddress;
         this.isEnabled = isEnabled;
+        this.emailAddress = emailAddress;
     }
 
     public WebsiteData(WebsiteData otherData)
@@ -133,7 +145,7 @@
     /**
      * Short URL safe string that uniquely identifies the website.
      * @ejb:persistent-field
-     * @hibernate.property column="name" non-null="true" unique="true"
+     * @hibernate.property column="handle" non-null="true" unique="true"
      */
     public String getHandle()
     {
@@ -358,7 +370,7 @@
     
     /**
      * @ejb:persistent-field
-     * @hibernate.property column="emailfromaddress" non-null="true" unique="false"
+     * @hibernate.property column="emailaddress" non-null="true" unique="false"
      */
     public String getEmailAddress()
     {
@@ -366,7 +378,7 @@
     }
 
     /** @ejb:persistent-field */
-    public void setEmailAddress(String emailFromAddress)
+    public void setEmailAddress(String emailAddress)
     {
         this.emailAddress = emailAddress;
     }
@@ -464,6 +476,7 @@
                    "editorPage=" + editorPage + " " +
                    "ignoreWords=" + ignoreWords + " " +
                    "allowComments=" + allowComments + " " +
+                   "emailAddress=" + emailAddress + " " + 
                    "emailComments=" + emailComments + " " + 
                    "emailFromAddress=" + emailFromAddress + " " +
                    "editorTheme=" + editorTheme + " " +
@@ -508,6 +521,8 @@
             
             lEquals = PojoUtil.equals(lEquals, this.emailComments, lTest.emailComments);
             
+            lEquals = PojoUtil.equals(lEquals, this.emailAddress, lTest.emailAddress);
+            
             lEquals = PojoUtil.equals(lEquals, this.emailFromAddress, lTest.emailFromAddress);
 
             lEquals = PojoUtil.equals(lEquals, this.editorTheme, lTest.editorTheme);
@@ -542,6 +557,7 @@
         result = PojoUtil.addHashCode(result, this.ignoreWords);
         result = PojoUtil.addHashCode(result, this.allowComments);
         result = PojoUtil.addHashCode(result, this.emailComments);
+        result = PojoUtil.addHashCode(result, this.emailAddress);
         result = PojoUtil.addHashCode(result, this.emailFromAddress);
         result = PojoUtil.addHashCode(result, this.editorTheme);
         result = PojoUtil.addHashCode(result, this.locale);
@@ -572,6 +588,7 @@
         this.ignoreWords = other.ignoreWords;
         this.allowComments = other.allowComments;
         this.emailComments = other.emailComments;
+        this.emailAddress = other.emailAddress;
         this.emailFromAddress = other.emailFromAddress;
         this.editorTheme = other.editorTheme;
         this.locale = other.locale;
@@ -673,7 +690,7 @@
                 break;
             }
         }
-        if (!userPerms.isPending())
+        if (userPerms != null && !userPerms.isPending())
         {
             if (userPerms != null && (userPerms.getPermissionMask() & mask) > 0) 
             {

Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/website/actions/UserNewAction.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/website/actions/UserNewAction.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/website/actions/UserNewAction.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/website/actions/UserNewAction.java Tue Jul 12 13:43:04 2005
@@ -141,7 +141,8 @@
             
             String theme = form.getTheme();
             HashMap pages = rollerContext.readThemeMacros(theme);
-            mgr.addUser( ud, pages, theme, form.getLocale(), form.getTimezone() );
+            mgr.addUser(ud);
+            mgr.createWebsite(ud, pages, theme, form.getLocale(), form.getTimezone());
             rreq.getRoller().commit();
 
 			// Flush cache so user will immediately appear on index page

Modified: incubator/roller/branches/roller_2.0/tests/org/roller/RollerTestBase.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/tests/org/roller/RollerTestBase.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/tests/org/roller/RollerTestBase.java (original)
+++ incubator/roller/branches/roller_2.0/tests/org/roller/RollerTestBase.java Tue Jul 12 13:43:04 2005
@@ -21,6 +21,7 @@
 import org.roller.model.UserManager;
 import org.roller.model.WeblogManager;
 import org.roller.pojos.CommentData;
+import org.roller.pojos.PermissionsData;
 import org.roller.pojos.UserData;
 import org.roller.pojos.WeblogCategoryData;
 import org.roller.pojos.WeblogEntryData;
@@ -38,7 +39,8 @@
 
     private Roller mRoller = null;
 
-    /** Simple website created by addUser(), no frills. */
+    /** Simple user and website */
+    protected UserData mUser = null;
     protected WebsiteData mWebsite = null;
     protected String testUsername = "testuser";
 
@@ -95,42 +97,47 @@
     protected void setUp() throws Exception
     {
         super.setUp();
-        UserManager umgr = getRoller().getUserManager();
-
         getRoller().begin(UserData.SYSTEM_USER);
-
-        // create User
-        UserData user = createUser(umgr,
+        mUser = createUser(
                    testUsername,
                    "password",
                    "TestUser",
                    "testuser@example.com");
-
-        // get website
-        mWebsite = (WebsiteData)umgr.getWebsites(user, null).get(0);
+        UserManager umgr = getRoller().getUserManager();
+        mWebsite = (WebsiteData)umgr.getWebsites(mUser, null).get(0);
         getRoller().commit();
     }
 
     //-----------------------------------------------------------------------
     protected UserData createUser(
-                    UserManager umgr,
                     String username,
                     String password,
                     String fullName,
                     String email) throws RollerException
     {
+        UserManager umgr = getRoller().getUserManager();
+        WeblogManager wmgr = getRoller().getWeblogManager();
+
+        // Create and add new new user
         UserData ud = new UserData(null,
-            username,         // userName
-            password,           // password
+            username,      // userName
+            password,      // password
             fullName,      // fullName
-            email, // emailAddress
-            new java.util.Date()  // dateCreated
-            );
+            email,         // emailAddress
+            new java.util.Date(), // dateCreated
+            Boolean.TRUE);
+        umgr.addUser(ud);
+
+        // Create list of pages to be loaded into website
         Map pages = new HashMap();
         pages.put("Weblog","Weblog page content");
         pages.put("_day","Day page content");
         pages.put("css","CSS page content");
-        umgr.addUser(ud, pages, "basic", "en_US_WIN", "America/Los_Angeles");
+        
+        // Create website for user with those pages
+        umgr.createWebsite(
+           ud, pages, "basic", "en_US_WIN", "America/Los_Angeles");
+        
         return ud;
     }
 
@@ -146,7 +153,7 @@
         {
             getRoller().begin(UserData.SYSTEM_USER);
 
-            UserData ud = createUser(umgr,
+            UserData ud = createUser(
                 "testuser"+i,         // userName
                 "password",           // password
                 "Test User #"+i,      // fullName
@@ -168,7 +175,7 @@
             getRoller().begin(UserData.SYSTEM_USER);
             website  = umgr.retrieveWebsite(website.getId());
             WeblogCategoryData rootCat = wmgr.getRootWeblogCategory(website);
-            createCategoryPostsAndComments(0, wmgr, website, rootCat);
+            createCategoryPostsAndComments(0, wmgr, ud, website, rootCat);
             getRoller().commit();
         }
 
@@ -178,6 +185,7 @@
     private void createCategoryPostsAndComments(
             int depth,
             WeblogManager wmgr,
+            UserData user,
             WebsiteData website,
             WeblogCategoryData rootCat) throws RollerException
     {
@@ -195,6 +203,7 @@
                  null,      // id
                  rootCat,    // category
                  website,    // websiteId
+                 user,
                  "Future Blog", // title
                  null,
                  "Blog to the Future", // text
@@ -220,6 +229,7 @@
                     null,      // id
                     rootCat,    // category
                     website,    // websiteId
+                    user,
                     rootCat.getName() + ":entry"+k, // title
                     null,
                     rootCat.getName() + ":entry"+k, // text
@@ -273,7 +283,7 @@
 
             if (depth < mCatDepth)
             {
-                createCategoryPostsAndComments(depth+1, wmgr, website, cat);
+                createCategoryPostsAndComments(depth+1, wmgr, user, website, cat);
             }
         }
     }
@@ -284,11 +294,18 @@
     {
         getRoller().begin(UserData.SYSTEM_USER);
         UserManager umgr = getRoller().getUserManager();
-        for (Iterator iter = mUsersCreated.iterator(); iter.hasNext();)
+        for (Iterator siteIter = mWebsites.iterator(); siteIter.hasNext();)
+        {
+            WebsiteData site = (WebsiteData) siteIter.next();
+            site = umgr.retrieveWebsite(site.getId());
+            if (site != null) site.remove();
+        }
+        
+        for (Iterator userIter = mUsersCreated.iterator(); userIter.hasNext();)
         {
-            UserData element = (UserData) iter.next();
-            element = umgr.retrieveUser(element.getId());
-            element.remove();
+            UserData user = (UserData) userIter.next();
+            user = umgr.retrieveUser(user.getId());
+            user.remove();
         }
         getRoller().commit();
     }

Modified: incubator/roller/branches/roller_2.0/tests/org/roller/business/FileManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/tests/org/roller/business/FileManagerTest.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/tests/org/roller/business/FileManagerTest.java (original)
+++ incubator/roller/branches/roller_2.0/tests/org/roller/business/FileManagerTest.java Tue Jul 12 13:43:04 2005
@@ -113,8 +113,7 @@
     
     private WebsiteData createTestUser() throws Exception {
         // do some setup for our test
-        Roller mRoller = RollerFactory.getRoller();
-        
+        Roller mRoller = RollerFactory.getRoller();       
         UserManager umgr = mRoller.getUserManager();
         mRoller.begin(UserData.SYSTEM_USER);
         UserData user = new UserData(null,
@@ -122,16 +121,15 @@
                 "FileManagerTest_password",       
                 "FileManagerTest_description",      
                 "FileManagerTest@example.com", 
-                new java.util.Date());
+                new java.util.Date(), Boolean.TRUE);
         Map pages = new HashMap();
         pages.put("Weblog","Weblog page content");
         pages.put("_day","Day page content");
         pages.put("css","CSS page content");
-        umgr.addUser(user, pages, "basic", "en_US_WIN", "America/Los_Angeles");
+        umgr.addUser(user);
+        umgr.createWebsite(user, pages, "basic", "en_US_WIN", "America/Los_Angeles");
         mRoller.commit();
-        
         WebsiteData website = (WebsiteData)umgr.getWebsites(user,null).get(0);
-
         return website;
     }
 

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=216016&r1=216015&r2=216016&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 Tue Jul 12 13:43:04 2005
@@ -337,7 +337,7 @@
      * <li> when website is deleted, permissions are deleted too </li>
      * </ul>
      */
-     public void testPermissionsRemoval() throws Exception
+     public void testRemoveWebsiteCascade() throws Exception
      {
          try 
          {
@@ -373,7 +373,8 @@
                  assertNull(getRoller().getPersistenceStrategy().load(
                          permsId, PermissionsData.class));                 
              }
-             getRoller().commit();    
+             getRoller().commit();   
+                         
          }
          catch (Exception e)
          {
@@ -381,5 +382,56 @@
              fail();
          }               
      }
+     
+     /**
+      * Test permissions removal and related cascades, specifically:
+      * <ul>
+      * <li> when user is deleted, permissions are deleted too </li>
+      * <li> when website is deleted, permissions are deleted too </li>
+      * </ul>
+      */
+      public void testRemoveUserCascade() throws Exception
+      {
+          try 
+          {
+              UserManager umgr = getRoller().getUserManager();
+              String userName = "testuser0";
+              String permsId = null;
+              
+              // Create add user to website
+              getRoller().begin();
+              {
+                  UserData tuser = umgr.getUser(userName);       
+                  WebsiteData tsite = (WebsiteData)umgr.getWebsites(tuser, null).get(0);                
+                  PermissionsData perms = new PermissionsData();
+                  perms.setUser(tuser);
+                  perms.setWebsite(tsite);
+                  perms.save();
+                  permsId = perms.getId();
+              }
+              getRoller().commit();    
+              
+              // delete user
+              getRoller().begin(UserData.SYSTEM_USER);
+              {
+                  UserData tuser = umgr.getUser(userName);       
+                  tuser.remove();              
+              }
+              getRoller().commit(); 
+              
+              // ensure that permission was deleted too
+              getRoller().begin();
+              {
+                  assertNull(getRoller().getPersistenceStrategy().load(
+                          permsId, PermissionsData.class));                 
+              }
+              getRoller().commit();   
+          }
+          catch (Exception e)
+          {
+              e.printStackTrace();
+              fail();
+          }               
+      }
 }
 

Modified: incubator/roller/branches/roller_2.0/tests/org/roller/business/TestAll.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/tests/org/roller/business/TestAll.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/tests/org/roller/business/TestAll.java (original)
+++ incubator/roller/branches/roller_2.0/tests/org/roller/business/TestAll.java Tue Jul 12 13:43:04 2005
@@ -15,15 +15,15 @@
     public static Test suite()
     {
         TestSuite suite = new TestSuite();
-//        suite.addTest(BookmarkManagerTest.suite());
-//        suite.addTest(ConfigManagerTest.suite());
-//        suite.addTest(FileManagerTest.suite());
-//        suite.addTest(IndexManagerTest.suite());             
+        suite.addTest(ConfigManagerTest.suite());
         suite.addTest(PermissionsTest.suite());
-//        suite.addTest(PlanetManagerTest.suite());
-//        suite.addTest(RefererManagerTest.suite());
         suite.addTest(UserManagerTest.suite());
-//        suite.addTest(WeblogManagerTest.suite());
+        suite.addTest(WeblogManagerTest.suite());
+        suite.addTest(RefererManagerTest.suite());
+        suite.addTest(IndexManagerTest.suite());             
+        suite.addTest(BookmarkManagerTest.suite());
+        suite.addTest(FileManagerTest.suite());
+        suite.addTest(PlanetManagerTest.suite());
         return suite;
     }
     public TestAll(String testName)

Modified: incubator/roller/branches/roller_2.0/tests/org/roller/business/UserManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/tests/org/roller/business/UserManagerTest.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/tests/org/roller/business/UserManagerTest.java (original)
+++ incubator/roller/branches/roller_2.0/tests/org/roller/business/UserManagerTest.java Tue Jul 12 13:43:04 2005
@@ -29,10 +29,13 @@
  */
 public class UserManagerTest  extends RollerTestBase
 {
-    UserData enabledUser = null;
-    UserData disabledUser = null;
-    String enabledUserName = "enabledUser";
-    String disabledUserName = "disabledUser";
+    WebsiteData enabledSite = null;
+    UserData    enabledUser = null;
+    String      enabledUserName = "enabledUser";
+
+    WebsiteData disabledSite = null;
+    UserData    disabledUser = null;
+    String      disabledUserName = "disabledUser";
 
     //------------------------------------------------------------------------
     public UserManagerTest()
@@ -68,21 +71,22 @@
         getRoller().begin(UserData.SYSTEM_USER);
         UserManager umgr = getRoller().getUserManager();
 
-        enabledUser = createUser(umgr,
-                                 enabledUserName,
+        enabledUser = createUser(enabledUserName,
                                  "password",
                                  "EnabledUser",
                                  "enabledUser@example.com"
         );
 
-        disabledUser = createUser(umgr,
-                                 disabledUserName,
+        disabledUser = createUser(disabledUserName,
                                  "password",
                                  "DisabledUser",
                                  "disabledUser@example.com"
         );
-        ((WebsiteData)umgr.getWebsites(disabledUser, null)
-                .get(0)).setIsEnabled(Boolean.FALSE);
+        enabledSite = ((WebsiteData)umgr.getWebsites(enabledUser, null).get(0));
+        enabledSite.setIsEnabled(Boolean.TRUE);
+        
+        disabledSite = ((WebsiteData)umgr.getWebsites(disabledUser, null).get(0));
+        disabledSite.setIsEnabled(Boolean.FALSE);
 
         getRoller().commit();
     }
@@ -97,9 +101,15 @@
         getRoller().begin(UserData.SYSTEM_USER);
         UserManager umgr = getRoller().getUserManager();
 
+        enabledSite = umgr.retrieveWebsite(enabledSite.getId());
+        enabledSite.remove();
+        
         enabledUser = umgr.retrieveUser(enabledUser.getId());
         enabledUser.remove();
 
+        disabledSite = umgr.retrieveWebsite(disabledSite.getId());
+        disabledSite.remove();
+        
         disabledUser = umgr.retrieveUser(disabledUser.getId());
         disabledUser.remove();
 
@@ -120,7 +130,7 @@
             "password2",
             "TestUser2",
             "testuser2@example.com",
-            new java.util.Date());
+            new java.util.Date(), Boolean.TRUE);
         umgr.storeUser(stored);
         getRoller().commit();
 
@@ -155,7 +165,7 @@
             "password3",
             "TestUser3",
             "testuser3@example.com",
-            new java.util.Date());
+            new java.util.Date(), Boolean.TRUE);
         umgr.storeUser( user );
 
         stored = new WebsiteData(
@@ -174,7 +184,8 @@
             Boolean.TRUE,
             Boolean.FALSE,
             null,
-            Boolean.TRUE);
+            Boolean.TRUE, 
+            "");
         umgr.storeWebsite(stored);
 
         FolderData rootFolder = getRoller().getBookmarkManager()
@@ -220,12 +231,13 @@
             "password4",
             "TestUser4",
             "testuser4@example.com",
-            new java.util.Date());
+            new java.util.Date(), Boolean.TRUE);
         Map pages = new HashMap();
         pages.put("Weblog","Weblog page content");
         pages.put("_day","Day page content");
         pages.put("css","CSS page content");
-        umgr.addUser(user, pages, "basic", "en_US_WIN", "America/Los_Angeles");
+        umgr.addUser(user);
+        umgr.createWebsite(user, pages, "basic", "en_US_WIN", "America/Los_Angeles");
         getRoller().commit();
 
         // Verify that user has all the goodies

Modified: incubator/roller/branches/roller_2.0/tests/org/roller/business/WeblogManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/tests/org/roller/business/WeblogManagerTest.java?rev=216016&r1=216015&r2=216016&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/tests/org/roller/business/WeblogManagerTest.java (original)
+++ incubator/roller/branches/roller_2.0/tests/org/roller/business/WeblogManagerTest.java Tue Jul 12 13:43:04 2005
@@ -73,10 +73,12 @@
         getRoller().begin(UserData.SYSTEM_USER);
         
         WebsiteData wd = null;
+        UserData ud = null;
         WeblogCategoryData root = null;
         WeblogManager wmgr = getRoller().getWeblogManager();
 
         wd = getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
+        ud = getRoller().getUserManager().retrieveUser(mUser.getId());
         root = wmgr.getRootWeblogCategory(wd);
 
         // create empty destination folder
@@ -94,7 +96,7 @@
         c1.save();
         
         WeblogEntryData e1 = new WeblogEntryData(
-            null, c1, wd, "title1", null, "text", "anchor", 
+            null, c1, wd, ud, "title1", null, "text", "anchor", 
             new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         e1.save();
         
@@ -105,7 +107,7 @@
         c2.save();
       
         WeblogEntryData e2 = new WeblogEntryData(
-            null, c2, wd, "title2", null, "text", "anchor", 
+            null, c2, wd, ud, "title2", null, "text", "anchor", 
             new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         e2.save();
         
@@ -116,7 +118,7 @@
         c3.save();
         
         WeblogEntryData e3 = new WeblogEntryData(
-            null, c3, wd, "title3", null, "text", "anchor", 
+            null, c3, wd, ud, "title3", null, "text", "anchor", 
             new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         e3.save();
         
@@ -146,10 +148,12 @@
         getRoller().begin(UserData.SYSTEM_USER);
         
         WebsiteData wd = null;
+        UserData ud = null;
         WeblogCategoryData root = null;
         WeblogManager wmgr = getRoller().getWeblogManager();
 
         wd = getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
+        ud = getRoller().getUserManager().retrieveUser(mUser.getId());
         root = wmgr.getRootWeblogCategory(wd);
 
         // create top level folders
@@ -181,22 +185,22 @@
         
         // Create four entries in 1st category
         WeblogEntryData e1 = new WeblogEntryData(
-                null, t1, wd, "title1", null, "text1", "anchor", 
+                null, t1, wd, ud, "title1", null, "text1", "anchor", 
                 new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         e1.save();
         
         WeblogEntryData e2 = new WeblogEntryData(
-                null, t1, wd, "title2", null, "text2", "anchor", 
+                null, t1, wd, ud, "title2", null, "text2", "anchor", 
                 new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         e2.save();
         
         WeblogEntryData e3 = new WeblogEntryData(
-                null, t1, wd, "title3", null, "text3", "anchor", 
+                null, t1, wd, ud, "title3", null, "text3", "anchor", 
                 new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         e3.save();
         
         WeblogEntryData e4 = new WeblogEntryData(
-                null, t1, wd, "title4", null, "text4", "anchor", 
+                null, t1, wd, ud, "title4", null, "text4", "anchor", 
                 new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         e4.save();
         
@@ -731,11 +735,12 @@
         getRoller().begin(UserData.SYSTEM_USER);
         WeblogManager wmgr = getRoller().getWeblogManager();
         WebsiteData website = (WebsiteData)mWebsites.get(0); 
+        UserData user = (UserData)mUsersCreated.get(0);
         
         WeblogCategoryData cat = wmgr.getRootWeblogCategory(website);       
 
         WeblogEntryData entry = new WeblogEntryData(
-                null, cat, website, "title2", null, "text2", "attributetest", 
+                null, cat, website, user, "title2", null, "text2", "attributetest", 
                 new Timestamp(0), new Timestamp(0), Boolean.FALSE);
         entry.save();
         assertNotNull(entry.getId());