[177198] Filter invalid module types from factory
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerCore.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerCore.java
index fcf4333..b2812a4 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerCore.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerCore.java
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
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 c2af851..477aea4 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
@@ -98,12 +98,8 @@
if (modules != null) {
int size2 = modules.length;
for (int j = 0; j < size2; j++) {
- if (!set.contains(modules[j])) {
- if (isSupportedModule(factories[i].getModuleTypes(), modules[j].getModuleType()))
- set.add(modules[j]);
- else
- Trace.trace(Trace.WARNING, "Invalid module returned from factory, ignored: " + modules[j]);
- }
+ if (!set.contains(modules[j]))
+ set.add(modules[j]);
}
}
}
@@ -201,7 +197,7 @@
if (modules != null) {
int size2 = modules.length;
for (int j = 0; j < size2; j++)
- if(type.equals(modules[j].getModuleType().getId()))
+ if (type.equals(modules[j].getModuleType().getId()))
list.add(modules[j]);
}
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/DeletedModule.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/DeletedModule.java
index a33d5d5..06f64fb 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/DeletedModule.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/DeletedModule.java
@@ -49,14 +49,6 @@
return null;
}
- public void addModuleListener(IModuleListener listener) {
- // ignore
- }
-
- public void removeModuleListener(IModuleListener listener) {
- // ignore
- }
-
public IModule[] getChildModules(IProgressMonitor monitor) {
return null;
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IModuleListener.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IModuleListener.java
deleted file mode 100644
index ad03292..0000000
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IModuleListener.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.core.internal;
-/**
- *
- */
-public interface IModuleListener {
- /**
- * A module has been changed as specified in the event.
- *
- * @param event org.eclipse.wst.server.core.model.ModuleEvent
- */
- public void moduleChanged(ModuleEvent event);
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Module.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Module.java
index da6c864..fdf0036 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Module.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Module.java
@@ -23,8 +23,7 @@
protected String id;
protected String name;
protected ModuleFactory factory;
- protected String type;
- protected String version;
+ protected ModuleType moduleType;
protected IProject project;
protected ModuleDelegate delegate;
protected String id2;
@@ -43,8 +42,7 @@
super();
this.factory = factory;
this.project = project;
- this.type = type;
- this.version = version;
+ this.moduleType = ModuleType.getModuleType(type, version);
this.id = id;
this.name = name;
if (factory != null)
@@ -78,7 +76,7 @@
* @return the module type
*/
public IModuleType getModuleType() {
- return new ModuleType(type, version);
+ return moduleType;
}
/**
@@ -215,6 +213,9 @@
}
public boolean equals(Object obj) {
+ if (obj == this)
+ return true;
+
if (!(obj instanceof IModule))
return false;
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleEvent.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleEvent.java
deleted file mode 100644
index a39dd4f..0000000
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleEvent.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - Initial API and implementation
- **********************************************************************/
-package org.eclipse.wst.server.core.internal;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.wst.server.core.IModule;
-/**
- * An event fired when a module changes.
- */
-public class ModuleEvent {
- private IModule module;
- private boolean isChanged;
- private IModule[] added;
- private IModule[] changed;
- private IModule[] removed;
-
- class IModuleArtifact {
- IPath path;
- long timestamp;
- }
-
- /**
- * Create a new module event.
- *
- * @param module the module that has been changed
- * @param isChanged true if the module has changed
- * @param added added child modules
- * @param changed changed child modules
- * @param removed removed child modules
- */
- public ModuleEvent(IModule module, boolean isChanged, IModule[] added, IModule[] changed, IModule[] removed) {
- this.module = module;
- this.isChanged = isChanged;
- this.added = added;
- this.changed = changed;
- this.removed = removed;
- }
-
- /**
- * Returns the module that has been changed.
- *
- * @return the module
- */
- public IModule getModule() {
- return module;
- }
-
- /**
- * Returns true if this module's settings have changed.
- *
- * @return <code>true</code> if the contents have changed
- */
- public boolean isChanged() {
- return isChanged;
- }
-
- /**
- * Returns any child modules that have been added.
- *
- * @return the added child modules, or null if no modules have been added
- */
- public IModule[] getAddedChildModules() {
- return added;
- }
-
- /**
- * Returns any child modules that have been changed.
- *
- * @return the changed child modules, or null if no modules have been changed
- */
- public IModule[] getChangedChildModules() {
- return changed;
- }
-
- /**
- * Returns any child modules that have been removed.
- *
- * @return the removed child modules, or null if no modules have been removed
- */
- public IModule[] getRemovedChildModules() {
- return removed;
- }
-
- /**
- * Returns the module artifacts that have changed.
- *
- * @return the changed module artifacts
- */
- public IModuleArtifact[] getChangedArtifacts() {
- return null;
- }
-}
\ No newline at end of file
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 3d41df8..afb0a59 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
@@ -10,7 +10,9 @@
*******************************************************************************/
package org.eclipse.wst.server.core.internal;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -26,7 +28,7 @@
public class ModuleFactory implements IOrdered {
private IConfigurationElement element;
public ModuleFactoryDelegate delegate;
- private List moduleTypes;
+ private Set moduleTypes;
/**
* ModuleFactory constructor comment.
@@ -112,7 +114,10 @@
*/
public IModule[] getModules(IProgressMonitor monitor) {
try {
- return getDelegate(monitor).getModules();
+ IModule[] modules = getDelegate(monitor).getModules();
+ if (hasInvalidModules(modules))
+ modules = filter(modules);
+ return modules;
} catch (Throwable t) {
Trace.trace(Trace.SEVERE, "Error calling delegate " + toString(), t);
return new IModule[0];
@@ -124,7 +129,10 @@
*/
public IModule[] getModules(IProject project, IProgressMonitor monitor) {
try {
- return getDelegate(monitor).getModules(project);
+ IModule[] modules = getDelegate(monitor).getModules(project);
+ if (hasInvalidModules(modules))
+ modules = filter(modules);
+ return modules;
} catch (Throwable t) {
Trace.trace(Trace.SEVERE, "Error calling delegate " + toString(), t);
return new IModule[0];
@@ -136,13 +144,56 @@
*/
public IModule findModule(String id, IProgressMonitor monitor) {
try {
- return getDelegate(monitor).findModule(id);
+ IModule module = getDelegate(monitor).findModule(id);
+ if (module == null)
+ return null;
+
+ getModuleTypes();
+ if (!moduleTypes.contains(module.getModuleType()))
+ return null;
+
+ return module;
} catch (Throwable t) {
Trace.trace(Trace.SEVERE, "Error calling delegate " + toString(), t);
return null;
}
}
+ private boolean hasInvalidModules(IModule[] modules) {
+ if (modules == null)
+ return false;
+
+ getModuleTypes();
+
+ int size = modules.length;
+ for (int i = 0; i < size; i++) {
+ if (!moduleTypes.contains(modules[i].getModuleType()))
+ return true;
+ }
+ return false;
+ }
+
+ private IModule[] filter(IModule[] modules) {
+ if (modules == null)
+ return modules;
+
+ getModuleTypes();
+ List list = new ArrayList();
+
+ int size = modules.length;
+ for (int i = 0; i < size; i++) {
+ IModule m = modules[i];
+ if (moduleTypes.contains(m.getModuleType()))
+ list.add(m);
+ else
+ Trace.trace(Trace.WARNING, "Invalid module returned from factory, ignored: " + m);
+ }
+
+ IModule[] m = new IModule[list.size()];
+ list.toArray(m);
+ return m;
+ }
+
/**
* Return a string representation of this object.
*
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFactoryEvent.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFactoryEvent.java
deleted file mode 100644
index 0f2877a..0000000
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFactoryEvent.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - Initial API and implementation
- **********************************************************************/
-package org.eclipse.wst.server.core.internal;
-
-import org.eclipse.wst.server.core.IModule;
-/**
- * An event fired when a module factory changes.
- */
-public class ModuleFactoryEvent {
- protected IModule[] added;
- protected IModule[] removed;
-
- /**
- * Create a new event.
- *
- * @param added added modules
- * @param removed removed modules
- */
- public ModuleFactoryEvent(IModule[] added, IModule[] removed) {
- this.added = added;
- this.removed = removed;
- }
-
- /**
- * Returns any modules that have been added.
- *
- * @return org.eclipse.wst.server.core.model.IModule[]
- */
- public IModule[] getAddedModules() {
- return added;
- }
-
- /**
- * Returns any modules that have been removed.
- *
- * @return org.eclipse.wst.server.core.model.IModule[]
- */
- public IModule[] getRemovedModules() {
- return removed;
- }
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFile.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFile.java
index 177c0d8..50dc45c 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFile.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFile.java
@@ -107,6 +107,9 @@
}
public boolean equals(Object obj) {
+ if (obj == this)
+ return true;
+
if (!(obj instanceof IModuleFile))
return false;
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFolder.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFolder.java
index c1f4b1f..f808b15 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFolder.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleFolder.java
@@ -82,6 +82,9 @@
}
public boolean equals(Object obj) {
+ if (obj == this)
+ return true;
+
if (!(obj instanceof ModuleFolder))
return false;
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleKind.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleKind.java
index 7bd8184..7c8a207 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleKind.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleKind.java
@@ -17,19 +17,19 @@
public class ModuleKind {
protected String id;
protected String name;
-
+
public ModuleKind(IConfigurationElement ce) {
super();
this.id = ce.getAttribute("id");
this.name = ce.getAttribute("name");
}
-
+
public ModuleKind(String id, String name) {
super();
this.id = id;
this.name = name;
}
-
+
public String getId() {
return id;
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModulePublishInfo.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModulePublishInfo.java
index c3d4afc..8dbfe66 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModulePublishInfo.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModulePublishInfo.java
@@ -114,7 +114,7 @@
String mt = memento.getString(MODULE_TYPE_ID);
String mv = memento.getString(MODULE_TYPE_VERSION);
if (mt != null && mt.length() > 0)
- moduleType = new ModuleType(mt, mv);
+ moduleType = ModuleType.getModuleType(mt, mv);
resources = loadResource(memento, new Path(""));
} catch (Exception e) {
@@ -175,7 +175,7 @@
String mt = in.readUTF();
String mv = in.readUTF();
if (mt != null && mt.length() > 0)
- moduleType = new ModuleType(mt, mv);
+ moduleType = ModuleType.getModuleType(mt, mv);
} else
moduleType = null;
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleType.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleType.java
index c3f0281..98c675a 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleType.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ModuleType.java
@@ -24,10 +24,12 @@
public class ModuleType implements IModuleType {
protected String id;
protected String version;
-
- // cached copy of all module types
+
+ // cached copy of all module kinds
+ private static List moduleKinds;
+
private static List moduleTypes;
-
+
public ModuleType(String id, String version) {
super();
this.id = id;
@@ -37,7 +39,7 @@
public String getId() {
return id;
}
-
+
public String getName() {
ModuleKind mt = findModuleType(id);
if (mt != null)
@@ -48,23 +50,34 @@
public String getVersion() {
return version;
}
-
+
/**
- * Returns an array of all known module types.
- * <p>
- * A new array is returned on each call, so clients may store or modify the result.
- * </p>
+ * Returns the module type with the given id and version, or create a new one if
+ * none already exists.
*
- * @return the array of module types {@link IModuleType}
+ * @param id the module type id
+ * @param version the module type version
+ * @return the module type
*/
- /*public static IModuleType[] getModuleTypes() {
+ public static ModuleType getModuleType(String id, String version) {
if (moduleTypes == null)
- loadModuleTypes();
+ moduleTypes = new ArrayList();
- IModuleType[] mt = new IModuleType[moduleTypes.size()];
- moduleTypes.toArray(mt);
+ // look for an existing one first
+ Iterator iterator = moduleTypes.iterator();
+ while (iterator.hasNext()) {
+ ModuleType mt = (ModuleType) iterator.next();
+ if ((id == null && mt.id == null) || (id != null && id.equals(mt.id))) {
+ if ((version == null && mt.version == null) || (version != null && version.equals(mt.version)))
+ return mt;
+ }
+ }
+
+ // otherwise create one
+ ModuleType mt = new ModuleType(id, version);
+ moduleTypes.add(mt);
return mt;
- }*/
+ }
/**
* Returns the module type with the given id, or <code>null</code>
@@ -76,14 +89,14 @@
* @return the module type, or <code>null</code> if there is no module type
* with the given id
*/
- public static ModuleKind findModuleType(String id) {
+ private static ModuleKind findModuleType(String id) {
if (id == null)
throw new IllegalArgumentException();
- if (moduleTypes == null)
+ if (moduleKinds == null)
loadModuleTypes();
- Iterator iterator = moduleTypes.iterator();
+ Iterator iterator = moduleKinds.iterator();
while (iterator.hasNext()) {
ModuleKind moduleType = (ModuleKind) iterator.next();
if (id.equals(moduleType.getId()))
@@ -91,23 +104,23 @@
}
return null;
}
-
+
/**
* Load the module types.
*/
private static synchronized void loadModuleTypes() {
- if (moduleTypes != null)
+ if (moduleKinds != null)
return;
Trace.trace(Trace.EXTENSION_POINT, "->- Loading .moduleTypes extension point ->-");
IExtensionRegistry registry = Platform.getExtensionRegistry();
IConfigurationElement[] cf = registry.getConfigurationElementsFor(ServerPlugin.PLUGIN_ID, "moduleTypes");
int size = cf.length;
- moduleTypes = new ArrayList(size);
+ moduleKinds = new ArrayList(size);
for (int i = 0; i < size; i++) {
try {
ModuleKind moduleType = new ModuleKind(cf[i]);
- moduleTypes.add(moduleType);
+ moduleKinds.add(moduleType);
Trace.trace(Trace.EXTENSION_POINT, " Loaded moduleType: " + cf[i].getAttribute("id"));
} catch (Throwable t) {
Trace.trace(Trace.SEVERE, " Could not load moduleType: " + cf[i].getAttribute("id"), t);
@@ -117,6 +130,27 @@
Trace.trace(Trace.EXTENSION_POINT, "-<- Done loading .moduleTypes extension point -<-");
}
+ public int hashCode() {
+ return id.hashCode() + version.hashCode();
+ }
+
+ public boolean equals(Object obj) {
+ if (obj == this)
+ return true;
+
+ if (!(obj instanceof ModuleType))
+ return false;
+
+ ModuleType mt = (ModuleType) obj;
+ if (id != null && mt.id != null && !id.equals(mt.id))
+ return false;
+
+ if (version != null && mt.version != null && !version.equals(mt.version))
+ return false;
+
+ return true;
+ }
+
public String toString() {
return "ModuleType[" + id + ", " + version + "]";
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
index 386d253..1239292 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
@@ -1073,10 +1073,6 @@
activeBundles.add(bundleId);
}
- protected void fireModuleServerEvent(ModuleFactoryEvent[] factoryEvents, ModuleEvent[] events) {
- // do nothing
- }
-
public String toString() {
return "Server resource manager";
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java
index 9cc6671..7afc05d 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.wst.server.core.internal;
-import java.util.List;
+import java.util.Set;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -22,7 +22,7 @@
*/
public class RuntimeType implements IRuntimeType {
private IConfigurationElement element;
- private List moduleTypes;
+ private Set moduleTypes;
public RuntimeType(IConfigurationElement element) {
super();
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
index 34e62d8..1d2789c 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
@@ -2196,7 +2196,7 @@
if (module == null) {
IModuleType moduleType = null;
if (moduleTypeId != null)
- moduleType = new ModuleType(moduleTypeId, moduleTypeVersion);
+ moduleType = ModuleType.getModuleType(moduleTypeId, moduleTypeVersion);
module = new DeletedModule(moduleId, name, moduleType);
}
modules.add(module);
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
index 54f52d2..86578e8 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
@@ -347,11 +347,11 @@
return s;
}
- protected static List getModuleTypes(IConfigurationElement[] elements) {
- List list = new ArrayList();
+ protected static Set getModuleTypes(IConfigurationElement[] elements) {
+ Set set = new HashSet();
if (elements == null)
- return list;
-
+ return set;
+
int size = elements.length;
for (int i = 0; i < size; i++) {
String[] types = tokenize(elements[i].getAttribute("types"), ",");
@@ -359,15 +359,13 @@
int sizeT = types.length;
int sizeV = versions.length;
for (int j = 0; j < sizeT; j++) {
- for (int k = 0; k < sizeV; k++) {
- ModuleType module = new ModuleType(types[j], versions[k]);
- list.add(module);
- }
+ for (int k = 0; k < sizeV; k++)
+ set.add(ModuleType.getModuleType(types[j], versions[k]));
}
}
- return list;
+ return set;
}
-
+
public static String generateId() {
String s = df.format(new Date()).toString() + num++;
s = s.replace(' ', '_');