[188484] Create 1.5.4 patch for bug 187187
diff --git a/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
index 9f5b093..09d14c1 100644
--- a/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.server.core; singleton:=true
-Bundle-Version: 1.0.106.qualifier
+Bundle-Version: 1.0.107.qualifier
 Bundle-Activator: org.eclipse.wst.server.core.internal.ServerPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java
index 780562c..1887624 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java
@@ -49,14 +49,22 @@
 		if (project == null)
 			throw new IllegalArgumentException();
 		
-		IModule[] modules = getModules();
-		if (modules != null) {
-			int size = modules.length;
+		ModuleFactory[] factories = ServerPlugin.getModuleFactories();
+		if (factories != null) {
+			int size = factories.length;
 			for (int i = 0; i < size; i++) {
-				if (modules[i] != null && project.equals(modules[i].getProject()))
-					return modules[i];
+				IModule[] modules = factories[i].getModules();
+				if (modules != null) {
+					int size2 = modules.length;
+					for (int j = 0; j < size2; j++) {
+						if (project.equals(modules[j].getProject()) && isSupportedModule(factories[i].getModuleTypes(), modules[j].getModuleType())) {
+							return modules[j];
+						}
+					}
+				}
 			}
 		}
+		
 		return null;
 	}
 
@@ -276,7 +284,7 @@
 	 * @return a possibly empty array of modules
 	 */
 	private static IModule[] getModules() {
-		List list = new ArrayList();
+		Set set = new HashSet();
 		
 		ModuleFactory[] factories = ServerPlugin.getModuleFactories();
 		if (factories != null) {
@@ -286,9 +294,9 @@
 				if (modules != null) {
 					int size2 = modules.length;
 					for (int j = 0; j < size2; j++) {
-						if (!list.contains(modules[j])) {
+						if (!set.contains(modules[j])) {
 							if (isSupportedModule(factories[i].getModuleTypes(), modules[j].getModuleType()))
-								list.add(modules[j]);
+								set.add(modules[j]);
 							else
 								Trace.trace(Trace.WARNING, "Invalid module returned from factory, ignored: " + modules[j]);
 						}
@@ -296,8 +304,8 @@
 				}
 			}
 		}
-		IModule[] modules = new IModule[list.size()];
-		list.toArray(modules);
+		IModule[] modules = new IModule[set.size()];
+		set.toArray(modules);
 		return modules;
 	}