Author: agilliland
Date: Sat Apr  8 17:16:02 2006
New Revision: 392638

URL: http://svn.apache.org/viewcvs?rev=392638&view=rev
Log:
more backend refactorings.  cleaning up weblog page usages.

- removed methods removePageSafely and retrievePageReadOnly from UserManager
- replaced method removePage(id) with removePage(page)
- added unit test WeblogPageTest


Added:
    
incubator/roller/branches/roller-newbackend/tests/org/roller/business/WeblogPageTest.java
Removed:
    
incubator/roller/branches/roller-newbackend/tests/org/roller/business/WeblogTemplateTest.java
Modified:
    incubator/roller/branches/roller-newbackend/build.xml
    
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java
    
incubator/roller/branches/roller-newbackend/src/org/roller/model/UserManager.java
    
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/website/actions/WeblogTemplateFormAction.java
    
incubator/roller/branches/roller-newbackend/testdata/WEB-INF/classes/log4j.properties
    
incubator/roller/branches/roller-newbackend/tests/org/roller/business/PermissionTest.java

Modified: incubator/roller/branches/roller-newbackend/build.xml
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/build.xml?rev=392638&r1=392637&r2=392638&view=diff
==============================================================================
--- incubator/roller/branches/roller-newbackend/build.xml (original)
+++ incubator/roller/branches/roller-newbackend/build.xml Sat Apr  8 17:16:02 
2006
@@ -818,7 +818,8 @@
             <fileset dir="${build.tests}/WEB-INF/classes">
                <include name="org/roller/business/UserTest.class"/> 
               <include name="org/roller/business/WeblogTest.class"/>
-              <include name="org/roller/business/PermissionsTest.class"/>
+              <include name="org/roller/business/PermissionTest.class"/>
+              <include name="org/roller/business/WeblogPageTest.class"/>
             </fileset>
         </batchtest>
     </junit>

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java?rev=392638&r1=392637&r2=392638&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java
 Sat Apr  8 17:16:02 2006
@@ -163,16 +163,7 @@
 //            
 //            this.strategy.remove(entry);
 //        }
-//        
-//        // remove associated pages
-//        Criteria pageQuery = session.createCriteria(WeblogTemplate.class);
-//        pageQuery.add(Expression.eq("website", website));
-//        List pages = pageQuery.list();
-//        for (Iterator iter = pages.iterator(); iter.hasNext();) {
-//            WeblogTemplate page = (WeblogTemplate) iter.next();
-//            this.strategy.remove(page);
-//        }
-//        
+        
 //        // remove associated referers
 //        Criteria refererQuery = session.createCriteria(RefererData.class);
 //        refererQuery.add(Expression.eq("website", website));
@@ -182,6 +173,16 @@
 //            this.strategy.remove(referer);
 //        }
         
+                
+        // remove associated pages
+        Criteria pageQuery = session.createCriteria(WeblogTemplate.class);
+        pageQuery.add(Expression.eq("website", website));
+        List pages = pageQuery.list();
+        for (Iterator iter = pages.iterator(); iter.hasNext();) {
+            WeblogTemplate page = (WeblogTemplate) iter.next();
+            this.strategy.remove(page);
+        }
+        
         // remove folders (including bookmarks)
         FolderData rootFolder = bmgr.getRootFolder(website);
         if (null != rootFolder) {
@@ -239,27 +240,8 @@
     }
     
     
-    public void removePage(String id) throws RollerException {
-        this.strategy.removeAndCommit(id,WeblogTemplate.class);
-    }
-    
-    
-    // TODO: EOL this method, logic about safe pages goes outside the 
persistence layer
-    public void removePageSafely(String id) throws RollerException {
-        
-        // TODO: rewrite using page.isRequired()
-        WeblogTemplate pd = retrievePageReadOnly(id);
-        if (pd == null) return;
-        
-        WebsiteData wd = pd.getWebsite();
-        if (pd.getId() == wd.getDefaultPageId()) {
-            log.error(
-                    "Refusing to remove default page from website with handle: 
"
-                    +  wd.getHandle());
-            throw new RollerException(
-                    new IllegalArgumentException("Page is default page of 
website."));
-        }
-        removePage(id);
+    public void removePage(WeblogTemplate page) throws RollerException {
+        this.strategy.removeAndCommit(page);
     }
     
     
@@ -710,20 +692,6 @@
         // Don't hit database for templates stored on disk
         if (id != null && id.endsWith(".vm")) return null;
         
-        return (WeblogTemplate)this.strategy.load(id,WeblogTemplate.class);
-    }
-    
-    
-    /**
-     * @see org.roller.model.UserManager#retrievePage(java.lang.String)
-     *
-     * TODO: EOL this method, it is useless
-     */
-    public WeblogTemplate retrievePageReadOnly(String id) throws 
RollerException {
-        // Don't hit database for templates stored on disk
-        if (id != null && id.endsWith(".vm")) return null;
-        
-        // Hibernate has a read-only flag: LockMode.READ
         return (WeblogTemplate)this.strategy.load(id,WeblogTemplate.class);
     }
     

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/model/UserManager.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/model/UserManager.java?rev=392638&r1=392637&r2=392638&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/model/UserManager.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/model/UserManager.java
 Sat Apr  8 17:16:02 2006
@@ -217,35 +217,23 @@
     /** Get users pages */
     public List getPages(WebsiteData w) throws RollerException;
     
+    
     /**
      * Get page by ID
      */
     public WeblogTemplate retrievePage(String id) throws RollerException;
+    
+    
     /**
      * Store page
      */
     public void storePage(WeblogTemplate data) throws RollerException;
-    /**
-     * Remove page by ID
-     */
-    public void removePage(String id) throws RollerException;
-    
     
-    /**
-     * Remove page safely.  This will throw an exception on attempts to remove
-     * mandatory website pages such as the
-     * website's default page.
-     * @param id  id of the page to be removed
-     * @throws RollerException with root cause 
<code>IllegalArgumentException</code>
-     * if the page id is that of
-     * a page that will not be removed by this method.
-     */
-    public void removePageSafely(String id) throws RollerException;
     
     /**
-     * Retrieve the Page in read-only mode (does hibernate support this?).
+     * Remove page
      */
-    public WeblogTemplate retrievePageReadOnly(String id) throws 
RollerException;
+    public void removePage(WeblogTemplate page) throws RollerException;
     
     
     public void removeWebsite(WebsiteData website) throws RollerException;

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/website/actions/WeblogTemplateFormAction.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/presentation/website/actions/WeblogTemplateFormAction.java?rev=392638&r1=392637&r2=392638&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/website/actions/WeblogTemplateFormAction.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/website/actions/WeblogTemplateFormAction.java
 Sat Apr  8 17:16:02 2006
@@ -78,17 +78,12 @@
 
                 UserManager mgr = RollerFactory.getRoller().getUserManager();
                 mgr.storePage( data );
-                RollerFactory.getRoller().commit();
 
                 ActionMessages uiMessages = new ActionMessages();
                 uiMessages.add(ActionMessages.GLOBAL_MESSAGE, 
                         new ActionMessage("pagesForm.addNewPage.success", 
                                 data.getName()));
                 saveMessages(request, uiMessages);
-                
-                UserData user = rses.getAuthenticatedUser();
-                //PageCacheFilter.removeFromCache( request, website );
-                //CacheManager.invalidate(data);
                     
                 actionForm.reset(mapping,request);                
                 
@@ -129,12 +124,8 @@
                 pageModel.setWebsite(pd.getWebsite());
                 request.setAttribute("model", pageModel); 
                 
-                UserData ud = rses.getAuthenticatedUser();
                 WeblogTemplateForm pf = (WeblogTemplateForm)actionForm;
                 pf.copyFrom(pd, request.getLocale());
-
-                //PageCacheFilter.removeFromCache( request, pd.getWebsite() );
-                //CacheManager.invalidate(pd);
                 
                 addModelObjects(request, response, mapping, pd.getWebsite());
             }
@@ -214,13 +205,18 @@
             RollerSession rses = RollerSession.getRollerSession(request);      
    
             if ( rses.isUserAuthorizedToAdmin(website) )
             {
-                mgr.removePageSafely(template.getId());
-                RollerFactory.getRoller().commit();
+                if(!template.isRequired()) {
+                    
+                    mgr.removePage(template);
 
-                UserData user = rses.getAuthenticatedUser();
-                //PageCacheFilter.removeFromCache(request, 
template.getWebsite());
-                CacheManager.invalidate(template);
+                    // notify cache
+                    CacheManager.invalidate(template);
+                } else {
                     
+                    // someone trying to remove a required template
+                    throw new RollerException("Cannot remove required page");
+                }
+                
                 addModelObjects(
                         request, response, mapping, template.getWebsite());
                 actionForm.reset(mapping, request);
@@ -315,7 +311,6 @@
                 validateLink( data );
 
                 mgr.storePage( data );
-                RollerFactory.getRoller().commit();
 
                 // set the (possibly) new link back into the Form bean
                 ((WeblogTemplateForm)actionForm).setLink( data.getLink() );
@@ -326,8 +321,6 @@
                                 data.getName()));
                 saveMessages(request, uiMessages);
 
-                UserData user = rses.getAuthenticatedUser();
-                //PageCacheFilter.removeFromCache(request, data.getWebsite());
                 CacheManager.invalidate(data);
                 
                 BasePageModel pageModel = new BasePageModel(

Modified: 
incubator/roller/branches/roller-newbackend/testdata/WEB-INF/classes/log4j.properties
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/testdata/WEB-INF/classes/log4j.properties?rev=392638&r1=392637&r2=392638&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/testdata/WEB-INF/classes/log4j.properties
 (original)
+++ 
incubator/roller/branches/roller-newbackend/testdata/WEB-INF/classes/log4j.properties
 Sat Apr  8 17:16:02 2006
@@ -16,8 +16,10 @@
 
 # logging levels
 log4j.category.org.roller=INFO
-log4j.category.org.roller.business.hibernate=DEBUG
+log4j.category.org.roller.business.UserTest=DEBUG
 log4j.category.org.roller.business.WeblogTest=DEBUG
-log4j.category.org.hibernate=INFO
-log4j.category.org.apache.struts=INFO
-log4j.category.org.apache.velocity=INFO
+log4j.category.org.roller.business.PermissionTest=DEBUG
+log4j.category.org.roller.business.WeblogPageTest=DEBUG
+log4j.category.org.hibernate=WARN
+log4j.category.org.apache.struts=WARN
+log4j.category.org.apache.velocity=WARN

Modified: 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/PermissionTest.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/tests/org/roller/business/PermissionTest.java?rev=392638&r1=392637&r2=392638&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/PermissionTest.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/PermissionTest.java
 Sat Apr  8 17:16:02 2006
@@ -4,6 +4,8 @@
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.roller.TestUtils;
 import org.roller.model.RollerFactory;
 import org.roller.model.UserManager;
@@ -30,6 +32,8 @@
  *
  */
 public class PermissionTest extends TestCase {
+    
+    public static Log log = LogFactory.getLog(PermissionTest.class);
     
     UserData testUser = null;
     WebsiteData testWeblog = null;

Added: 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/WeblogPageTest.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/tests/org/roller/business/WeblogPageTest.java?rev=392638&view=auto
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/WeblogPageTest.java
 (added)
+++ 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/WeblogPageTest.java
 Sat Apr  8 17:16:02 2006
@@ -0,0 +1,126 @@
+/*
+ * WeblogPageTest.java
+ *
+ * Created on April 7, 2006, 2:57 PM
+ */
+
+package org.roller.business;
+
+import java.util.List;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.roller.TestUtils;
+import org.roller.model.RollerFactory;
+import org.roller.model.UserManager;
+import org.roller.pojos.UserData;
+import org.roller.pojos.WeblogTemplate;
+import org.roller.pojos.WebsiteData;
+
+
+/**
+ * Test WeblogPage related business operations.
+ *
+ * That includes:
+ *   - create a template
+ *   - update a template
+ *   - delete a template
+ *   - get a template by id
+ *   - get a template by name
+ *   - get a template by link
+ *
+ */
+public class WeblogPageTest extends TestCase {
+    
+    public static Log log = LogFactory.getLog(WeblogPageTest.class);
+    
+    UserData testUser = null;
+    WebsiteData testWeblog = null;
+    WeblogTemplate testPage = null;
+    
+    
+    public WeblogPageTest(String name) {
+        super(name);
+    }
+    
+    
+    public static Test suite() {
+        return new TestSuite(WeblogPageTest.class);
+    }
+    
+    
+    /**
+     * All tests in this suite require a user and a weblog.
+     */
+    public void setUp() throws Exception {
+        
+        testUser = TestUtils.setupUser("wtTestUser");
+        testWeblog = TestUtils.setupWeblog("wtTestWeblog", testUser);
+        
+        testPage = new WeblogTemplate();
+        testPage.setName("testTemplate");
+        testPage.setDescription("Test Weblog Template");
+        testPage.setLink("testTemp");
+        testPage.setContents("a test weblog template.");
+        testPage.setLastModified(new java.util.Date());
+        testPage.setWebsite(testWeblog);
+    }
+    
+    public void tearDown() throws Exception {
+        
+        try {
+            TestUtils.teardownWeblog(testWeblog.getHandle());
+            TestUtils.teardownUser(testUser.getUserName());
+        } catch (Exception ex) {
+            log.error(ex);
+        }
+    }
+    
+    
+    /**
+     * Test basic persistence operations ... Create, Update, Delete
+     */
+    public void testTemplateCRUD() throws Exception {
+        
+        UserManager mgr = RollerFactory.getRoller().getUserManager();
+        WeblogTemplate template = null;
+        
+        // create template
+        mgr.storePage(testPage);
+        
+        // check that create was successful
+        template = null;
+        template = mgr.getPageByName(testWeblog, testPage.getName());
+        assertNotNull(template);
+        assertEquals(testPage.getContents(), template.getContents());
+        
+        // update template
+        template.setName("testtesttest");
+        mgr.storePage(template);
+        
+        // check that update was successful
+        template = null;
+        template = mgr.getPageByName(testWeblog, "testtesttest");
+        assertNotNull(template);
+        assertEquals(testPage.getContents(), template.getContents());
+        
+        // delete template
+        mgr.removePage(template);
+        
+        // check that delete was successful
+        template = null;
+        template = mgr.getPageByName(testWeblog, testPage.getName());
+        assertNull(template);
+    }
+    
+    
+    /**
+     * Test lookup mechanisms ... id, name, link
+     */
+    public void testPermissionsLookups() throws Exception {
+        
+    }
+    
+}


Reply via email to