Author: agilliland
Date: Mon Apr 17 11:04:15 2006
New Revision: 394740

URL: http://svn.apache.org/viewcvs?rev=394740&view=rev
Log:
cleaning up BookmarkManager and getting it working with new backend.
unit tests refactored and working again.
bookmarks frontend cleaned up too.


Modified:
    incubator/roller/branches/roller-newbackend/build.xml
    
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateBookmarkManagerImpl.java
    
incubator/roller/branches/roller-newbackend/src/org/roller/model/BookmarkManager.java
    
incubator/roller/branches/roller-newbackend/src/org/roller/pojos/FolderData.java
    
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarkSaveAction.java
    
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarksAction.java
    
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/FolderSaveAction.java
    
incubator/roller/branches/roller-newbackend/tests/org/roller/business/BookmarkManagerTest.java

Modified: incubator/roller/branches/roller-newbackend/build.xml
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/build.xml?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- incubator/roller/branches/roller-newbackend/build.xml (original)
+++ incubator/roller/branches/roller-newbackend/build.xml Mon Apr 17 11:04:15 
2006
@@ -828,6 +828,7 @@
                <include name="org/roller/business/CommentTest.class"/>
                <include name="org/roller/business/FileManagerTest.class"/>
                <include name="org/roller/business/PlanetManagerTest.class"/>
+               <include name="org/roller/business/BookmarkManagerTest.class"/>
             </fileset>
         </batchtest>
     </junit>

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateBookmarkManagerImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateBookmarkManagerImpl.java?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateBookmarkManagerImpl.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateBookmarkManagerImpl.java
 Mon Apr 17 11:04:15 2006
@@ -70,6 +70,12 @@
         return bd;
     }
     
+    
+    public void storeBookmark(BookmarkData bookmark) throws RollerException {
+        this.strategy.store(bookmark);
+    }
+    
+    
     public BookmarkData retrieveBookmark(String id) throws RollerException {
         BookmarkData bd = (BookmarkData)
         strategy.load(id, BookmarkData.class);
@@ -84,7 +90,7 @@
 //     }
     
     public void removeBookmark(String id) throws RollerException {
-        strategy.removeAndCommit(id, BookmarkData.class);
+        strategy.remove(id, BookmarkData.class);
     }
     
     //------------------------------------------------------------ Folder CRUD
@@ -109,6 +115,23 @@
         return fd;
     }
     
+    
+    public void storeFolder(FolderData folder) throws RollerException {
+        
+        if(isDuplicateFolderName(folder)) {
+            throw new RollerException("Duplicate folder name");
+        }
+        
+        this.strategy.store(folder);
+    }
+    
+    
+    public void removeFolder(FolderData folder) throws RollerException {
+        
+        this.strategy.remove(folder);
+    }
+    
+    
     /**
      * Retrieve folder and lazy-load it's sub-folders and bookmarks.
      */
@@ -128,9 +151,6 @@
             StringReader reader = new StringReader( opml );
             Document doc = builder.build( reader );
             
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             FolderData newFolder = getFolder(website, folderName);
             if (newFolder == null) {
                 newFolder = createFolder(
@@ -146,22 +166,7 @@
                 importOpmlElement( website, elem, newFolder );
             }
             
-            // commit changes
-            this.strategy.getSession().getTransaction().commit();
-        } catch (JDOMException ex) {
-            throw new RollerException(ex);
-        } catch (IOException ex) {
-            throw new RollerException(ex);
-        } catch (HibernateException ex) {
-            
-            try {
-                this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
-                log.error("Error doing rollback", he);
-            }
-            
-            strategy.release();
-            
+        } catch (Exception ex) {
             throw new RollerException(ex);
         }
     }
@@ -231,9 +236,6 @@
         }
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             // Add to destination folder
             LinkedList deleteList = new LinkedList();
             Iterator srcBookmarks = src.getBookmarks().iterator();
@@ -258,18 +260,7 @@
                 this.strategy.remove(bd);
             }
             
-            // commit changes
-            this.strategy.getSession().getTransaction().commit();
-        } catch (HibernateException ex) {
-            
-            try {
-                this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
-                log.error("Error doing rollback", he);
-            }
-            
-            strategy.release();
-            
+        } catch (Exception ex) {
             throw new RollerException(ex);
         }
     }
@@ -277,30 +268,11 @@
     //----------------------------------------------------------------
     public void deleteFolderContents(FolderData src) throws RollerException {
         
-        try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
-            // just go through the folder and remove each bookmark
-            Iterator srcBookmarks = src.getBookmarks().iterator();
-            while (srcBookmarks.hasNext()) {
-                BookmarkData bd = (BookmarkData)srcBookmarks.next();
-                this.strategy.remove(bd);
-            }
-            
-            // commit changes
-            this.strategy.getSession().getTransaction().commit();
-        } catch (HibernateException ex) {
-            
-            try {
-                this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
-                log.error("Error doing rollback", he);
-            }
-            
-            strategy.release();
-            
-            throw new RollerException(ex);
+        // just go through the folder and remove each bookmark
+        Iterator srcBookmarks = src.getBookmarks().iterator();
+        while (srcBookmarks.hasNext()) {
+            BookmarkData bd = (BookmarkData)srcBookmarks.next();
+            this.strategy.remove(bd);
         }
     }
     
@@ -387,9 +359,6 @@
     public List retrieveBookmarks(FolderData folder, boolean subfolders)
     throws RollerException {
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = ((HibernatePersistenceStrategy) 
strategy).getSession();
             List bookmarks = new LinkedList();
             if (subfolders) {
@@ -411,6 +380,7 @@
                     }
                 }
             }
+            
             // get bookmarks in folder
             Criteria bookmarksQuery = session
                     .createCriteria(BookmarkData.class);
@@ -430,9 +400,6 @@
         if (website == null)
             throw new RollerException("website is null");
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = ((HibernatePersistenceStrategy) 
strategy).getSession();
             Criteria criteria = session.createCriteria(FolderAssoc.class);
             criteria.createAlias("folder", "f");
@@ -460,9 +427,6 @@
             throw new RollerException("Website is null");
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = ((HibernatePersistenceStrategy) 
strategy).getSession();
             Criteria criteria = session.createCriteria(FolderData.class);
             criteria.add(Expression.eq("website", website));
@@ -485,9 +449,6 @@
         if (null != parent) {
             List sameNames;
             try {
-                // begin transaction
-                this.strategy.getSession().beginTransaction();
-            
                 Session session = ((HibernatePersistenceStrategy) 
strategy).getSession();
                 Criteria criteria = session.createCriteria(FolderAssoc.class);
                 criteria.createAlias("folder", "f");
@@ -516,9 +477,6 @@
      */
     public Assoc getFolderParentAssoc(FolderData folder) throws 
RollerException {
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(FolderAssoc.class);
             criteria.add(Expression.eq("folder", folder));
@@ -542,9 +500,6 @@
      */
     public List getFolderChildAssocs(FolderData folder) throws RollerException 
{
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(FolderAssoc.class);
             criteria.add(Expression.eq("ancestorFolder", folder));
@@ -561,9 +516,6 @@
      */
     public List getAllFolderDecscendentAssocs(FolderData folder) throws 
RollerException {
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(FolderAssoc.class);
             criteria.add(Expression.eq("ancestorFolder", folder));
@@ -579,9 +531,6 @@
      */
     public List getFolderAncestorAssocs(FolderData folder) throws 
RollerException {
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(FolderAssoc.class);
             criteria.add(Expression.eq("folder", folder));
@@ -605,9 +554,6 @@
             // caching in the case that the (lazy) getBookmarks has been done 
already. --agangolli
             // TODO: condider changing to just use getBookmarks().size()
             
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(BookmarkData.class);
             criteria.add(Expression.eq("folder", folder));
@@ -625,9 +571,6 @@
     throws RollerException {
         boolean ret = false;
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(FolderAssoc.class);
             criteria.add(Expression.eq("folder", child));

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/model/BookmarkManager.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/model/BookmarkManager.java?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/model/BookmarkManager.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/model/BookmarkManager.java
 Mon Apr 17 11:04:15 2006
@@ -38,9 +38,10 @@
     /** Retrieve bookmark by ID, a persistent instance. */
     public BookmarkData retrieveBookmark(String id) throws RollerException;
 
-       /** Update or store bookmark object, becomes a persistent instance. */
-       //public void storeBookmark(BookmarkData data) throws RollerException;
-
+    
+    public void storeBookmark(BookmarkData bookmark) throws RollerException;
+    
+    
        /** Delete bookmark by ID. */
        public void removeBookmark(String id) throws RollerException;
 
@@ -56,6 +57,13 @@
         String desc, 
         WebsiteData website) throws RollerException;
 
+    
+    public void storeFolder(FolderData folder) throws RollerException;
+    
+    
+    public void removeFolder(FolderData folder) throws RollerException;
+    
+    
     /** Retrieve folder by ID, a persistent instance. */
     public FolderData retrieveFolder(String id) throws RollerException;
 

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/pojos/FolderData.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/pojos/FolderData.java?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/pojos/FolderData.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/pojos/FolderData.java
 Mon Apr 17 11:04:15 2006
@@ -60,21 +60,13 @@
     public void setData(org.roller.pojos.PersistentObject otherData)
     {
         mNewParent =       ((FolderData) otherData).mNewParent;
-        this.bookmarks =   ((FolderData) otherData).getBookmarks();
         this.id =          ((FolderData) otherData).getId();
         this.name =        ((FolderData) otherData).getName();
         this.description = ((FolderData) otherData).getDescription();
         this.website =     ((FolderData) otherData).getWebsite();
+        this.setBookmarks(((FolderData) otherData).getBookmarks());
     }
-
-    public void save() throws RollerException
-    {   
-        if 
(RollerFactory.getRoller().getBookmarkManager().isDuplicateFolderName(this))
-        {
-            throw new RollerException("Duplicate folder name");
-        }
-        super.save(); 
-    }
+    
     
     /** 
      * @see org.roller.pojos.HierarchicalPersistentObject#getAssocClass()
@@ -290,7 +282,7 @@
      *
      * @ejb:persistent-field
      * 
-     * @hibernate.set lazy="true" order-by="name" inverse="true" 
cascade="delete" 
+     * @hibernate.set lazy="true" order-by="name" inverse="true" 
cascade="all-delete-orphan" 
      * @hibernate.collection-key column="folderid" 
      * @hibernate.collection-one-to-many class="org.roller.pojos.BookmarkData"
      */
@@ -299,8 +291,8 @@
         return this.bookmarks;
     }
 
-    /** @ejb:persistent-field */
-    public void setBookmarks(Set bookmarks)
+    // this is private to force the use of add/remove bookmark methods.
+    private void setBookmarks(Set bookmarks)
     {
         this.bookmarks = bookmarks;
     }
@@ -309,15 +301,13 @@
     public void addBookmark(BookmarkData bookmark) throws RollerException
     {
         bookmark.setFolder(this);
-        bookmarks.add(bookmark);  
-        bookmark.save();      
+        getBookmarks().add(bookmark);
     }
 
     /** Remove boomkark from folder */
     public void removeBookmark(BookmarkData bookmark)
     {
-        bookmarks.remove(bookmark);
-        bookmark.setFolder(null);
+        getBookmarks().remove(bookmark);
     }
 
     /**
@@ -341,8 +331,11 @@
         while (entries.hasNext())
         {
             BookmarkData bookmark = (BookmarkData) entries.next();
-            bookmark.setFolder(dest);
-            bookmark.save();
+            
+            // just add bookmarks to new folder
+            // this breaks the old folder/bkmrk relationship
+            // so it's not necessary to explicitly remove
+            dest.addBookmark(bookmark);
         }
     }
 

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarkSaveAction.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarkSaveAction.java?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarkSaveAction.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarkSaveAction.java
 Mon Apr 17 11:04:15 2006
@@ -60,7 +60,8 @@
                 rses.getAuthenticatedUser(), PermissionsData.AUTHOR))
         {
             form.copyTo(bd, request.getLocale());
-            bd.save();
+            bmgr.storeBookmark(bd);
+            RollerFactory.getRoller().flush();
             RollerFactory.getRoller().commit();
             
             CacheManager.invalidate(bd);

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarksAction.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarksAction.java?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarksAction.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/BookmarksAction.java
 Mon Apr 17 11:04:15 2006
@@ -113,7 +113,7 @@
                 for (int i = 0; i < folders.length; i++)
                 {
                     FolderData fd = bmgr.retrieveFolder(folders[i]);
-                    fd.remove(); // removes child folders and bookmarks too
+                    bmgr.removeFolder(fd); // removes child folders and 
bookmarks too
                 }
             }
 
@@ -125,7 +125,7 @@
                     bmgr.removeBookmark(bookmarks[j]);
                 }
             }
-            // TODO: new transaction method, removeBookmarks(list)
+            RollerFactory.getRoller().flush();
             roller.commit();
                 
             CacheManager.invalidate(website);
@@ -190,7 +190,7 @@
                              && !parent.descendentOf(fd))
                         {
                             fd.setParent(parent);
-                            fd.save();
+                            bmgr.storeFolder(fd);
                         }
                         else 
                         {
@@ -206,17 +206,23 @@
                 {
                     for (int j = 0; j < bookmarks.length; j++)
                     {
+                        // maybe we should be using folder.addBookmark()?
                         BookmarkData bd = bmgr.retrieveBookmark(bookmarks[j]);
                         bd.setFolder(parent);
-                        bd.save();
+                        bmgr.storeBookmark(bd);
                     }
                 }
-                // TODO: new transaction method, saveBookmarks(list)
+                RollerFactory.getRoller().flush();
                 roller.commit();
 
                 CacheManager.invalidate(website);
                 
                 saveMessages(request, messages);
+                
+                // recreate model now that folder is altered
+                pageModel = new BookmarksPageModel(
+                        request, response, mapping, (BookmarksForm)actionForm);
+                request.setAttribute("model", pageModel);
             }
             catch (RollerException e)
             {

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/FolderSaveAction.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/FolderSaveAction.java?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/FolderSaveAction.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/presentation/bookmarks/actions/FolderSaveAction.java
 Mon Apr 17 11:04:15 2006
@@ -66,7 +66,8 @@
         {
             // Copy form values to object
             form.copyTo(fd, request.getLocale());
-            fd.save();
+            bmgr.storeFolder(fd);
+            RollerFactory.getRoller().flush();
             RollerFactory.getRoller().commit();
             
             CacheManager.invalidate(fd);

Modified: 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/BookmarkManagerTest.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/tests/org/roller/business/BookmarkManagerTest.java?rev=394740&r1=394739&r2=394740&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/BookmarkManagerTest.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/BookmarkManagerTest.java
 Mon Apr 17 11:04:15 2006
@@ -5,408 +5,373 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 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.RollerException;
-import org.roller.RollerPermissionsException;
+import org.roller.TestUtils;
 import org.roller.model.BookmarkManager;
-import org.roller.model.WeblogManager;
+import org.roller.model.Roller;
+import org.roller.model.RollerFactory;
 import org.roller.pojos.BookmarkData;
 import org.roller.pojos.FolderData;
 import org.roller.pojos.UserData;
-import org.roller.pojos.WeblogCategoryData;
 import org.roller.pojos.WebsiteData;
 import org.roller.util.Utilities;
-import org.roller.RollerTestBase;
 
 /**
  * Test Roller Bookmark Management.
  */
-public class BookmarkManagerTest extends RollerTestBase
-{
-//    
//------------------------------------------------------------------------
-//    public BookmarkManagerTest()
-//    {
-//        super();
-//    }
-//
-//    
//------------------------------------------------------------------------
-//    public BookmarkManagerTest(String name)
-//    {
-//        super(name);
-//    }
-//
-//    
//------------------------------------------------------------------------
-//    public static Test suite()
-//    {
-//        return new TestSuite(BookmarkManagerTest.class);
-//    }
-//
-//    
//------------------------------------------------------------------------
-//    public static void main(String args[])
-//    {
-//        junit.textui.TestRunner.run( BookmarkManagerTest.class );
-//    }
-//
-//    
//------------------------------------------------------------------------
-//
-//    public void testAddBookmarkToFolder() throws RollerException
-//    {
-//        BookmarkManager bmgr = getRoller().getBookmarkManager();
-//        FolderData folder = null;
-//        BookmarkData bookmark1 = null, bookmark2 = null;
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//
-//        WebsiteData website =
-//            getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
-//        FolderData root = bmgr.getRootFolder(website);
-//
-//        folder = bmgr.createFolder();
-//        folder.setName("TestFolder1");
-//        folder.setDescription("created by testAddBookmarkToFolder()");
-//        folder.setWebsite(website);
-//        folder.setParent(root);
-//        folder.save();
-//
-//        // Add bookmark by adding to folder
-//        bookmark1 = bmgr.createBookmark(
-//            folder,
-//            "TestBookmark1",
-//            "created by testAddBookmarkToFolder()",
-//            "http://www.example.com";,
-//            "http://www.example.com/rss.xml";,
-//            new Integer(1),
-//            new Integer(12),
-//            "test.jpg");
-//        folder.addBookmark(bookmark1);
-//
-//        // Add another bookmark
-//        bookmark2 = bmgr.createBookmark(
-//            folder,
-//            "TestBookmark2",
-//            "created by testAddBookmarkToFolder()",
-//            "http://www.example.com";,
-//            "http://www.example.com/rss.xml";,
-//            new Integer(1),
-//            new Integer(12),
-//            "test.jpf");
-//        folder.addBookmark(bookmark2);
-//
-//        getRoller().commit();
-//
-//        FolderData testFolder = null;
-//        BookmarkData bookmarkb = null, bookmarka = null;
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//        // See that two bookmarks were stored
-//        testFolder = bmgr.retrieveFolder(folder.getId());
-//        assertEquals(2, testFolder.getBookmarks().size());
-//        bookmarka = 
(BookmarkData)testFolder.getBookmarks().iterator().next();
-//        bookmarkb = 
(BookmarkData)testFolder.getBookmarks().iterator().next();
-//        // Remove one bookmark
-//        testFolder.removeBookmark(bookmarka);
-//        bmgr.removeBookmark(bookmarka.getId());
-//        getRoller().commit();
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//        // Folder should now contain one bookmark
-//        testFolder = bmgr.retrieveFolder(folder.getId());
-//        assertEquals(1, testFolder.getBookmarks().size());
-//        getRoller().release();
-//
-//        // Remove folder
-//        getRoller().begin(UserData.SYSTEM_USER);
-//        testFolder = bmgr.retrieveFolder(folder.getId());
-//        testFolder.remove();
-//        getRoller().commit();
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//        // Folder and one remaining bookmark should be gone
-//        assertNull( bmgr.retrieveBookmark(bookmarkb.getId()) );
-//        assertNull( bmgr.retrieveFolder(folder.getId()) );
-//        getRoller().release();
-//    }
-//
-//    
//------------------------------------------------------------------------
-//    public void testBookmarkImport() throws Exception
-//    {
-//        importBookmarks("/bookmarks.opml");
-//    }
-//
-//    
//------------------------------------------------------------------------
-//    public void importBookmarks(String fileName) throws Exception
-//    {
-//        getRoller().begin(UserData.SYSTEM_USER);
-//        InputStream fis = this.getClass().getResourceAsStream(fileName);
-//        getRoller().getBookmarkManager().importBookmarks(
-//            mWebsite, "ZZZ_imports_ZZZ", fileToString(fis));
-//        getRoller().commit();
-//        getRoller().release();
-//
-//        FolderData fd = null;
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//        fd = getRoller().getBookmarkManager().getFolder(mWebsite, 
"ZZZ_imports_ZZZ");
-//        assertTrue("no bookmarks found", fd.retrieveBookmarks(true).size() > 
0 );
-//        fd.remove();
-//        getRoller().commit();
-//    }
-//
-//    
//------------------------------------------------------------------------
-//    public String fileToString( InputStream is ) throws java.io.IOException
-//    {
-//        BufferedReader br = new BufferedReader(new InputStreamReader(is));
-//        String s = null;
-//        StringBuffer sb = new StringBuffer();
-//        while ( (s=br.readLine()) != null )
-//        {
-//            sb.append( s );
-//        }
-//        return sb.toString();
-//    }
-//
-//    
//------------------------------------------------------------------------
-//
-//    /**
-//     * Creates folder tree like this:
-//     *    root/
-//     *       dest/
-//     *       f1/
-//     *          b1
-//     *          f2/
-//     *             f3/
-//     */
-//    public void testMoveFolderContents() throws RollerException
-//    {
-//        WebsiteData wd = null;
-//        BookmarkManager bmgr = getRoller().getBookmarkManager();
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//
-//        wd = getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
-//        FolderData root = bmgr.getRootFolder(wd);
-//
-//        FolderData dest = bmgr.createFolder();
-//        dest.setName("dest");
-//        dest.setParent(root);
-//        dest.setWebsite(wd);
-//        dest.save();
-//
-//        // create source folder f1
-//        FolderData f1 = bmgr.createFolder();
-//        f1.setName("f1");
-//        f1.setParent(root);
-//        f1.setWebsite(wd);
-//        f1.save();
-//
-//        // create bookmark b1 inside source folder f1
-//        BookmarkData b1 = bmgr.createBookmark(
-//            f1, "b1", "testbookmark",
-//            "http://example.com";, "http://example.com/rss";,
-//            new Integer(1), new Integer(1), "image.gif");
-//        b1.save();
-//
-//        // create folder f2 inside f1
-//        FolderData f2 = bmgr.createFolder();
-//        f2.setName("f2");
-//        f2.setParent(f1);
-//        f2.setWebsite(wd);
-//        f2.save();
-//
-//        // create bookmark b2 inside folder f2
-//        BookmarkData b2 = bmgr.createBookmark(
-//            f2, "b2", "testbookmark",
-//            "http://example.com";, "http://example.com/rss";,
-//            new Integer(1), new Integer(1), "image.gif");
-//        b2.save();
-//
-//        // create folder f3 inside folder f2
-//        FolderData f3 = bmgr.createFolder();
-//        f3.setName("f3");
-//        f3.setParent(f2);
-//        f3.setWebsite(wd);
-//        f3.save();
-//
-//        // crete bookmark b3 inside folder f3
-//        BookmarkData b3 = bmgr.createBookmark(
-//            f3, "b3", "testbookmark",
-//            "http://example.com";, "http://example.com/rss";,
-//            new Integer(1), new Integer(1), "image.gif");
-//        b3.save();
-//
-//        getRoller().commit();
-//        
-//        // test that parent cannot be moved into child
-//        boolean safe = false;
-//        try 
-//        {
-//            getRoller().begin(UserData.SYSTEM_USER);     
-//                   
-//            // Move folder into one of it's children
-//            f1 = bmgr.retrieveFolder(f1.getId());       
-//            f3 = bmgr.retrieveFolder(f3.getId());       
-//            bmgr.moveFolderContents(f1, f3);
-//            f3.save();
-//            f1.save();
-//            getRoller().commit(); 
-//        }
-//        catch (RollerException e)
-//        {
-//            safe = true;
-//        }
-//        assertTrue(safe);
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//
-//        // verify number of entries in each folder
-//        dest = bmgr.retrieveFolder(dest.getId());
-//        f1 = bmgr.retrieveFolder(f1.getId());
-//        assertEquals(0, dest.retrieveBookmarks(true).size());
-//        assertEquals(0, dest.retrieveBookmarks(false).size());
-//        assertEquals(1, f1.retrieveBookmarks(false).size());
-//
-//        List f1list = f1.retrieveBookmarks(true);
-//        assertEquals(3, f1list.size());
-//
-//        // move contents of source category c1 to destination catetory dest
-//        f1.moveContents(dest);
-//
-//        getRoller().commit();
-//
-//
-//
-//        getRoller().begin(UserData.SYSTEM_USER);
-//
-//        // after move, verify number of entries in eacch folder
-//        dest = bmgr.retrieveFolder(dest.getId());
-//        f1 = bmgr.retrieveFolder(f1.getId());
-//        assertEquals(3, dest.retrieveBookmarks(true).size());
-//        assertEquals(3, dest.retrieveBookmarks(false).size());
-//        assertEquals(0, f1.retrieveBookmarks(true).size());
-//        assertEquals(0, f1.retrieveBookmarks(false).size());
-//
-//        getRoller().commit();
-//    }
-//
-//    /** Test bookmark folder paths. */
-//    public void testPaths() throws Exception
-//    {
-//        WebsiteData wd = null;
-//        BookmarkManager bmgr = getRoller().getBookmarkManager();
-//        try
-//        {
-//            getRoller().begin(UserData.SYSTEM_USER);
-//
-//            wd = 
getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
-//            FolderData root = bmgr.getRootFolder(wd);
-//
-//            FolderData f1 = bmgr.createFolder();
-//            f1.setName("f1");
-//            f1.setParent(root);
-//            f1.setWebsite(wd);
-//            f1.save();
-//
-//            FolderData f2 = bmgr.createFolder();
-//            f2.setName("f2");
-//            f2.setParent(f1);
-//            f2.setWebsite(wd);
-//            f2.save();
-//
-//            FolderData f3 = bmgr.createFolder();
-//            f3.setName("f3");
-//            f3.setParent(f2);
-//            f3.setWebsite(wd);
-//            f3.save();
-//
-//            getRoller().commit();
-//        }
-//        catch (RollerException e)
-//        {
-//            getRoller().release();
-//            mLogger.error(e);
-//        }
-//
-//        try
-//        {
-//            getRoller().begin(UserData.SYSTEM_USER);
-//
-//            assertEquals("f1",bmgr.getFolderByPath(wd, null, 
"/f1").getName());
-//            assertEquals("f2",bmgr.getFolderByPath(wd, null, 
"/f1/f2").getName());
-//            assertEquals("f3",bmgr.getFolderByPath(wd, null, 
"/f1/f2/f3").getName());
-//
-//            FolderData f3 = bmgr.getFolderByPath(wd, null, "/f1/f2/f3");
-//            String pathString = bmgr.getPath(f3);
-//            String[] pathArray = 
Utilities.stringToStringArray(pathString,"/");
-//            assertEquals("f1", pathArray[0]);
-//            assertEquals("f2", pathArray[1]);
-//            assertEquals("f3", pathArray[2]);
-//
-//            getRoller().release();
-//        }
-//        catch (RollerException e)
-//        {
-//            getRoller().release();
-//            mLogger.error(e);
-//        }
-//    }
-//
-//    /** Ensure that duplicate folder name will throw RollerException */
-//    public void testUniquenessOfFolderNames() throws Exception
-//    {
-//        boolean exception = false;
-//        WebsiteData wd = null;
-//        FolderData f3 = null;
-//        BookmarkManager bmgr = getRoller().getBookmarkManager();
-//        try
-//        {
-//            getRoller().begin(UserData.SYSTEM_USER);
-//
-//            wd = 
getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
-//            FolderData root = bmgr.getRootFolder(wd);
-//
-//            FolderData f1 = bmgr.createFolder();
-//            f1.setName("f1");
-//            f1.setParent(root);
-//            f1.setWebsite(wd);
-//            f1.save();
-//
-//            // first child folder
-//            FolderData f2 = bmgr.createFolder();
-//            f2.setName("f2");
-//            f2.setParent(f1);
-//            f2.setWebsite(wd);
-//            f2.save();
-//
-//            getRoller().commit();
-//
-//            getRoller().begin(UserData.SYSTEM_USER);
-//
-//            // child folder with same name as first
-//            f3 = bmgr.createFolder();
-//            f3.setName("f2");
-//            f3.setParent(f1);
-//            f3.setWebsite(wd);
-//            f3.save();
-//
-//            getRoller().commit();
-//        }
-//        catch (RollerException e)
-//        {
-//            exception = true;
-//        }
-//
-//        assertTrue(exception);
-//    }
-//
-//
+public class BookmarkManagerTest extends TestCase {
+    
+    public static Log log = LogFactory.getLog(BookmarkManagerTest.class);
+    
+    UserData testUser = null;
+    WebsiteData testWeblog = null;
+    
+    
+    public BookmarkManagerTest(String name) {
+        super(name);
+    }
+    
+    
+    public static Test suite() {
+        return new TestSuite(BookmarkManagerTest.class);
+    }
+    
+    
+    /**
+     * All tests in this suite require a user and a weblog.
+     */
+    public void setUp() throws Exception {
+        
+        try {
+            testUser = TestUtils.setupUser("bkmrkTestUser");
+            testWeblog = TestUtils.setupWeblog("bkmrkTestWeblog", testUser);
+            TestUtils.endSession(true);
+        } catch (Exception ex) {
+            log.error(ex);
+            throw new Exception("Test setup failed", ex);
+        }
+    }
+    
+    public void tearDown() throws Exception {
+        
+        try {
+            TestUtils.teardownWeblog(testWeblog.getId());
+            TestUtils.teardownUser(testUser.getId());
+            TestUtils.endSession(true);
+        } catch (Exception ex) {
+            log.error(ex);
+            throw new Exception("Test teardown failed", ex);
+        }
+    }
+    
+    public Roller getRoller() {
+        return RollerFactory.getRoller();
+    }
+    
+    
+    public void testAddBookmarkToFolder() throws Exception {
+        
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+        FolderData folder = null;
+        BookmarkData bookmark1 = null, bookmark2 = null;
+        
+        FolderData root = bmgr.getRootFolder(testWeblog);
+        
+        folder = bmgr.createFolder();
+        folder.setName("TestFolder1");
+        folder.setDescription("created by testAddBookmarkToFolder()");
+        folder.setWebsite(testWeblog);
+        folder.setParent(root);
+        bmgr.storeFolder(folder);
+        
+        // Add bookmark by adding to folder
+        bookmark1 = bmgr.createBookmark(
+                folder,
+                "TestBookmark1",
+                "created by testAddBookmarkToFolder()",
+                "http://www.example.com";,
+                "http://www.example.com/rss.xml";,
+                new Integer(1),
+                new Integer(12),
+                "test.jpg");
+        folder.addBookmark(bookmark1);
+        
+        // Add another bookmark
+        bookmark2 = bmgr.createBookmark(
+                folder,
+                "TestBookmark2",
+                "created by testAddBookmarkToFolder()",
+                "http://www.example.com";,
+                "http://www.example.com/rss.xml";,
+                new Integer(1),
+                new Integer(12),
+                "test.jpf");
+        folder.addBookmark(bookmark2);
+        
+        TestUtils.endSession(true);
+        
+        FolderData testFolder = null;
+        BookmarkData bookmarkb = null, bookmarka = null;
+        
+        // See that two bookmarks were stored
+        testFolder = bmgr.retrieveFolder(folder.getId());
+        assertEquals(2, testFolder.getBookmarks().size());
+        bookmarka = (BookmarkData)testFolder.getBookmarks().iterator().next();
+        bookmarkb = (BookmarkData)testFolder.getBookmarks().iterator().next();
+        // Remove one bookmark
+        testFolder.removeBookmark(bookmarka);
+        bmgr.removeBookmark(bookmarka.getId());
+        TestUtils.endSession(true);
+        
+        // Folder should now contain one bookmark
+        testFolder = bmgr.retrieveFolder(folder.getId());
+        assertEquals(1, testFolder.getBookmarks().size());
+        TestUtils.endSession(true);
+        
+        // Remove folder
+        testFolder = bmgr.retrieveFolder(folder.getId());
+        bmgr.removeFolder(testFolder);
+        TestUtils.endSession(true);
+        
+        // Folder and one remaining bookmark should be gone
+        assertNull( bmgr.retrieveBookmark(bookmarkb.getId()) );
+        assertNull( bmgr.retrieveFolder(folder.getId()) );
+    }
+    
+    
+    public void testBookmarkImport() throws Exception {
+        importBookmarks("/bookmarks.opml");
+    }
+    
+    
+    public void importBookmarks(String fileName) throws Exception {
+        
+        InputStream fis = this.getClass().getResourceAsStream(fileName);
+        getRoller().getBookmarkManager().importBookmarks(
+                testWeblog, "ZZZ_imports_ZZZ", fileToString(fis));
+        TestUtils.endSession(true);
+        
+        FolderData fd = null;
+        
+        fd = getRoller().getBookmarkManager().getFolder(testWeblog, 
"ZZZ_imports_ZZZ");
+        assertTrue("no bookmarks found", fd.retrieveBookmarks(true).size() > 0 
);
+        getRoller().getBookmarkManager().removeFolder(fd);
+        TestUtils.endSession(true);
+    }
+    
+    
+    public String fileToString( InputStream is ) throws java.io.IOException {
+        BufferedReader br = new BufferedReader(new InputStreamReader(is));
+        String s = null;
+        StringBuffer sb = new StringBuffer();
+        while ( (s=br.readLine()) != null ) {
+            sb.append( s );
+        }
+        return sb.toString();
+    }
+    
+    
+    /**
+     * Creates folder tree like this:
+     *    root/
+     *       dest/
+     *       f1/
+     *          b1
+     *          f2/
+     *             f3/
+     */
+    public void testMoveFolderContents() throws Exception {
+        
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+        
+        FolderData root = bmgr.getRootFolder(testWeblog);
+        
+        FolderData dest = bmgr.createFolder();
+        dest.setName("dest");
+        dest.setParent(root);
+        dest.setWebsite(testWeblog);
+        bmgr.storeFolder(dest);
+        
+        // create source folder f1
+        FolderData f1 = bmgr.createFolder();
+        f1.setName("f1");
+        f1.setParent(root);
+        f1.setWebsite(testWeblog);
+        bmgr.storeFolder(f1);
+        
+        // create bookmark b1 inside source folder f1
+        BookmarkData b1 = bmgr.createBookmark(
+                f1, "b1", "testbookmark",
+                "http://example.com";, "http://example.com/rss";,
+                new Integer(1), new Integer(1), "image.gif");
+        f1.addBookmark(b1);
+        
+        // create folder f2 inside f1
+        FolderData f2 = bmgr.createFolder();
+        f2.setName("f2");
+        f2.setParent(f1);
+        f2.setWebsite(testWeblog);
+        bmgr.storeFolder(f2);
+        
+        // create bookmark b2 inside folder f2
+        BookmarkData b2 = bmgr.createBookmark(
+                f2, "b2", "testbookmark",
+                "http://example.com";, "http://example.com/rss";,
+                new Integer(1), new Integer(1), "image.gif");
+        f2.addBookmark(b2);
+        
+        // create folder f3 inside folder f2
+        FolderData f3 = bmgr.createFolder();
+        f3.setName("f3");
+        f3.setParent(f2);
+        f3.setWebsite(testWeblog);
+        bmgr.storeFolder(f3);
+        
+        // crete bookmark b3 inside folder f3
+        BookmarkData b3 = bmgr.createBookmark(
+                f3, "b3", "testbookmark",
+                "http://example.com";, "http://example.com/rss";,
+                new Integer(1), new Integer(1), "image.gif");
+        f3.addBookmark(b3);
+        
+        TestUtils.endSession(true);
+        
+        // test that parent cannot be moved into child
+        boolean safe = false;
+        try {
+            
+            // Move folder into one of it's children
+            f1 = bmgr.retrieveFolder(f1.getId());
+            f3 = bmgr.retrieveFolder(f3.getId());
+            bmgr.moveFolderContents(f1, f3);
+            //f3.save();
+            //f1.save();
+            TestUtils.endSession(true);
+        } catch (RollerException e) {
+            safe = true;
+        }
+        assertTrue(safe);
+        
+        // verify number of entries in each folder
+        dest = bmgr.retrieveFolder(dest.getId());
+        f1 = bmgr.retrieveFolder(f1.getId());
+        assertEquals(0, dest.retrieveBookmarks(true).size());
+        assertEquals(0, dest.retrieveBookmarks(false).size());
+        assertEquals(1, f1.retrieveBookmarks(false).size());
+        
+        List f1list = f1.retrieveBookmarks(true);
+        assertEquals(3, f1list.size());
+        
+        // move contents of source category c1 to destination catetory dest
+        f1.moveContents(dest);
+        bmgr.storeFolder(f1);
+        bmgr.storeFolder(dest);
+        TestUtils.endSession(true);
+        
+        // after move, verify number of entries in eacch folder
+        dest = bmgr.retrieveFolder(dest.getId());
+        f1 = bmgr.retrieveFolder(f1.getId());
+        assertEquals(3, dest.retrieveBookmarks(true).size());
+        assertEquals(3, dest.retrieveBookmarks(false).size());
+        assertEquals(0, f1.retrieveBookmarks(true).size());
+        assertEquals(0, f1.retrieveBookmarks(false).size());
+    }
+    
+    
+    /** Test bookmark folder paths. */
+    public void testPaths() throws Exception {
+        
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+        
+        try {
+            FolderData root = bmgr.getRootFolder(testWeblog);
+            
+            FolderData f1 = bmgr.createFolder();
+            f1.setName("f1");
+            f1.setParent(root);
+            f1.setWebsite(testWeblog);
+            bmgr.storeFolder(f1);
+            
+            FolderData f2 = bmgr.createFolder();
+            f2.setName("f2");
+            f2.setParent(f1);
+            f2.setWebsite(testWeblog);
+            bmgr.storeFolder(f2);
+            
+            FolderData f3 = bmgr.createFolder();
+            f3.setName("f3");
+            f3.setParent(f2);
+            f3.setWebsite(testWeblog);
+            bmgr.storeFolder(f3);
+            
+            TestUtils.endSession(true);
+        } catch (RollerException e) {
+            TestUtils.endSession(true);
+            log.error(e);
+        }
+        
+        try {
+            
+            assertEquals("f1",bmgr.getFolderByPath(testWeblog, null, 
"/f1").getName());
+            assertEquals("f2",bmgr.getFolderByPath(testWeblog, null, 
"/f1/f2").getName());
+            assertEquals("f3",bmgr.getFolderByPath(testWeblog, null, 
"/f1/f2/f3").getName());
+            
+            FolderData f3 = bmgr.getFolderByPath(testWeblog, null, 
"/f1/f2/f3");
+            String pathString = bmgr.getPath(f3);
+            String[] pathArray = Utilities.stringToStringArray(pathString,"/");
+            assertEquals("f1", pathArray[0]);
+            assertEquals("f2", pathArray[1]);
+            assertEquals("f3", pathArray[2]);
+            
+        } catch (RollerException e) {
+            TestUtils.endSession(true);
+            log.error(e);
+        }
+    }
+    
+    
+    /** Ensure that duplicate folder name will throw RollerException */
+    public void testUniquenessOfFolderNames() throws Exception {
+        
+        boolean exception = false;
+        FolderData f3 = null;
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+        try {
+            FolderData root = bmgr.getRootFolder(testWeblog);
+            
+            FolderData f1 = bmgr.createFolder();
+            f1.setName("f1");
+            f1.setParent(root);
+            f1.setWebsite(testWeblog);
+            bmgr.storeFolder(f1);
+            
+            // first child folder
+            FolderData f2 = bmgr.createFolder();
+            f2.setName("f2");
+            f2.setParent(f1);
+            f2.setWebsite(testWeblog);
+            bmgr.storeFolder(f2);
+            
+            TestUtils.endSession(true);
+            
+            // child folder with same name as first
+            f3 = bmgr.createFolder();
+            f3.setName("f2");
+            f3.setParent(f1);
+            f3.setWebsite(testWeblog);
+            bmgr.storeFolder(f3);
+            
+            TestUtils.endSession(true);
+        } catch (RollerException e) {
+            exception = true;
+        }
+        
+        assertTrue(exception);
+    }
+    
 }
-//
-//
-//
-//
-//
-//
-//


Reply via email to