Index: jetspeed-2/components/portal-site/src/java/org/apache/jetspeed/portalsite/impl/PortalSiteRequestContextImpl.java =================================================================== --- jetspeed-2/components/portal-site/src/java/org/apache/jetspeed/portalsite/impl/PortalSiteRequestContextImpl.java (revision 479959) +++ jetspeed-2/components/portal-site/src/java/org/apache/jetspeed/portalsite/impl/PortalSiteRequestContextImpl.java (working copy) @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.Collections; import org.apache.jetspeed.om.folder.Folder; import org.apache.jetspeed.om.folder.MenuDefinition; @@ -413,7 +414,7 @@ if (locators != null) { // get custom definition names - pageMenuDefinitionNames = new HashSet(locators.size()); + pageMenuDefinitionNames = Collections.synchronizedSet(new HashSet(locators.size())); Iterator locatorsIter = locators.iterator(); while (locatorsIter.hasNext()) { @@ -427,7 +428,7 @@ } else { - pageMenuDefinitionNames = new HashSet(0); + pageMenuDefinitionNames = Collections.synchronizedSet(new HashSet(0)); } } return pageMenuDefinitionNames; @@ -508,7 +509,7 @@ // cache relative menu for request if (menuDefinitionLocatorCache == null) { - menuDefinitionLocatorCache = new HashMap(8); + menuDefinitionLocatorCache = Collections.synchronizedMap(new HashMap(8)); } menuDefinitionLocatorCache.put(locator, menu); } @@ -517,7 +518,7 @@ // cache absolute menu for session if (sessionContext.getMenuDefinitionLocatorCache() == null) { - sessionContext.setMenuDefinitionLocatorCache(new HashMap(8)); + sessionContext.setMenuDefinitionLocatorCache(Collections.synchronizedMap(new HashMap(8))); } sessionContext.getMenuDefinitionLocatorCache().put(locator, menu); } Index: jetspeed-2/components/portal-site/src/java/org/apache/jetspeed/page/document/proxy/NodeProxy.java =================================================================== --- jetspeed-2/components/portal-site/src/java/org/apache/jetspeed/page/document/proxy/NodeProxy.java (revision 479959) +++ jetspeed-2/components/portal-site/src/java/org/apache/jetspeed/page/document/proxy/NodeProxy.java (working copy) @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Collections; import org.apache.jetspeed.om.folder.Folder; import org.apache.jetspeed.om.folder.MenuDefinition; @@ -177,7 +178,7 @@ List locators = getMenuDefinitionLocators(); if (locators != null) { - menuDefinitions = new ArrayList(locators.size()); + menuDefinitions = Collections.synchronizedList(new ArrayList(locators.size())); Iterator locatorsIter = locators.iterator(); while (locatorsIter.hasNext()) { @@ -260,7 +261,7 @@ { if (menuDefinitionLocators == null) { - menuDefinitionLocators = new ArrayList(definitions.size() * 2); + menuDefinitionLocators = Collections.synchronizedList(new ArrayList(definitions.size() * 2)); } menuDefinitionLocators.add(new SiteViewMenuDefinitionLocator(definition, node)); } @@ -295,7 +296,7 @@ { if (menuDefinitionLocators == null) { - menuDefinitionLocators = new ArrayList(locators.size() * 2); + menuDefinitionLocators = Collections.synchronizedList(new ArrayList(locators.size() * 2)); } menuDefinitionLocators.add(locator); } @@ -326,13 +327,15 @@ // find matching menu definition locator by name if ((menuDefinitionLocators != null) && (name != null)) { - Iterator locatorsIter = menuDefinitionLocators.iterator(); - while (locatorsIter.hasNext()) - { - SiteViewMenuDefinitionLocator locator = (SiteViewMenuDefinitionLocator)locatorsIter.next(); - if (name.equals(locator.getName())) + synchronized (menuDefinitionLocators) { + Iterator locatorsIter = menuDefinitionLocators.iterator(); + while (locatorsIter.hasNext()) { - return locator; + SiteViewMenuDefinitionLocator locator = (SiteViewMenuDefinitionLocator)locatorsIter.next(); + if (name.equals(locator.getName())) + { + return locator; + } } } }