218636 Performance problem remains, in Server -> Add/ Remove Projects
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFactory.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFactory.java index 6d0db2f..737daec 100644 --- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFactory.java +++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFactory.java
@@ -11,7 +11,9 @@ package org.eclipse.wst.server.core.internal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IConfigurationElement; @@ -31,6 +33,7 @@ private List moduleTypes; private List modules; + private Map projectToModulesMap = new HashMap(); /** * ModuleFactory constructor comment. @@ -126,13 +129,19 @@ public IModule[] getModules(IProject project) { ModuleFactoryDelegate mfd = getDelegate(null); if (mfd instanceof ProjectModuleFactoryDelegate) { - return ((ProjectModuleFactoryDelegate) mfd).getModules204165(project); + IModule[] result = (IModule[])projectToModulesMap.get(project); + if (result == null) { + result = ((ProjectModuleFactoryDelegate) mfd).getModules204165(project); + projectToModulesMap.put(project, result); + } + return result; } return mfd.getModules(); } public void clearModuleCache() { modules = null; + projectToModulesMap.clear(); } /*