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);
+ }
+
}
-//
-//
-//
-//
-//
-//
-//