Avoid Multimap implementation create methods

Guava team recommends MultimapBuilder over specific Multimap
implementations, so callers don't have to know the specific key/value
behaviors of the individual implementations. The static factory
methods in the implementations will be removed in a later version.

LinkedListMultimap and LinkedHashMultimap are not affected, since
MultimapBuilder lacks support for specifying linked entries, and thus
the factory methods are not in immediate danger of deletion.

Change-Id: I7744db687da84a7beae31d1cb8953e782ed23c1d
This commit is contained in:
Dave Borowitz 2017-01-13 16:45:47 -05:00 committed by David Pursehouse
parent 484da493b3
commit 0ecf8cf401
10 changed files with 30 additions and 22 deletions

View File

@ -45,13 +45,13 @@ import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.MultimapBuilder;
import com.google.common.io.BaseEncoding;
import com.google.common.io.CountingOutputStream;
import com.google.common.math.IntMath;
@ -245,8 +245,10 @@ public class RestApiServlet extends HttpServlet {
int status = SC_OK;
long responseBytes = -1;
Object result = null;
ListMultimap<String, String> params = ArrayListMultimap.create();
ListMultimap<String, String> config = ArrayListMultimap.create();
ListMultimap<String, String> params =
MultimapBuilder.hashKeys().arrayListValues().build();
ListMultimap<String, String> config =
MultimapBuilder.hashKeys().arrayListValues().build();
Object inputRequestBody = null;
RestResource rsrc = TopLevelResource.INSTANCE;
ViewData viewData = null;

View File

@ -14,8 +14,8 @@
package com.google.gerrit.httpd.rpc;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.gerrit.audit.AuditService;
import com.google.gerrit.audit.RpcAuditEvent;
import com.google.gerrit.common.TimeUtil;
@ -154,7 +154,8 @@ final class GerritJsonServlet extends JsonServlet<GerritJsonServlet.GerritCall>
}
private ListMultimap<String, ?> extractParams(Audit note, GerritCall call) {
ListMultimap<String, Object> args = ArrayListMultimap.create();
ListMultimap<String, Object> args =
MultimapBuilder.hashKeys().arrayListValues().build();
Object[] params = call.getParams();
for (int i = 0; i < params.length; i++) {

View File

@ -24,11 +24,11 @@ import static com.google.gerrit.server.index.change.ChangeIndexRewriter.OPEN_STA
import static java.util.stream.Collectors.toList;
import com.google.common.base.Throwables;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Collections2;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListeningExecutorService;
@ -411,7 +411,7 @@ public class LuceneChangeIndex implements ChangeIndex {
private static ListMultimap<String, IndexableField> fields(Document doc,
Set<String> fields) {
ListMultimap<String, IndexableField> stored =
ArrayListMultimap.create(fields.size(), 4);
MultimapBuilder.hashKeys(fields.size()).arrayListValues(4).build();
for (IndexableField f : doc) {
String name = f.name();
if (fields.contains(name)) {
@ -559,7 +559,8 @@ public class LuceneChangeIndex implements ChangeIndex {
private void decodeStar(ListMultimap<String, IndexableField> doc,
ChangeData cd) {
Collection<IndexableField> star = doc.get(STAR_FIELD);
ListMultimap<Account.Id, String> stars = ArrayListMultimap.create();
ListMultimap<Account.Id, String> stars =
MultimapBuilder.hashKeys().arrayListValues().build();
for (IndexableField r : star) {
StarredChangesUtil.StarField starField =
StarredChangesUtil.StarField.parse(r.stringValue());

View File

@ -20,10 +20,10 @@ import static com.google.gerrit.server.schema.DataSourceProvider.Context.MULTI_U
import com.google.common.base.Predicates;
import com.google.common.base.Stopwatch;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Ordering;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@ -246,7 +246,7 @@ public class RebuildNoteDb extends SiteProgram {
// Memorize all changes so we can close the db connection and allow
// rebuilder threads to use the full connection pool.
ListMultimap<Project.NameKey, Change.Id> changesByProject =
ArrayListMultimap.create();
MultimapBuilder.hashKeys().arrayListValues().build();
try (ReviewDb db = schemaFactory.open()) {
if (projects.isEmpty() && !changes.isEmpty()) {
Iterable<Change> todo = unwrapDb(db).changes()

View File

@ -16,9 +16,9 @@ package com.google.gerrit.server.change;
import static java.util.stream.Collectors.joining;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.NotifyInfo;
@ -89,7 +89,7 @@ public class NotifyUtil {
List<String> accounts = e.getValue().accounts;
if (accounts != null) {
if (m == null) {
m = ArrayListMultimap.create();
m = MultimapBuilder.hashKeys().arrayListValues().build();
}
m.putAll(e.getKey(), find(dbProvider.get(), accounts));
}

View File

@ -14,8 +14,8 @@
package com.google.gerrit.server.config;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import org.eclipse.jgit.revwalk.FooterLine;
@ -38,7 +38,8 @@ public class TrackingFooters {
}
public ListMultimap<String, String> extract(List<FooterLine> lines) {
ListMultimap<String, String> r = ArrayListMultimap.create();
ListMultimap<String, String> r =
MultimapBuilder.hashKeys().arrayListValues().build();
if (lines == null) {
return r;
}

View File

@ -15,8 +15,8 @@
package com.google.gerrit.server.schema;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Project;
@ -73,7 +73,8 @@ public class Schema_139 extends SchemaVersion {
@Override
protected void migrateData(ReviewDb db, UpdateUI ui)
throws OrmException, SQLException {
ListMultimap<Account.Id, ProjectWatch> imports = ArrayListMultimap.create();
ListMultimap<Account.Id, ProjectWatch> imports =
MultimapBuilder.hashKeys().arrayListValues().build();
try (Statement stmt = ((JdbcSchema) db).getConnection().createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT "

View File

@ -14,8 +14,8 @@
package com.google.gerrit.sshd;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.gerrit.audit.AuditService;
import com.google.gerrit.audit.SshAuditEvent;
import com.google.gerrit.common.TimeUtil;
@ -158,12 +158,13 @@ class SshLog implements LifecycleListener {
private ListMultimap<String, ?> extractParameters(DispatchCommand dcmd) {
if (dcmd == null) {
return ArrayListMultimap.create(0, 0);
return MultimapBuilder.hashKeys(0).arrayListValues(0).build();
}
String[] cmdArgs = dcmd.getArguments();
String paramName = null;
int argPos = 0;
ListMultimap<String, String> parms = ArrayListMultimap.create();
ListMultimap<String, String> parms =
MultimapBuilder.hashKeys().arrayListValues().build();
for (int i = 2; i < cmdArgs.length; i++) {
String arg = cmdArgs[i];
// -- stop parameters parsing

View File

@ -35,9 +35,9 @@
package com.google.gerrit.util.cli;
import com.google.common.base.Strings;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.MultimapBuilder;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
@ -224,7 +224,8 @@ public class CmdLineParser {
public void parseOptionMap(Map<String, String[]> parameters)
throws CmdLineException {
ListMultimap<String, String> map = ArrayListMultimap.create();
ListMultimap<String, String> map =
MultimapBuilder.hashKeys().arrayListValues().build();
for (Map.Entry<String, String[]> ent : parameters.entrySet()) {
for (String val : ent.getValue()) {
map.put(ent.getKey(), val);

@ -1 +1 @@
Subproject commit ea6c8c3949cecfd6547ce1e97d2dddbb2669e827
Subproject commit da185134efc5f1f45f7a0cfd4cb68110312fd216