From 605caefeee2eabec29511c774b9b65d16ecaf0e9 Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Wed, 16 Jan 2013 15:58:55 +0100 Subject: [PATCH] Sort members in ListMembers REST endpoint before returning them Change-Id: I8bdcc7de8e10f785a88e9e848e7204e69c45d81a Signed-off-by: Edwin Kempin --- .../google/gerrit/server/group/ListMembers.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/ListMembers.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/ListMembers.java index f76de5ad19..84d5e588aa 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/ListMembers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/ListMembers.java @@ -14,8 +14,10 @@ package com.google.gerrit.server.group; +import com.google.common.collect.ComparisonChain; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.common.collect.Ordering; import com.google.gerrit.common.data.GroupDetail; import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.extensions.restapi.AuthException; @@ -36,6 +38,7 @@ import com.google.inject.Inject; import org.kohsuke.args4j.Option; import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -63,7 +66,17 @@ public class ListMembers implements RestReadView { Exception { final Map members = getMembers(resource.getGroupUUID(), new HashSet()); - return Lists.newArrayList(members.values()); + final List memberInfos = Lists.newArrayList(members.values()); + Collections.sort(memberInfos, new Comparator() { + @Override + public int compare(MemberInfo a, MemberInfo b) { + return ComparisonChain.start() + .compare(a.fullName, b.fullName, Ordering.natural().nullsFirst()) + .compare(a.preferredEmail, b.preferredEmail, Ordering.natural().nullsFirst()) + .compare(a.id, b.id, Ordering.natural().nullsFirst()).result(); + } + }); + return memberInfos; } private Map getMembers(