You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2007/06/01 06:40:46 UTC

svn commit: r543386 - in /roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger: business/hibernate/HibernateUserManagerImpl.java ui/struts2/editor/Members.java

Author: agilliland
Date: Thu May 31 21:40:45 2007
New Revision: 543386

URL: http://svn.apache.org/viewvc?view=rev&rev=543386
Log:
fix for ROL-1424 where the members and membersInvite actions were making changes to weblog permissions and the changes weren't being reflected on the page until after a refresh.  it turns out that the problem was that we are not properly ensuring that both sides of the weblog -> permissions relationship was being managed.


Modified:
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateUserManagerImpl.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateUserManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateUserManagerImpl.java?view=diff&rev=543386&r1=543385&r2=543386
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateUserManagerImpl.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateUserManagerImpl.java Thu May 31 21:40:45 2007
@@ -223,6 +223,11 @@
     }
         
     public void removePermissions(WeblogPermission perms) throws RollerException {
+        
+        // make sure associations are broken
+        perms.getWebsite().getPermissions().remove(perms);
+        perms.getUser().getPermissions().remove(perms);
+        
         this.strategy.remove(perms);
     }
         
@@ -383,6 +388,10 @@
         perms.setUser(user);
         perms.setPermissionMask(mask);
         this.strategy.store(perms);
+        
+        // manage associations
+        website.getPermissions().add(perms);
+        user.getPermissions().add(perms);
         
         return perms;
     }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java?view=diff&rev=543386&r1=543385&r2=543386
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java Thu May 31 21:40:45 2007
@@ -18,6 +18,7 @@
 
 package org.apache.roller.weblogger.ui.struts2.editor;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -76,10 +77,17 @@
         
         List<WeblogPermission> permissions = getActionWeblog().getPermissions();
         
+        // we have to copy the permissions list so that when we remove permissions
+        // below we don't get ConcurrentModificationExceptions
+        List<WeblogPermission> permsList = new ArrayList();
+        for( WeblogPermission perm : permissions ) {
+            permsList.add(perm);
+        }
+        
         int removed = 0;
         int changed = 0;
         try {
-            for( WeblogPermission perms : permissions ) {
+            for( WeblogPermission perms : permsList ) {
                 
                 String sval = getParameter("perm-" + perms.getId());
                 if (sval != null) {