Update of 
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
In directory 
james.mmbase.org:/tmp/cvs-serv21580/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement

Modified Files:
      Tag: b1_4
        SiteCache.java 
Log Message:
CMSC-952 - this is a better implementation, which can handle changes in the 
same Map.


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
See also: http://www.mmbase.org/jira/browse/CMSC-952


Index: SiteCache.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCache.java,v
retrieving revision 1.15.2.1
retrieving revision 1.15.2.2
diff -u -b -r1.15.2.1 -r1.15.2.2
--- SiteCache.java      4 Jun 2008 13:30:50 -0000       1.15.2.1
+++ SiteCache.java      4 Jun 2008 15:53:16 -0000       1.15.2.2
@@ -299,16 +299,22 @@
               if (event.getChangedFields().contains(fragmentField)) {
                   String newFragment = (String) 
event.getNewValue(fragmentField);
                   if (navigationManager.isRoot()) {
-                     Iterator<PageTree> i = trees.values().iterator();
-                      while (i.hasNext()){
-                         PageTree tree = i.next();
+                     
+                     //Search for keys to change
+                     ArrayList<PageTree> addList = new ArrayList<PageTree>();
+                     for (PageTree tree : trees.values()) {
                           if (tree.containsPageTreeNode(key)) {
+                             addList.add(tree);
+                        }
+                     }
+                     
+                     //Now change the 'trees' Map (otherwise the Map gets 
corrupted)
+                     for (PageTree tree : addList) {
                               
trees.remove(tree.getRoot().getPathStr().toLowerCase());
                               trees.put(newFragment.toLowerCase(), tree);
                               tree.replace(key, newFragment);
                           }
                       }   
-                  }
                   else {
                       for (PageTree tree : trees.values()) {
                           if (tree.containsPageTreeNode(key)) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to