[399674] ServerUtil.modifyModules() uses parents randomly [407023] When module deleted, can't tell if the module was external or not
diff --git a/features/org.eclipse.wst.server_core.feature.patch/buildnotes_org.eclipse.wst.server_core.feature.patch.html b/features/org.eclipse.wst.server_core.feature.patch/buildnotes_org.eclipse.wst.server_core.feature.patch.html index c0dea77..2cf8624 100644 --- a/features/org.eclipse.wst.server_core.feature.patch/buildnotes_org.eclipse.wst.server_core.feature.patch.html +++ b/features/org.eclipse.wst.server_core.feature.patch/buildnotes_org.eclipse.wst.server_core.feature.patch.html
@@ -23,6 +23,8 @@ <p>Bug <a href='https://bugs.eclipse.org/404072'>404072</a>. Run on server on starting server will not publish if the module is changed</p> <p>Bug <a href='https://bugs.eclipse.org/404076'>404076</a>. during publish, Run On Server action should be adaptable to String and not only shell</p> <p>Bug <a href='https://bugs.eclipse.org/404081'>404081</a>. show in debug action does not always work</p> +<p>Bug <a href='https://bugs.eclipse.org/399674'>399674</a>. ServerUtil.modifyModules() uses parents randomly</p> +<p>Bug <a href='https://bugs.eclipse.org/407023'>407023</a>. When module deleted, can't tell if the module was external or not</p> </body>
diff --git a/features/org.eclipse.wst.server_core.feature.patch/feature.properties b/features/org.eclipse.wst.server_core.feature.patch/feature.properties index 1a3fbff..12cb2da 100644 --- a/features/org.eclipse.wst.server_core.feature.patch/feature.properties +++ b/features/org.eclipse.wst.server_core.feature.patch/feature.properties
@@ -30,6 +30,8 @@ Bug https://bugs.eclipse.org/404072 Run on server on starting server will not publish if the module is changed\n\ Bug https://bugs.eclipse.org/404076 during publish, Run On Server action should be adaptable to String and not only shell\n\ Bug https://bugs.eclipse.org/404081 show in debug action does not always work\n\ +Bug https://bugs.eclipse.org/399674 ServerUtil.modifyModules() uses parents randomly\n\ +Bug https://bugs.eclipse.org/407023 When module deleted, can't tell if the module was external or not\n\ \n\ # "copyright" property - text of the "Feature Update Copyright" copyright=\
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 b977e68..31c8be2 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
@@ -342,6 +342,14 @@ IModule[] parents = server.getRootModules(module, monitor); if (parents != null && parents.length > 0) { IModule parent = parents[0]; + if(parents.length > 1){ + for(int i = 1 ; i <parents.length; i++){ + if(module.equals(parents[i])){ + parent = parents[i]; + break; + } + } + } found = true; if (!addParentModules.contains(parent)) addParentModules.add(parent);
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 bd2a0e9..1b89c70 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
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2011 IBM Corporation and others. + * Copyright (c) 2005, 2013 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 @@ -22,11 +22,17 @@ protected String id; protected String name; protected IModuleType moduleType2; + protected boolean isExternal; public DeletedModule(String id, String name, IModuleType moduleType) { + this(id, name, moduleType, false); + } + + public DeletedModule(String id, String name, IModuleType moduleType, boolean isExternal) { this.id = id; this.name = name; this.moduleType2 = moduleType; + this.isExternal = isExternal; } public String getId() { @@ -73,7 +79,7 @@ } public boolean isExternal() { - return false; + return isExternal; } public boolean exists() {
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 950e084..0c4de6f 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
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2011 IBM Corporation and others. + * Copyright (c) 2005, 2013 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 @@ -34,6 +34,7 @@ private static final String NAME = "name"; private static final String MODULE_TYPE_ID = "module-type-id"; private static final String MODULE_TYPE_VERSION = "module-type-version"; + private static final String MODULE_IS_EXTERNAL = "module-is-external"; private static final String STAMP = "stamp"; private static final String FILE = "file"; private static final String FOLDER = "folder"; @@ -42,6 +43,7 @@ private String name; private IModuleResource[] resources = EMPTY_MODULE_RESOURCE; private IModuleType moduleType; + private boolean isExternal; private boolean useCache; private IModuleResource[] currentResources = null; @@ -66,6 +68,22 @@ /** * ModulePublishInfo constructor. * + * @param moduleId a module id + * @param name the module's name + * @param moduleType the module type + */ + public ModulePublishInfo(String moduleId, String name, IModuleType moduleType, boolean isExternal) { + super(); + + this.moduleId = moduleId; + this.name = name; + this.moduleType = moduleType; + this.isExternal = isExternal; + } + + /** + * ModulePublishInfo constructor. + * * @param memento a memento */ public ModulePublishInfo(IMemento memento) { @@ -121,6 +139,8 @@ String mv = memento.getString(MODULE_TYPE_VERSION); if (mt != null && mt.length() > 0) moduleType = ModuleType.getModuleType(mt, mv); + String isExternalStr = memento.getString(MODULE_IS_EXTERNAL); + isExternal = Boolean.parseBoolean(isExternalStr); resources = loadResource(memento, new Path("")); } catch (Exception e) { @@ -459,7 +479,7 @@ int index = id.lastIndexOf("#"); if (index > 0) id = id.substring(index+1); - return new DeletedModule(id, name, moduleType); + return new DeletedModule(id, name, moduleType, isExternal); } public String toString() {
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java index fe36104..9deb351 100644 --- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java +++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java
@@ -168,7 +168,7 @@ // have to create a new one IModule mod = module[module.length - 1]; - ModulePublishInfo mpi = new ModulePublishInfo(getKey(module), mod.getName(), mod.getModuleType()); + ModulePublishInfo mpi = new ModulePublishInfo(getKey(module), mod.getName(), mod.getModuleType(), mod.isExternal()); modulePublishInfo.put(key, mpi); return mpi; }