You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@roller.apache.org by Mitesh Meswani <Mi...@Sun.COM> on 2006/12/18 19:54:55 UTC
Refactoring required to remove Roller's dependency on Hibernate
feature cascade="all-delete-orphan"
Index: src/org/apache/roller/pojos/FolderData.java
===================================================================
--- src/org/apache/roller/pojos/FolderData.java (revision 488141)
+++ src/org/apache/roller/pojos/FolderData.java (working copy)
@@ -296,15 +296,6 @@
getBookmarks().add(bookmark);
}
-
- /**
- * Remove a boomkark from folder.
- */
- public void removeBookmark(BookmarkData bookmark) {
- getBookmarks().remove(bookmark);
- }
-
-
/**
* @roller.wrapPojoMethod type="pojo-collection" class="org.apache.roller.pojos.BookmarkData"
*
Index: src/org/apache/roller/pojos/UserData.java
===================================================================
--- src/org/apache/roller/pojos/UserData.java (revision 488141)
+++ src/org/apache/roller/pojos/UserData.java (working copy)
@@ -434,38 +434,14 @@
return false;
}
-
/**
- * Revokes specified role from user.
- */
- public void revokeRole(String roleName) throws RollerException {
- RoleData removeme = null;
- Iterator iter = roles.iterator();
- while (iter.hasNext()) {
- RoleData role = (RoleData) iter.next();
- if (role.getRole().equals(roleName)) {
- removeme = role;
- }
- }
-
- /*
- * NOTE: we do this outside the loop above because we are not allowed
- * to modify the contents of the Set while we are iterating over it.
- * doing so causes a ConcurrentModificationException
- */
- if(removeme != null) {
- roles.remove(removeme);
- }
- }
-
-
- /**
* Grant to user role specified by role name.
*/
public void grantRole(String roleName) throws RollerException {
if (!hasRole(roleName)) {
RoleData role = new RoleData(null, this, roleName);
roles.add(role);
+ role.setUser(this);
}
}
Index: src/org/apache/roller/pojos/WeblogEntryData.java
===================================================================
--- src/org/apache/roller/pojos/WeblogEntryData.java (revision 488141)
+++ src/org/apache/roller/pojos/WeblogEntryData.java (working copy)
@@ -404,12 +404,8 @@
att.setValue(value);
}
}
- public void removeEntryAttribute(String name) throws RollerException {
- EntryAttributeData att = (EntryAttributeData)attMap.get(name);
- if (att != null) {
- attMap.remove(att);
- attSet.remove(att);
- }
+ public void onRemoveEntryAttribute(EntryAttributeData att) throws RollerException {
+ attMap.remove(att);
}
//-------------------------------------------------------------------------
@@ -654,16 +650,10 @@
addedTags.add(name);
}
- public void removeTag(String name) throws RollerException {
- for (Iterator it = tagSet.iterator(); it.hasNext();) {
- WeblogEntryTagData tag = (WeblogEntryTagData) it.next();
- if (tag.getName().equals(name)) {
- removedTags.add(name);
- it.remove();
- }
- }
+ public void onRemoveTag(String name) throws RollerException {
+ removedTags.add(name);
}
-
+
public Set getAddedTags() {
return addedTags;
}
@@ -696,9 +686,10 @@
newTags.remove(tag.getName());
}
}
-
+
+ WeblogManager weblogManager = RollerFactory.getRoller().getWeblogManager();
for (Iterator it = removeTags.iterator(); it.hasNext();) {
- removeTag((String) it.next());
+ weblogManager.removeWeblogEntryTag((String) it.next(), this);
}
for (Iterator it = newTags.iterator(); it.hasNext();) {
Index: src/org/apache/roller/business/UserManager.java
===================================================================
--- src/org/apache/roller/business/UserManager.java (revision 488141)
+++ src/org/apache/roller/business/UserManager.java (working copy)
@@ -27,7 +27,6 @@
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WebsiteData;
-
/**
* Manages users, weblogs, permissions, and weblog pages.
*/
@@ -325,8 +324,15 @@
public void retireUser(WebsiteData website, UserData user)
throws RollerException;
-
/**
+ * Retire user from a website
+ * @param roleName Name of the role to be revoked
+ * @param user User for whom the role is to be revoked
+ */
+ public void revokeRole(String roleName, UserData user)
+ throws RollerException;
+
+ /**
* Store page.
*/
public void savePage(WeblogTemplate data) throws RollerException;
Index: src/org/apache/roller/business/WeblogManager.java
===================================================================
--- src/org/apache/roller/business/WeblogManager.java (revision 488141)
+++ src/org/apache/roller/business/WeblogManager.java (working copy)
@@ -194,9 +194,22 @@
* @return Collection of WeblogEntryData objects.
*/
public List getWeblogEntriesPinnedToMain(Integer max) throws RollerException;
-
-
+
/**
+ * Remove attribute with given name from given WeblogEntryData
+ * @param name Name of attribute to be removed
+ */
+ public void removeWeblogEntryAttribute(String name, WeblogEntryData entry)
+ throws RollerException;
+
+ /**
+ * Remove tag with given name from given WeblogEntryData
+ * @param name Name of tag to be removed
+ */
+ public void removeWeblogEntryTag(String name, WeblogEntryData entry)
+ throws RollerException;
+
+ /**
* Save weblog category.
*/
public void saveWeblogCategory(WeblogCategoryData cat) throws RollerException;
Index: src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java
===================================================================
--- src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java (revision 488141)
+++ src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java (working copy)
@@ -26,6 +26,8 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
+import java.util.Collection;
+
import org.apache.roller.pojos.StatCount;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
@@ -58,6 +60,7 @@
import org.apache.roller.pojos.WeblogCategoryData;
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.pojos.WebsiteData;
+import org.apache.roller.pojos.RoleData;
import org.hibernate.Query;
@@ -406,6 +409,29 @@
website.removePermission(target);
this.strategy.remove(target);
}
+
+ public void revokeRole(String roleName, UserData user) throws RollerException {
+ RoleData removeme = null;
+ Collection roles = user.getRoles();
+ Iterator iter = roles.iterator();
+ while (iter.hasNext()) {
+ RoleData role = (RoleData) iter.next();
+ if (role.getRole().equals(roleName)) {
+ removeme = role;
+ }
+ }
+
+ /*
+ * NOTE: we do this outside the loop above because we are not allowed
+ * to modify the contents of the Set while we are iterating over it.
+ * doing so causes a ConcurrentModificationException
+ */
+ if(removeme != null) {
+ roles.remove(removeme);
+ this.strategy.remove(removeme);
+ }
+ }
+
public WebsiteData getWebsite(String id) throws RollerException {
return (WebsiteData) this.strategy.load(id,WebsiteData.class);
Index: src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
===================================================================
--- src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java (revision 488141)
+++ src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java (working copy)
@@ -50,6 +50,7 @@
import org.apache.roller.pojos.WeblogEntryTagData;
import org.apache.roller.pojos.WeblogEntryTagAggregateData;
import org.apache.roller.pojos.WebsiteData;
+import org.apache.roller.pojos.EntryAttributeData;
import org.apache.roller.util.DateUtil;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
@@ -60,13 +61,7 @@
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
-import org.hibernate.dialect.DerbyDialect;
-import org.hibernate.dialect.Dialect;
-import org.hibernate.dialect.OracleDialect;
-import org.hibernate.dialect.SQLServerDialect;
-import org.hibernate.engine.SessionFactoryImplementor;
-
/**
* Hibernate implementation of the WeblogManager.
*/
@@ -547,10 +542,39 @@
throw new RollerException(e);
}
}
-
-
- public WeblogEntryData getWeblogEntryByAnchor(WebsiteData website, String anchor)
+
+ public void removeWeblogEntryAttribute(String name, WeblogEntryData entry)
throws RollerException {
+ for (Iterator it = entry.getEntryAttributes().iterator(); it.hasNext();) {
+ EntryAttributeData entryAttribute = (EntryAttributeData) it.next();
+ if (entryAttribute.getName().equals(name)) {
+ //Call back the entity to adjust its internal state
+ entry.onRemoveEntryAttribute(entryAttribute);
+ //Remove it from database
+ this.strategy.remove(entryAttribute);
+ //Remove it from the collection
+ it.remove();
+ }
+ }
+ }
+
+ public void removeWeblogEntryTag(String name, WeblogEntryData entry)
+ throws RollerException {
+ for (Iterator it = entry.getTags().iterator(); it.hasNext();) {
+ WeblogEntryTagData tag = (WeblogEntryTagData) it.next();
+ if (tag.getName().equals(name)) {
+ //Call back the entity to adjust its internal state
+ entry.onRemoveTag(name);
+ //Remove it from database
+ this.strategy.remove(tag);
+ //Remove it from the collection
+ it.remove();
+ }
+ }
+ }
+
+ public WeblogEntryData getWeblogEntryByAnchor(WebsiteData website, String anchor)
+ throws RollerException {
if (website == null)
throw new RollerException("Website is null");
Index: src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryFormAction.java
===================================================================
--- src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryFormAction.java (revision 488141)
+++ src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryFormAction.java (working copy)
@@ -513,10 +513,11 @@
}
if (!valid || empty) {
mLogger.debug("Removing MediaCast attributes");
+ WeblogManager weblogManager = RollerFactory.getRoller().getWeblogManager();
try {
- entry.removeEntryAttribute("att_mediacast_url");
- entry.removeEntryAttribute("att_mediacast_type");
- entry.removeEntryAttribute("att_mediacast_length");
+ weblogManager.removeWeblogEntryAttribute("att_mediacast_url", entry);
+ weblogManager.removeWeblogEntryAttribute("att_mediacast_type", entry);
+ weblogManager.removeWeblogEntryAttribute("att_mediacast_length", entry);
} catch (RollerException e) {
mLogger.error("ERROR removing invalid MediaCast attributes");
}
Index: src/org/apache/roller/ui/admin/struts/formbeans/UserAdminForm.java
===================================================================
--- src/org/apache/roller/ui/admin/struts/formbeans/UserAdminForm.java (revision 488141)
+++ src/org/apache/roller/ui/admin/struts/formbeans/UserAdminForm.java (working copy)
@@ -23,6 +23,9 @@
import org.apache.struts.action.ActionMapping;
import org.apache.roller.RollerException;
+import org.apache.roller.business.Roller;
+import org.apache.roller.business.RollerImpl;
+import org.apache.roller.business.RollerFactory;
import org.apache.roller.pojos.UserData;
import org.apache.roller.ui.authoring.struts.forms.UserForm;
@@ -118,7 +121,7 @@
}
else
{
- user.revokeRole("admin");
+ RollerFactory.getRoller().getUserManager().revokeRole("admin", user);
}
}
Index: tests/org/apache/roller/business/WeblogEntryTest.java
===================================================================
--- tests/org/apache/roller/business/WeblogEntryTest.java (revision 488141)
+++ tests/org/apache/roller/business/WeblogEntryTest.java (working copy)
@@ -415,8 +415,8 @@
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
- entry.removeTag("testtag");
- entry.removeTag("testtag2");
+ mgr.removeWeblogEntryTag("testtag", entry);
+ mgr.removeWeblogEntryTag("testtag2", entry);
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
Index: tests/org/apache/roller/business/BookmarkTest.java
===================================================================
--- tests/org/apache/roller/business/BookmarkTest.java (revision 488141)
+++ tests/org/apache/roller/business/BookmarkTest.java (working copy)
@@ -328,7 +328,7 @@
bookmarkb = (BookmarkData)testFolder.getBookmarks().iterator().next();
// Remove one bookmark
- testFolder.removeBookmark(bookmarka);
+ bmgr.removeBookmark(bookmarka);
bmgr.saveFolder(testFolder);
TestUtils.endSession(true);
Index: tests/org/apache/roller/business/UserTest.java
===================================================================
--- tests/org/apache/roller/business/UserTest.java (revision 488141)
+++ tests/org/apache/roller/business/UserTest.java (working copy)
@@ -186,7 +186,7 @@
assertTrue(user.hasRole("admin"));
// remove role
- user.revokeRole("admin");
+ mgr.revokeRole("admin",user);
mgr.saveUser(user);
TestUtils.endSession(true);