Update of
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
In directory
james.mmbase.org:/tmp/cvs-serv21563/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
Modified Files:
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.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- SiteCache.java 4 Jun 2008 13:30:56 -0000 1.17
+++ SiteCache.java 4 Jun 2008 15:53:11 -0000 1.18
@@ -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