diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/RSECorePlugin.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/RSECorePlugin.java index 0791599de7e..c32884cf8a9 100644 --- a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/RSECorePlugin.java +++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/RSECorePlugin.java @@ -18,13 +18,15 @@ * Martin Oberhuber (Wind River) - [175680] Deprecate obsolete ISystemRegistry methods * Martin Oberhuber (Wind River) - [160293] NPE on startup when only Core feature is installed * Uwe Stieber (Wind River) - [192611] RSE Core plugin may fail to initialize because of cyclic code invocation + * Martin Oberhuber (Wind River) - [165674] Sort subsystem configurations by priority then Id ********************************************************************************/ package org.eclipse.rse.core; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.ArrayList; import java.util.Arrays; -import java.util.Vector; +import java.util.List; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; @@ -282,21 +284,19 @@ public class RSECorePlugin extends Plugin { IConfigurationElement[] factoryPlugins = getSubSystemConfigurationPlugins(); if (factoryPlugins != null) { - Vector v = new Vector(); + List l = new ArrayList(); for (int idx=0; idx proxy2.getPriority()) { - return 1; - } - else { - return 0; + return +1; + } else { + return proxy1.getId().compareTo(proxy2.getId()); } } - else { - return 0; - } + return 0; } } diff --git a/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/ui/internal/model/SystemRegistry.java b/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/ui/internal/model/SystemRegistry.java index 2d14bd04cb3..54f9469ce0a 100644 --- a/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/ui/internal/model/SystemRegistry.java +++ b/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/ui/internal/model/SystemRegistry.java @@ -39,7 +39,6 @@ package org.eclipse.rse.ui.internal.model; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Vector; @@ -255,29 +254,17 @@ public class SystemRegistry implements ISystemRegistry /** * Private method used by RSEUIPlugin to tell registry all registered subsystem - * factories. This way, all code can use this registry to access them versus the - * RSEUIPlugin. + * factories. This way, all code can use this registry to access them versus the + * RSEUIPlugin. + * + * Proxies must be set sorted by priority, then ID in order to get deterministic + * results for all getSubSystemConfiguration*() queries. */ public void setSubSystemConfigurationProxies(ISubSystemConfigurationProxy[] proxies) { - //[165674]: Sort proxies by ID in order to get deterministic results - //on all getSubSystemConfiguration*() queries - ISubSystemConfigurationProxy[] newProxies = (ISubSystemConfigurationProxy[])proxies.clone(); - Arrays.sort(newProxies, new Comparator(){ - public int compare(Object o1, Object o2) { - ISubSystemConfigurationProxy s1 = (ISubSystemConfigurationProxy)o1; - ISubSystemConfigurationProxy s2 = (ISubSystemConfigurationProxy)o2; - if (s1.getPriority() < s2.getPriority()) { - return -1; - } else if (s1.getPriority() > s2.getPriority()) { - return +1; - } - return s1.getId().compareTo(s2.getId()); - } - }); - //for (int idx=0; idx