From ec4f9c86d51ef2f018dbf413e2a4e476ca425a13 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Fri, 25 Jan 2008 03:04:18 +0000 Subject: [PATCH] sort items case insensitively (#1211) git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@6864 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/EnvVars.java | 24 ++++--------------- core/src/main/java/hudson/model/Hudson.java | 3 ++- core/src/main/java/hudson/model/ListView.java | 3 ++- .../util/CaseInsensitiveComparator.java | 21 ++++++++++++++++ 4 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 core/src/main/java/hudson/util/CaseInsensitiveComparator.java diff --git a/core/src/main/java/hudson/EnvVars.java b/core/src/main/java/hudson/EnvVars.java index 444bb69a3c..45f7800c91 100644 --- a/core/src/main/java/hudson/EnvVars.java +++ b/core/src/main/java/hudson/EnvVars.java @@ -1,15 +1,14 @@ package hudson; -import hudson.remoting.VirtualChannel; import hudson.remoting.Callable; +import hudson.remoting.VirtualChannel; +import hudson.util.CaseInsensitiveComparator; import java.io.File; -import java.io.Serializable; import java.io.IOException; +import java.util.Collections; import java.util.Map; import java.util.TreeMap; -import java.util.Comparator; -import java.util.Collections; /** * Environment variables. @@ -27,11 +26,11 @@ import java.util.Collections; public class EnvVars extends TreeMap { public EnvVars() { - super(CASE_INSENSITIVE_COMPARATOR); + super(CaseInsensitiveComparator.INSTANCE); } public EnvVars(Map m) { - super(CASE_INSENSITIVE_COMPARATOR); + super(CaseInsensitiveComparator.INSTANCE); putAll(m); } @@ -85,21 +84,8 @@ public class EnvVars extends TreeMap { private static final long serialVersionUID = 1L; } - - /** - * Compares strings case insensitively. - */ - private static final Comparator CASE_INSENSITIVE_COMPARATOR = new CaseInsensitiveComparator(); - /** * Environmental variables that we've inherited. */ public static final Map masterEnvVars = new EnvVars(System.getenv()); - - private static class CaseInsensitiveComparator implements Comparator, Serializable { - public int compare(String lhs, String rhs) { - return lhs.compareToIgnoreCase(rhs); - } - private static final long serialVersionUID = 1L; - } } diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java index c7f4727a75..61d88a21b6 100644 --- a/core/src/main/java/hudson/model/Hudson.java +++ b/core/src/main/java/hudson/model/Hudson.java @@ -64,6 +64,7 @@ import hudson.util.MultipartFormDataParser; import hudson.util.TextFile; import hudson.util.XStream2; import hudson.util.RemotingDiagnostics; +import hudson.util.CaseInsensitiveComparator; import hudson.widgets.Widget; import net.sf.json.JSONObject; import org.acegisecurity.Authentication; @@ -201,7 +202,7 @@ public final class Hudson extends View implements ItemGroup, Node, /** * All {@link Item}s keyed by their {@link Item#getName() name}s. */ - /*package*/ transient final Map items = new CopyOnWriteMap.Tree(); + /*package*/ transient final Map items = new CopyOnWriteMap.Tree(CaseInsensitiveComparator.INSTANCE); /** * The sole instance. diff --git a/core/src/main/java/hudson/model/ListView.java b/core/src/main/java/hudson/model/ListView.java index b3a329f36f..4c20d0ed4d 100644 --- a/core/src/main/java/hudson/model/ListView.java +++ b/core/src/main/java/hudson/model/ListView.java @@ -1,6 +1,7 @@ package hudson.model; import hudson.Util; +import hudson.util.CaseInsensitiveComparator; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; @@ -23,7 +24,7 @@ public class ListView extends View { /** * List of job names. This is what gets serialized. */ - /*package*/ final Set jobNames = new TreeSet(); + /*package*/ final Set jobNames = new TreeSet(CaseInsensitiveComparator.INSTANCE); /** * Name of this view. diff --git a/core/src/main/java/hudson/util/CaseInsensitiveComparator.java b/core/src/main/java/hudson/util/CaseInsensitiveComparator.java new file mode 100644 index 0000000000..42829440e0 --- /dev/null +++ b/core/src/main/java/hudson/util/CaseInsensitiveComparator.java @@ -0,0 +1,21 @@ +package hudson.util; + +import java.util.Comparator; +import java.io.Serializable; + +/** + * Case-insensitive string comparator. + * + * @author Kohsuke Kawaguchi + */ +public final class CaseInsensitiveComparator implements Comparator, Serializable { + public static final Comparator INSTANCE = new CaseInsensitiveComparator(); + + private CaseInsensitiveComparator() {} + + public int compare(String lhs, String rhs) { + return lhs.compareToIgnoreCase(rhs); + } + + private static final long serialVersionUID = 1L; +}