diff --git a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ChangeInfo.java b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ChangeInfo.java index 866d74fe0e..3587bf8519 100644 --- a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ChangeInfo.java +++ b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ChangeInfo.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.info; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.rpc.NativeMap; import com.google.gerrit.client.rpc.NativeString; import com.google.gerrit.client.rpc.Natives; @@ -31,7 +33,6 @@ import com.google.gwtjsonrpc.client.impl.ser.JavaSqlTimestamp_JsonSerializer; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -449,16 +450,7 @@ public class ChangeInfo extends JavaScriptObject { final int editParent = findEditParent(list); Collections.sort( Natives.asList(list), - new Comparator() { - @Override - public int compare(RevisionInfo a, RevisionInfo b) { - return num(a) - num(b); - } - - private int num(RevisionInfo r) { - return !r.isEdit() ? 2 * (r._number() - 1) + 1 : 2 * editParent; - } - }); + comparing(r -> !r.isEdit() ? 2 * (r._number() - 1) + 1 : 2 * editParent)); } public static int findEditParent(JsArray list) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGpgKeysScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGpgKeysScreen.java index 0dc1dab8a4..bbd94f27e7 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGpgKeysScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGpgKeysScreen.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.account; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.info.GpgKeyInfo; import com.google.gerrit.client.rpc.GerritCallback; @@ -41,7 +43,6 @@ import com.google.gwtexpui.clippy.client.CopyableLabel; import com.google.gwtexpui.globalkey.client.NpTextArea; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; public class MyGpgKeysScreen extends SettingsScreen { @@ -118,14 +119,7 @@ public class MyGpgKeysScreen extends SettingsScreen { List list = Natives.asList(result.values()); // TODO(dborowitz): Sort on something more meaningful, like // created date? - Collections.sort( - list, - new Comparator() { - @Override - public int compare(GpgKeyInfo a, GpgKeyInfo b) { - return a.id().compareTo(b.id()); - } - }); + Collections.sort(list, comparing(GpgKeyInfo::id)); keys.clear(); keyText.setText(""); errorPanel.setVisible(false); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java index 2614224ecd..6eaab5d6b4 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.admin; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.Dispatcher; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.VoidResult; @@ -29,7 +31,6 @@ import com.google.gerrit.client.ui.AddMemberBox; import com.google.gerrit.client.ui.FancyFlexTable; import com.google.gerrit.client.ui.Hyperlink; import com.google.gerrit.client.ui.SmallHeading; -import com.google.gerrit.common.Nullable; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -295,26 +296,9 @@ public class AccountGroupMembersScreen extends AccountGroupScreen { void insert(AccountInfo info) { Comparator c = - new Comparator() { - @Override - public int compare(AccountInfo a, AccountInfo b) { - int cmp = nullToEmpty(a.name()).compareTo(nullToEmpty(b.name())); - if (cmp != 0) { - return cmp; - } - - cmp = nullToEmpty(a.email()).compareTo(nullToEmpty(b.email())); - if (cmp != 0) { - return cmp; - } - - return a._accountId() - b._accountId(); - } - - public String nullToEmpty(String str) { - return str == null ? "" : str; - } - }; + comparing((AccountInfo a) -> nullToEmpty(a.name())) + .thenComparing(a -> nullToEmpty(a.email())) + .thenComparing(AccountInfo::_accountId); int insertPos = getInsertRow(c, info); if (insertPos >= 0) { table.insertRow(insertPos); @@ -405,20 +389,7 @@ public class AccountGroupMembersScreen extends AccountGroupScreen { void insert(GroupInfo info) { Comparator c = - new Comparator() { - @Override - public int compare(GroupInfo a, GroupInfo b) { - int cmp = nullToEmpty(a.name()).compareTo(nullToEmpty(b.name())); - if (cmp != 0) { - return cmp; - } - return a.getGroupUUID().compareTo(b.getGroupUUID()); - } - - private String nullToEmpty(@Nullable String str) { - return (str == null) ? "" : str; - } - }; + comparing((GroupInfo g) -> nullToEmpty(g.name())).thenComparing(GroupInfo::getGroupUUID); int insertPos = getInsertRow(c, info); if (insertPos >= 0) { table.insertRow(insertPos); @@ -457,4 +428,9 @@ public class AccountGroupMembersScreen extends AccountGroupScreen { setRowItem(row, i); } } + + // Like Guava's Strings#nullToEmpty, which can't be used in GWT UI code. + private static String nullToEmpty(String str) { + return str == null ? "" : str; + } } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java index 259847ec65..c09f93622a 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.admin; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.Dispatcher; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.groups.GroupList; @@ -33,7 +35,6 @@ import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter; import com.google.gwt.user.client.ui.HTMLTable.Cell; import com.google.gwt.user.client.ui.Image; import java.util.Collections; -import java.util.Comparator; import java.util.List; public class GroupTable extends NavigationTable { @@ -105,14 +106,7 @@ public class GroupTable extends NavigationTable { table.removeRow(table.getRowCount() - 1); } - Collections.sort( - list, - new Comparator() { - @Override - public int compare(GroupInfo a, GroupInfo b) { - return a.name().compareTo(b.name()); - } - }); + Collections.sort(list, comparing(GroupInfo::name)); for (GroupInfo group : list.subList(fromIndex, toIndex)) { final int row = table.getRowCount(); table.insertRow(row); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java index c6e4e2f247..495a3d4661 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.changes; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.NotFoundScreen; import com.google.gerrit.client.info.ChangeInfo; @@ -187,16 +189,7 @@ public class AccountDashboardScreen extends Screen implements ChangeListScreen { } private Comparator outComparator() { - return new Comparator() { - @Override - public int compare(ChangeInfo a, ChangeInfo b) { - int cmp = a.created().compareTo(b.created()); - if (cmp != 0) { - return cmp; - } - return a._number() - b._number(); - } - }; + return comparing(ChangeInfo::created).thenComparing(ChangeInfo::_number); } private boolean hasChanges(JsArray result) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java index 0e4ef4e29c..1a2f502b56 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.dashboards; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.ui.NavigationTable; @@ -26,7 +28,6 @@ import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter; import com.google.gwt.user.client.ui.Image; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -75,14 +76,7 @@ public class DashboardsTable extends NavigationTable { table.removeRow(table.getRowCount() - 1); } - Collections.sort( - list, - new Comparator() { - @Override - public int compare(DashboardInfo a, DashboardInfo b) { - return a.id().compareTo(b.id()); - } - }); + Collections.sort(list, comparing(DashboardInfo::id)); String ref = null; for (DashboardInfo d : list) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentsCollections.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentsCollections.java index 533b74598a..5db62bd20f 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentsCollections.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentsCollections.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.diff; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.DiffObject; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.changes.CommentApi; @@ -28,7 +30,6 @@ import com.google.gerrit.reviewdb.client.Project; import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.rpc.AsyncCallback; import java.util.Collections; -import java.util.Comparator; /** Collection of published and draft comments loaded from the server. */ class CommentsCollections { @@ -158,14 +159,7 @@ class CommentsCollections { for (CommentInfo c : Natives.asList(in)) { c.path(path); } - Collections.sort( - Natives.asList(in), - new Comparator() { - @Override - public int compare(CommentInfo a, CommentInfo b) { - return a.updated().compareTo(b.updated()); - } - }); + Collections.sort(Natives.asList(in), comparing(CommentInfo::updated)); } return in; } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/UnifiedChunkManager.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/UnifiedChunkManager.java index 1a662e2127..98ad023c9d 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/UnifiedChunkManager.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/UnifiedChunkManager.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.diff; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.diff.DiffInfo.Region; import com.google.gerrit.client.diff.DiffInfo.Span; import com.google.gerrit.client.rpc.Natives; @@ -227,12 +229,7 @@ class UnifiedChunkManager extends ChunkManager { /** Diff chunks are ordered by their starting lines in CodeMirror */ private Comparator getDiffChunkComparatorCmLine() { - return new Comparator() { - @Override - public int compare(UnifiedDiffChunkInfo o1, UnifiedDiffChunkInfo o2) { - return o1.getCmLine() - o2.getCmLine(); - } - }; + return comparing(UnifiedDiffChunkInfo::getCmLine); } @Override diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java index ac8918084a..74f04ffc76 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java @@ -14,6 +14,8 @@ package com.google.gerrit.client.ui; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.projects.ProjectInfo; import com.google.gerrit.client.projects.ProjectMap; @@ -21,7 +23,6 @@ import com.google.gerrit.client.rpc.Natives; import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter; import com.google.gwt.user.client.ui.Image; import java.util.Collections; -import java.util.Comparator; import java.util.List; public class ProjectsTable extends NavigationTable { @@ -69,14 +70,7 @@ public class ProjectsTable extends NavigationTable { } List list = Natives.asList(projects.values()); - Collections.sort( - list, - new Comparator() { - @Override - public int compare(ProjectInfo a, ProjectInfo b) { - return a.name().compareTo(b.name()); - } - }); + Collections.sort(list, comparing(ProjectInfo::name)); for (ProjectInfo p : list.subList(fromIndex, toIndex)) { insert(table.getRowCount(), p); } diff --git a/gerrit-gwtui/src/main/java/net/codemirror/mode/ModeInfo.java b/gerrit-gwtui/src/main/java/net/codemirror/mode/ModeInfo.java index c6f113ede6..ff12a07e39 100644 --- a/gerrit-gwtui/src/main/java/net/codemirror/mode/ModeInfo.java +++ b/gerrit-gwtui/src/main/java/net/codemirror/mode/ModeInfo.java @@ -14,6 +14,8 @@ package net.codemirror.mode; +import static java.util.Comparator.comparing; + import com.google.gerrit.client.rpc.NativeMap; import com.google.gerrit.client.rpc.Natives; import com.google.gwt.core.client.JavaScriptObject; @@ -22,7 +24,6 @@ import com.google.gwt.core.client.JsArrayString; import com.google.gwt.resources.client.DataResource; import com.google.gwt.safehtml.shared.SafeUri; import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.Map; @@ -242,14 +243,7 @@ public class ModeInfo extends JavaScriptObject { byMime.put(m.mode(), m); } } - Collections.sort( - Natives.asList(filtered), - new Comparator() { - @Override - public int compare(ModeInfo a, ModeInfo b) { - return a.name().toLowerCase().compareTo(b.name().toLowerCase()); - } - }); + Collections.sort(Natives.asList(filtered), comparing((ModeInfo m) -> m.name().toLowerCase())); setAll(filtered); } diff --git a/java/com/google/gerrit/pgm/init/InitPlugins.java b/java/com/google/gerrit/pgm/init/InitPlugins.java index 385d20ca82..7f5590308b 100644 --- a/java/com/google/gerrit/pgm/init/InitPlugins.java +++ b/java/com/google/gerrit/pgm/init/InitPlugins.java @@ -14,7 +14,8 @@ package com.google.gerrit.pgm.init; -import com.google.common.collect.FluentIterable; +import static java.util.Comparator.comparing; + import com.google.gerrit.common.PluginData; import com.google.gerrit.pgm.init.api.ConsoleUI; import com.google.gerrit.pgm.init.api.InitFlags; @@ -25,12 +26,11 @@ import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Singleton; import java.io.IOException; -import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; -import java.util.Comparator; +import java.util.Collections; import java.util.List; import java.util.jar.Attributes; import java.util.jar.JarFile; @@ -58,25 +58,16 @@ public class InitPlugins implements InitStep { throws IOException { final List result = new ArrayList<>(); pluginsDistribution.foreach( - new PluginsDistribution.Processor() { - @Override - public void process(String pluginName, InputStream in) throws IOException { - Path tmpPlugin = JarPluginProvider.storeInTemp(pluginName, in, site); - String pluginVersion = getVersion(tmpPlugin); - if (deleteTempPluginFile) { - Files.delete(tmpPlugin); - } - result.add(new PluginData(pluginName, pluginVersion, tmpPlugin)); + (pluginName, in) -> { + Path tmpPlugin = JarPluginProvider.storeInTemp(pluginName, in, site); + String pluginVersion = getVersion(tmpPlugin); + if (deleteTempPluginFile) { + Files.delete(tmpPlugin); } + result.add(new PluginData(pluginName, pluginVersion, tmpPlugin)); }); - return FluentIterable.from(result) - .toSortedList( - new Comparator() { - @Override - public int compare(PluginData a, PluginData b) { - return a.name.compareTo(b.name); - } - }); + Collections.sort(result, comparing(p -> p.name)); + return result; } private final ConsoleUI ui; diff --git a/java/com/google/gerrit/server/account/GroupBackends.java b/java/com/google/gerrit/server/account/GroupBackends.java index 803d491ffd..1b1551269f 100644 --- a/java/com/google/gerrit/server/account/GroupBackends.java +++ b/java/com/google/gerrit/server/account/GroupBackends.java @@ -14,6 +14,8 @@ package com.google.gerrit.server.account; +import static java.util.Comparator.comparing; + import com.google.common.collect.Iterables; import com.google.gerrit.common.Nullable; import com.google.gerrit.common.data.GroupReference; @@ -25,12 +27,7 @@ import java.util.Comparator; public class GroupBackends { public static final Comparator GROUP_REF_NAME_COMPARATOR = - new Comparator() { - @Override - public int compare(GroupReference a, GroupReference b) { - return a.getName().compareTo(b.getName()); - } - }; + comparing(GroupReference::getName); /** * Runs {@link GroupBackend#suggest(String, ProjectState)} and filters the result to return the diff --git a/java/com/google/gerrit/server/change/IncludedInResolver.java b/java/com/google/gerrit/server/change/IncludedInResolver.java index d1bc0a27c7..afddf2a159 100644 --- a/java/com/google/gerrit/server/change/IncludedInResolver.java +++ b/java/com/google/gerrit/server/change/IncludedInResolver.java @@ -14,6 +14,9 @@ package com.google.gerrit.server.change; +import static java.util.Comparator.comparing; +import static java.util.stream.Collectors.toList; + import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; @@ -22,7 +25,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -151,15 +153,7 @@ public class IncludedInResolver { */ private void partition(List before, List after) { int insertionPoint = - Collections.binarySearch( - tipsByCommitTime, - target, - new Comparator() { - @Override - public int compare(RevCommit c1, RevCommit c2) { - return c1.getCommitTime() - c2.getCommitTime(); - } - }); + Collections.binarySearch(tipsByCommitTime, target, comparing(RevCommit::getCommitTime)); if (insertionPoint < 0) { insertionPoint = -(insertionPoint + 1); } @@ -211,19 +205,8 @@ public class IncludedInResolver { } commitToRef.put(commit, ref.getName()); } - tipsByCommitTime = Lists.newArrayList(commitToRef.keySet()); - sortOlderFirst(tipsByCommitTime); - } - - private void sortOlderFirst(List tips) { - Collections.sort( - tips, - new Comparator() { - @Override - public int compare(RevCommit c1, RevCommit c2) { - return c1.getCommitTime() - c2.getCommitTime(); - } - }); + tipsByCommitTime = + commitToRef.keySet().stream().sorted(comparing(RevCommit::getCommitTime)).collect(toList()); } public static class Result { diff --git a/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java b/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java index eecf935a69..0e9a2b7e15 100644 --- a/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java +++ b/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java @@ -14,6 +14,8 @@ package com.google.gerrit.server.mime; +import static java.util.Comparator.comparing; + import com.google.common.flogger.FluentLogger; import com.google.gerrit.server.config.GerritServerConfig; import com.google.inject.Inject; @@ -22,12 +24,9 @@ import eu.medsea.mimeutil.MimeException; import eu.medsea.mimeutil.MimeType; import eu.medsea.mimeutil.MimeUtil2; import java.io.InputStream; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.HashSet; -import java.util.List; import java.util.Set; import org.eclipse.jgit.lib.Config; @@ -115,16 +114,7 @@ public class MimeUtilFileTypeRegistry implements FileTypeRegistry { return MimeUtil2.UNKNOWN_MIME_TYPE; } - final List types = new ArrayList<>(mimeTypes); - Collections.sort( - types, - new Comparator() { - @Override - public int compare(MimeType a, MimeType b) { - return getCorrectedMimeSpecificity(b) - getCorrectedMimeSpecificity(a); - } - }); - return types.get(0); + return Collections.max(mimeTypes, comparing(this::getCorrectedMimeSpecificity)); } @Override diff --git a/java/com/google/gerrit/server/patch/PatchList.java b/java/com/google/gerrit/server/patch/PatchList.java index cf5df4af52..dd717ba37e 100644 --- a/java/com/google/gerrit/server/patch/PatchList.java +++ b/java/com/google/gerrit/server/patch/PatchList.java @@ -47,12 +47,7 @@ public class PatchList implements Serializable { private static final long serialVersionUID = PatchListKey.serialVersionUID; private static final Comparator PATCH_CMP = - new Comparator() { - @Override - public int compare(PatchListEntry a, PatchListEntry b) { - return comparePaths(a.getNewName(), b.getNewName()); - } - }; + Comparator.comparing(PatchListEntry::getNewName, PatchList::comparePaths); @VisibleForTesting static int comparePaths(String a, String b) { diff --git a/java/com/google/gerrit/server/patch/PatchScriptBuilder.java b/java/com/google/gerrit/server/patch/PatchScriptBuilder.java index a3d9048f52..e94f7e83d4 100644 --- a/java/com/google/gerrit/server/patch/PatchScriptBuilder.java +++ b/java/com/google/gerrit/server/patch/PatchScriptBuilder.java @@ -15,6 +15,7 @@ package com.google.gerrit.server.patch; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.Comparator.comparing; import com.google.common.collect.ImmutableSet; import com.google.gerrit.common.data.CommentDetail; @@ -55,13 +56,7 @@ class PatchScriptBuilder { static final int MAX_CONTEXT = 5000000; static final int BIG_FILE = 9000; - private static final Comparator EDIT_SORT = - new Comparator() { - @Override - public int compare(Edit o1, Edit o2) { - return o1.getBeginA() - o2.getBeginA(); - } - }; + private static final Comparator EDIT_SORT = comparing(Edit::getBeginA); private Repository db; private Project.NameKey projectKey; diff --git a/java/com/google/gerrit/server/plugins/PluginEntry.java b/java/com/google/gerrit/server/plugins/PluginEntry.java index f7b1e82af3..3a6c7b2c17 100644 --- a/java/com/google/gerrit/server/plugins/PluginEntry.java +++ b/java/com/google/gerrit/server/plugins/PluginEntry.java @@ -14,6 +14,8 @@ package com.google.gerrit.server.plugins; +import static java.util.Comparator.comparing; + import java.util.Collections; import java.util.Comparator; import java.util.Map; @@ -28,13 +30,7 @@ import java.util.Optional; public class PluginEntry { public static final String ATTR_CHARACTER_ENCODING = "Character-Encoding"; public static final String ATTR_CONTENT_TYPE = "Content-Type"; - public static final Comparator COMPARATOR_BY_NAME = - new Comparator() { - @Override - public int compare(PluginEntry a, PluginEntry b) { - return a.getName().compareTo(b.getName()); - } - }; + public static final Comparator COMPARATOR_BY_NAME = comparing(PluginEntry::getName); private static final Map EMPTY_ATTRS = Collections.emptyMap(); private static final Optional NO_SIZE = Optional.empty(); diff --git a/java/com/google/gerrit/server/restapi/account/GetEmails.java b/java/com/google/gerrit/server/restapi/account/GetEmails.java index 85262eeb72..ed3347fc97 100644 --- a/java/com/google/gerrit/server/restapi/account/GetEmails.java +++ b/java/com/google/gerrit/server/restapi/account/GetEmails.java @@ -14,6 +14,9 @@ package com.google.gerrit.server.restapi.account; +import static java.util.Comparator.comparing; +import static java.util.stream.Collectors.toList; + import com.google.gerrit.extensions.common.EmailInfo; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.RestReadView; @@ -25,10 +28,8 @@ import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; +import java.util.Objects; @Singleton public class GetEmails implements RestReadView { @@ -47,24 +48,19 @@ public class GetEmails implements RestReadView { if (!self.get().hasSameAccountId(rsrc.getUser())) { permissionBackend.currentUser().check(GlobalPermission.MODIFY_ACCOUNT); } + return rsrc.getUser() + .getEmailAddresses() + .stream() + .filter(Objects::nonNull) + .map(e -> toEmailInfo(rsrc, e)) + .sorted(comparing((EmailInfo e) -> e.email)) + .collect(toList()); + } - List emails = new ArrayList<>(); - for (String email : rsrc.getUser().getEmailAddresses()) { - if (email != null) { - EmailInfo e = new EmailInfo(); - e.email = email; - e.preferred(rsrc.getUser().getAccount().getPreferredEmail()); - emails.add(e); - } - } - Collections.sort( - emails, - new Comparator() { - @Override - public int compare(EmailInfo a, EmailInfo b) { - return a.email.compareTo(b.email); - } - }); - return emails; + private static EmailInfo toEmailInfo(AccountResource rsrc, String email) { + EmailInfo e = new EmailInfo(); + e.email = email; + e.preferred(rsrc.getUser().getAccount().getPreferredEmail()); + return e; } } diff --git a/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java b/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java index 112bb246b4..61021be73c 100644 --- a/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java +++ b/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java @@ -14,8 +14,10 @@ package com.google.gerrit.server.restapi.account; +import static java.util.Comparator.comparing; +import static java.util.stream.Collectors.toList; + import com.google.common.base.Strings; -import com.google.common.collect.ComparisonChain; import com.google.common.collect.ImmutableSet; import com.google.gerrit.extensions.client.ProjectWatchInfo; import com.google.gerrit.extensions.restapi.AuthException; @@ -36,11 +38,7 @@ import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; -import java.util.Map; import org.eclipse.jgit.errors.ConfigInvalidException; @Singleton @@ -67,31 +65,28 @@ public class GetWatchedProjects implements RestReadView { Account.Id accountId = rsrc.getUser().getAccountId(); AccountState account = accounts.get(accountId).orElseThrow(ResourceNotFoundException::new); - List projectWatchInfos = new ArrayList<>(); - for (Map.Entry> e : - account.getProjectWatches().entrySet()) { - ProjectWatchInfo pwi = new ProjectWatchInfo(); - pwi.filter = e.getKey().filter(); - pwi.project = e.getKey().project().get(); - pwi.notifyAbandonedChanges = toBoolean(e.getValue().contains(NotifyType.ABANDONED_CHANGES)); - pwi.notifyNewChanges = toBoolean(e.getValue().contains(NotifyType.NEW_CHANGES)); - pwi.notifyNewPatchSets = toBoolean(e.getValue().contains(NotifyType.NEW_PATCHSETS)); - pwi.notifySubmittedChanges = toBoolean(e.getValue().contains(NotifyType.SUBMITTED_CHANGES)); - pwi.notifyAllComments = toBoolean(e.getValue().contains(NotifyType.ALL_COMMENTS)); - projectWatchInfos.add(pwi); - } - Collections.sort( - projectWatchInfos, - new Comparator() { - @Override - public int compare(ProjectWatchInfo pwi1, ProjectWatchInfo pwi2) { - return ComparisonChain.start() - .compare(pwi1.project, pwi2.project) - .compare(Strings.nullToEmpty(pwi1.filter), Strings.nullToEmpty(pwi2.filter)) - .result(); - } - }); - return projectWatchInfos; + return account + .getProjectWatches() + .entrySet() + .stream() + .map(e -> toProjectWatchInfo(e.getKey(), e.getValue())) + .sorted( + comparing((ProjectWatchInfo pwi) -> pwi.project) + .thenComparing(pwi -> Strings.nullToEmpty(pwi.filter))) + .collect(toList()); + } + + private static ProjectWatchInfo toProjectWatchInfo( + ProjectWatchKey key, ImmutableSet watchTypes) { + ProjectWatchInfo pwi = new ProjectWatchInfo(); + pwi.filter = key.filter(); + pwi.project = key.project().get(); + pwi.notifyAbandonedChanges = toBoolean(watchTypes.contains(NotifyType.ABANDONED_CHANGES)); + pwi.notifyNewChanges = toBoolean(watchTypes.contains(NotifyType.NEW_CHANGES)); + pwi.notifyNewPatchSets = toBoolean(watchTypes.contains(NotifyType.NEW_PATCHSETS)); + pwi.notifySubmittedChanges = toBoolean(watchTypes.contains(NotifyType.SUBMITTED_CHANGES)); + pwi.notifyAllComments = toBoolean(watchTypes.contains(NotifyType.ALL_COMMENTS)); + return pwi; } private static Boolean toBoolean(boolean value) { diff --git a/java/com/google/gerrit/server/restapi/config/ListTasks.java b/java/com/google/gerrit/server/restapi/config/ListTasks.java index 7b69831124..f77cda4a59 100644 --- a/java/com/google/gerrit/server/restapi/config/ListTasks.java +++ b/java/com/google/gerrit/server/restapi/config/ListTasks.java @@ -14,7 +14,9 @@ package com.google.gerrit.server.restapi.config; -import com.google.common.collect.ComparisonChain; +import static java.util.Comparator.comparing; +import static java.util.stream.Collectors.toList; + import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.reviewdb.client.Project; @@ -35,8 +37,6 @@ import com.google.inject.Provider; import com.google.inject.Singleton; import java.sql.Timestamp; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -106,20 +106,14 @@ public class ListTasks implements RestReadView { } private List getTasks() { - List taskInfos = workQueue.getTaskInfos(TaskInfo::new); - Collections.sort( - taskInfos, - new Comparator() { - @Override - public int compare(TaskInfo a, TaskInfo b) { - return ComparisonChain.start() - .compare(a.state.ordinal(), b.state.ordinal()) - .compare(a.delay, b.delay) - .compare(a.command, b.command) - .result(); - } - }); - return taskInfos; + return workQueue + .getTaskInfos(TaskInfo::new) + .stream() + .sorted( + comparing((TaskInfo t) -> t.state.ordinal()) + .thenComparing(t -> t.delay) + .thenComparing(t -> t.command)) + .collect(toList()); } public static class TaskInfo { diff --git a/java/com/google/gerrit/server/restapi/group/ListSubgroups.java b/java/com/google/gerrit/server/restapi/group/ListSubgroups.java index 97a260e9bd..26b6db4567 100644 --- a/java/com/google/gerrit/server/restapi/group/ListSubgroups.java +++ b/java/com/google/gerrit/server/restapi/group/ListSubgroups.java @@ -15,6 +15,7 @@ package com.google.gerrit.server.restapi.group; import static com.google.common.base.Strings.nullToEmpty; +import static java.util.Comparator.comparing; import com.google.common.flogger.FluentLogger; import com.google.gerrit.common.data.GroupDescription; @@ -30,7 +31,6 @@ import com.google.inject.Inject; import com.google.inject.Singleton; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; @Singleton @@ -74,16 +74,7 @@ public class ListSubgroups implements RestReadView { } Collections.sort( included, - new Comparator() { - @Override - public int compare(GroupInfo a, GroupInfo b) { - int cmp = nullToEmpty(a.name).compareTo(nullToEmpty(b.name)); - if (cmp != 0) { - return cmp; - } - return nullToEmpty(a.id).compareTo(nullToEmpty(b.id)); - } - }); + comparing((GroupInfo g) -> nullToEmpty(g.name)).thenComparing(g -> nullToEmpty(g.id))); return included; } } diff --git a/java/com/google/gerrit/server/restapi/project/ListTags.java b/java/com/google/gerrit/server/restapi/project/ListTags.java index e79fdcaa8d..578fbf36c2 100644 --- a/java/com/google/gerrit/server/restapi/project/ListTags.java +++ b/java/com/google/gerrit/server/restapi/project/ListTags.java @@ -15,6 +15,7 @@ package com.google.gerrit.server.restapi.project; import static com.google.gerrit.reviewdb.client.RefNames.isConfigRef; +import static java.util.Comparator.comparing; import com.google.common.collect.ImmutableMap; import com.google.gerrit.extensions.api.projects.ProjectApi.ListRefsRequest; @@ -40,7 +41,6 @@ import java.io.IOException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; import java.util.Map; import org.eclipse.jgit.errors.RepositoryNotFoundException; @@ -135,14 +135,7 @@ public class ListTags implements RestReadView { } } - Collections.sort( - tags, - new Comparator() { - @Override - public int compare(TagInfo a, TagInfo b) { - return a.ref.compareTo(b.ref); - } - }); + Collections.sort(tags, comparing(t -> t.ref)); return new RefFilter(Constants.R_TAGS) .start(start) diff --git a/java/com/google/gwtexpui/globalkey/client/KeyHelpPopup.java b/java/com/google/gwtexpui/globalkey/client/KeyHelpPopup.java index 13181250df..20d093e31e 100644 --- a/java/com/google/gwtexpui/globalkey/client/KeyHelpPopup.java +++ b/java/com/google/gwtexpui/globalkey/client/KeyHelpPopup.java @@ -14,6 +14,9 @@ package com.google.gwtexpui.globalkey.client; +import static java.util.Comparator.comparing; +import static java.util.stream.Collectors.toList; + import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyCodes; @@ -31,10 +34,7 @@ import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwtexpui.safehtml.client.SafeHtml; import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -228,15 +228,6 @@ public class KeyHelpPopup extends PopupPanel implements KeyPressHandler, KeyDown } private List sort(KeyCommandSet set) { - final List keys = new ArrayList<>(set.getKeys()); - Collections.sort( - keys, - new Comparator() { - @Override - public int compare(KeyCommand arg0, KeyCommand arg1) { - return arg0.getHelpText().compareTo(arg1.getHelpText()); - } - }); - return keys; + return set.getKeys().stream().sorted(comparing(KeyCommand::getHelpText)).collect(toList()); } } diff --git a/java/com/google/gwtexpui/safehtml/client/HighlightSuggestOracle.java b/java/com/google/gwtexpui/safehtml/client/HighlightSuggestOracle.java index ef80cdb01b..758521fc0b 100644 --- a/java/com/google/gwtexpui/safehtml/client/HighlightSuggestOracle.java +++ b/java/com/google/gwtexpui/safehtml/client/HighlightSuggestOracle.java @@ -14,11 +14,12 @@ package com.google.gwtexpui.safehtml.client; +import static java.util.Comparator.comparing; +import static java.util.stream.Collectors.toList; + import com.google.gwt.user.client.ui.SuggestOracle; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; import java.util.List; /** @@ -115,15 +116,8 @@ public abstract class HighlightSuggestOracle extends SuggestOracle { * terms. */ private static List splitQuery(String query) { - List queryTerms = Arrays.asList(query.split("\\s+")); - Collections.sort( - queryTerms, - new Comparator() { - @Override - public int compare(String s1, String s2) { - return Integer.compare(s2.length(), s1.length()); - } - }); + List queryTerms = + Arrays.stream(query.split("\\s+")).sorted(comparing(String::length)).collect(toList()); List result = new ArrayList<>(); for (String s : queryTerms) {