Convert some Functions/Predicates to streams & lambdas (4)

Change-Id: I8a3b8f1247df99f824c3b4d34c7573b5d16a10a4
diff --git a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/TestAccount.java b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/TestAccount.java
index 7f08b6f..c1a815a 100644
--- a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/TestAccount.java
+++ b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/TestAccount.java
@@ -14,7 +14,6 @@
 
 package com.google.gerrit.acceptance;
 
-import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.server.mail.Address;
@@ -29,13 +28,7 @@
 public class TestAccount {
   public static FluentIterable<Account.Id> ids(
       Iterable<TestAccount> accounts) {
-    return FluentIterable.from(accounts)
-        .transform(new Function<TestAccount, Account.Id>() {
-          @Override
-          public Account.Id apply(TestAccount in) {
-            return in.id;
-          }
-        });
+    return FluentIterable.from(accounts).transform(a -> a.id);
   }
 
   public static FluentIterable<Account.Id> ids(TestAccount... accounts) {
@@ -43,13 +36,7 @@
   }
 
   public static FluentIterable<String> names(Iterable<TestAccount> accounts) {
-    return FluentIterable.from(accounts)
-        .transform(new Function<TestAccount, String>() {
-          @Override
-          public String apply(TestAccount in) {
-            return in.fullName;
-          }
-        });
+    return FluentIterable.from(accounts).transform(a -> a.fullName);
   }
 
   public static FluentIterable<String> names(TestAccount... accounts) {
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
index 9ae2d6c..2ed4c36 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
@@ -14,9 +14,8 @@
 
 package com.google.gerrit.pgm;
 
-import com.google.common.base.Function;
 import com.google.common.base.Joiner;
-import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 import com.google.gerrit.common.IoUtil;
 import com.google.gerrit.common.PageLinks;
 import com.google.gerrit.common.PluginData;
@@ -42,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 /** Initialize a new Gerrit installation. */
 public class Init extends BaseInit {
@@ -237,16 +237,10 @@
     if (nullOrEmpty(installPlugins) || nullOrEmpty(plugins)) {
       return;
     }
-    ArrayList<String> copy = Lists.newArrayList(installPlugins);
-    List<String> pluginNames = Lists.transform(plugins, new Function<PluginData, String>() {
-      @Override
-      public String apply(PluginData input) {
-        return input.name;
-      }
-    });
-    copy.removeAll(pluginNames);
-    if (!copy.isEmpty()) {
-      ui.message("Cannot find plugin(s): %s\n", Joiner.on(", ").join(copy));
+    Set<String> missing = Sets.newHashSet(installPlugins);
+    plugins.stream().forEach(p -> missing.remove(p.name));
+    if (!missing.isEmpty()) {
+      ui.message("Cannot find plugin(s): %s\n", Joiner.on(", ").join(missing));
       listPlugins = true;
     }
   }
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/RebuildNoteDb.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/RebuildNoteDb.java
index 0656c3b..030ac30 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/RebuildNoteDb.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/RebuildNoteDb.java
@@ -17,7 +17,6 @@
 import static com.google.gerrit.reviewdb.server.ReviewDbUtil.unwrapDb;
 import static com.google.gerrit.server.schema.DataSourceProvider.Context.MULTI_USER;
 
-import com.google.common.base.Function;
 import com.google.common.base.Predicates;
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.ArrayListMultimap;
@@ -234,13 +233,8 @@
         ArrayListMultimap.create();
     try (ReviewDb db = schemaFactory.open()) {
       if (projects.isEmpty() && !changes.isEmpty()) {
-        Iterable<Change> todo = unwrapDb(db).changes().get(
-            Iterables.transform(changes, new Function<Integer, Change.Id>() {
-              @Override
-              public Change.Id apply(Integer in) {
-                return new Change.Id(in);
-              }
-            }));
+        Iterable<Change> todo = unwrapDb(db).changes()
+            .get(Iterables.transform(changes, Change.Id::new));
         for (Change c : todo) {
           changesByProject.put(c.getProject(), c.getId());
         }
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Reindex.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Reindex.java
index 2e7d88a..501b115 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Reindex.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Reindex.java
@@ -16,10 +16,8 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.gerrit.server.schema.DataSourceProvider.Context.MULTI_USER;
+import static java.util.stream.Collectors.toSet;
 
-import com.google.common.base.Function;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
 import com.google.gerrit.common.Die;
 import com.google.gerrit.extensions.config.FactoryModule;
@@ -134,14 +132,8 @@
     }
 
     checkNotNull(indexDefs, "Called this method before injectMembers?");
-    Set<String> valid = FluentIterable.from(indexDefs).transform(
-        new Function<IndexDefinition<?, ?, ?>, String>() {
-          @Override
-          public String apply(IndexDefinition<?, ?, ?> input) {
-            return input.getName();
-          }
-        }).toSortedSet(Ordering.natural());
-
+    Set<String> valid = indexDefs.stream()
+        .map(IndexDefinition::getName).sorted().collect(toSet());
     Set<String> invalid = Sets.difference(Sets.newHashSet(indices), valid);
     if (invalid.isEmpty()) {
       return;
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
index 11a3d81..7866ed3 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
@@ -14,7 +14,8 @@
 
 package com.google.gerrit.server;
 
-import com.google.common.base.Function;
+import static java.util.Comparator.comparingInt;
+
 import com.google.common.collect.Ordering;
 import com.google.gerrit.reviewdb.client.PatchSet;
 import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -40,16 +41,8 @@
   private static final String SUBJECT_CROP_APPENDIX = "...";
   private static final int SUBJECT_CROP_RANGE = 10;
 
-  public static final Function<PatchSet, Integer> TO_PS_ID =
-      new Function<PatchSet, Integer>() {
-        @Override
-        public Integer apply(PatchSet in) {
-          return in.getId().get();
-        }
-      };
-
-  public static final Ordering<PatchSet> PS_ID_ORDER = Ordering.natural()
-    .onResultOf(TO_PS_ID);
+  public static final Ordering<PatchSet> PS_ID_ORDER =
+      Ordering.from(comparingInt(PatchSet::getPatchSetId));
 
   /**
    * Generate a new unique identifier for change message entities.
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/OptionUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/OptionUtil.java
index 24d10f7..c050a61 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/OptionUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/OptionUtil.java
@@ -15,7 +15,6 @@
 package com.google.gerrit.server;
 
 import com.google.common.base.CharMatcher;
-import com.google.common.base.Function;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Iterables;
 
@@ -24,16 +23,10 @@
   private static final Splitter COMMA_OR_SPACE =
       Splitter.on(CharMatcher.anyOf(", ")).omitEmptyStrings().trimResults();
 
-  private static final Function<String, String> TO_LOWER_CASE =
-      new Function<String, String>() {
-        @Override
-        public String apply(String input) {
-          return input.toLowerCase();
-        }
-      };
-
   public static Iterable<String> splitOptionValue(String value) {
-    return Iterables.transform(COMMA_OR_SPACE.split(value), TO_LOWER_CASE);
+    return Iterables.transform(
+        COMMA_OR_SPACE.split(value),
+        String::toLowerCase);
   }
 
   private OptionUtil() {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java
index e1f786b..a818edd 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java
@@ -14,14 +14,14 @@
 
 package com.google.gerrit.server;
 
-import com.google.common.base.Function;
+import static java.util.Comparator.comparing;
+
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
-import com.google.gerrit.common.Nullable;
 import com.google.gerrit.common.data.GroupReference;
 import com.google.gerrit.common.errors.NoSuchGroupException;
 import com.google.gerrit.extensions.common.AccountInfo;
@@ -68,19 +68,17 @@
 public class ReviewersUtil {
   private static final String MAX_SUFFIX = "\u9fa5";
   private static final Ordering<SuggestedReviewerInfo> ORDERING =
-      Ordering.natural().onResultOf(new Function<SuggestedReviewerInfo, String>() {
-        @Nullable
-        @Override
-        public String apply(@Nullable SuggestedReviewerInfo suggestedReviewerInfo) {
-          if (suggestedReviewerInfo == null) {
-            return null;
-          }
-          return suggestedReviewerInfo.account != null
-              ? MoreObjects.firstNonNull(suggestedReviewerInfo.account.email,
-              Strings.nullToEmpty(suggestedReviewerInfo.account.name))
-              : Strings.nullToEmpty(suggestedReviewerInfo.group.name);
-        }
-      });
+      Ordering.from(comparing(
+          suggestedReviewerInfo -> {
+            if (suggestedReviewerInfo == null) {
+              return null;
+            }
+            return suggestedReviewerInfo.account != null
+                ? MoreObjects.firstNonNull(suggestedReviewerInfo.account.email,
+                Strings.nullToEmpty(suggestedReviewerInfo.account.name))
+                : Strings.nullToEmpty(suggestedReviewerInfo.group.name);
+          }));
+
   private final AccountLoader accountLoader;
   private final AccountCache accountCache;
   private final AccountIndexCollection indexes;
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/AllowedFormats.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/AllowedFormats.java
index 3a1e0f4..756ce88 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/AllowedFormats.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/AllowedFormats.java
@@ -14,8 +14,9 @@
 
 package com.google.gerrit.server.change;
 
-import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
 import com.google.gerrit.server.config.DownloadConfig;
 import com.google.inject.Inject;
@@ -28,7 +29,7 @@
 @Singleton
 public class AllowedFormats {
   final ImmutableMap<String, ArchiveFormat> extensions;
-  final Set<ArchiveFormat> allowed;
+  final ImmutableSet<ArchiveFormat> allowed;
 
   @Inject
   AllowedFormats(DownloadConfig cfg) {
@@ -43,14 +44,8 @@
 
     // Zip is not supported because it may be interpreted by a Java plugin as a
     // valid JAR file, whose code would have access to cookies on the domain.
-    allowed = Sets.filter(
-        cfg.getArchiveFormats(),
-        new Predicate<ArchiveFormat>() {
-          @Override
-          public boolean apply(ArchiveFormat format) {
-            return (format != ArchiveFormat.ZIP);
-          }
-        });
+    allowed = Sets.immutableEnumSet(
+        Iterables.filter(cfg.getArchiveFormats(), f -> f != ArchiveFormat.ZIP));
   }
 
   public Set<ArchiveFormat> getAllowed() {
@@ -60,4 +55,4 @@
   public ImmutableMap<String, ArchiveFormat> getExtensions() {
     return extensions;
   }
-}
\ No newline at end of file
+}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java
index a3c992f..e8ccd25 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java
@@ -18,9 +18,9 @@
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.gerrit.reviewdb.client.Change.INITIAL_PATCH_SET_ID;
 
+import static java.util.stream.Collectors.toSet;
+
 import com.google.common.base.MoreObjects;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Sets;
 import com.google.gerrit.common.FooterConstants;
 import com.google.gerrit.common.data.LabelType;
 import com.google.gerrit.common.data.LabelTypes;
@@ -377,21 +377,23 @@
 
   private Set<Account.Id> filterOnChangeVisibility(final ReviewDb db,
       final ChangeNotes notes, Set<Account.Id> accounts) {
-    return Sets.filter(accounts, new Predicate<Account.Id>() {
-      @Override
-      public boolean apply(Account.Id accountId) {
-        try {
-          IdentifiedUser user = userFactory.create(accountId);
-          return changeControlFactory.controlFor(notes, user).isVisible(db);
-        } catch (OrmException | NoSuchChangeException e) {
-          log.warn(
-              String.format("Failed to check if account %d can see change %d",
-                  accountId.get(), notes.getChangeId().get()),
-              e);
-          return false;
-        }
-      }
-    });
+    return accounts.stream()
+        .filter(
+            accountId -> {
+              try {
+                IdentifiedUser user = userFactory.create(accountId);
+                return changeControlFactory.controlFor(notes, user)
+                    .isVisible(db);
+              } catch (OrmException | NoSuchChangeException e) {
+                log.warn(
+                    String.format(
+                        "Failed to check if account %d can see change %d",
+                        accountId.get(), notes.getChangeId().get()),
+                    e);
+                return false;
+              }
+            })
+        .collect(toSet());
   }
 
   @Override
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
index e950d99..9bd5e44 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
@@ -35,8 +35,9 @@
 import static com.google.gerrit.extensions.client.ListChangesOption.WEB_LINKS;
 import static com.google.gerrit.server.CommonConverters.toGitPerson;
 
+import static java.util.stream.Collectors.toList;
+
 import com.google.auto.value.AutoValue;
-import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Optional;
@@ -298,13 +299,8 @@
   public List<List<ChangeInfo>> formatQueryResults(
       List<QueryResult<ChangeData>> in) throws OrmException {
     accountLoader = accountLoaderFactory.create(has(DETAILED_ACCOUNTS));
-    ensureLoaded(FluentIterable.from(in).transformAndConcat(
-        new Function<QueryResult<ChangeData>, List<ChangeData>>() {
-          @Override
-          public List<ChangeData> apply(QueryResult<ChangeData> in) {
-            return in.entities();
-          }
-        }));
+    ensureLoaded(
+        FluentIterable.from(in).transformAndConcat(QueryResult::entities));
 
     List<List<ChangeInfo>> res = Lists.newArrayListWithCapacity(in.size());
     Map<Change.Id, ChangeInfo> out = new HashMap<>();
@@ -599,7 +595,7 @@
       ? labelsForOpenChange(ctl, cd, labelTypes, standard, detailed)
       : labelsForClosedChange(cd, labelTypes, standard, detailed);
     return ImmutableMap.copyOf(
-        Maps.transformValues(withStatus, LabelWithStatus.TO_LABEL_INFO));
+        Maps.transformValues(withStatus, LabelWithStatus::label));
   }
 
   private Map<String, LabelWithStatus> labelsForOpenChange(ChangeControl ctl,
@@ -952,14 +948,10 @@
 
   private Collection<AccountInfo> toAccountInfo(
       Collection<Account.Id> accounts) {
-    return FluentIterable.from(accounts)
-        .transform(new Function<Account.Id, AccountInfo>() {
-          @Override
-          public AccountInfo apply(Account.Id id) {
-            return accountLoader.get(id);
-          }
-        })
-        .toSortedList(AccountInfoComparator.ORDER_NULLS_FIRST);
+    return accounts.stream()
+        .map(accountLoader::get)
+        .sorted(AccountInfoComparator.ORDER_NULLS_FIRST)
+        .collect(toList());
   }
 
   @Nullable
@@ -1185,14 +1177,6 @@
 
   @AutoValue
   abstract static class LabelWithStatus {
-    private static final Function<LabelWithStatus, LabelInfo> TO_LABEL_INFO =
-        new Function<LabelWithStatus, LabelInfo>() {
-          @Override
-          public LabelInfo apply(LabelWithStatus in) {
-            return in.label();
-          }
-        };
-
     private static LabelWithStatus create(LabelInfo label,
         SubmitRecord.Label.Status status) {
       return new AutoValue_ChangeJson_LabelWithStatus(label, status);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CommentJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CommentJson.java
index d1ce453..2948fa6 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CommentJson.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CommentJson.java
@@ -16,7 +16,6 @@
 
 import static com.google.gerrit.server.PatchLineCommentsUtil.COMMENT_INFO_ORDER;
 
-import com.google.common.base.Function;
 import com.google.common.base.Strings;
 import com.google.common.collect.FluentIterable;
 import com.google.gerrit.extensions.client.Comment.Range;
@@ -100,17 +99,13 @@
 
   List<CommentInfo> formatAsList(Iterable<PatchLineComment> l)
       throws OrmException {
-    final AccountLoader accountLoader = fillAccounts
+    AccountLoader accountLoader = fillAccounts
         ? accountLoaderFactory.create(true)
         : null;
     List<CommentInfo> out = FluentIterable
         .from(l)
-        .transform(new Function<PatchLineComment, CommentInfo>() {
-          @Override
-          public CommentInfo apply(PatchLineComment c) {
-            return toCommentInfo(c, accountLoader);
-          }
-        }).toSortedList(COMMENT_INFO_ORDER);
+        .transform(c -> toCommentInfo(c, accountLoader))
+        .toSortedList(COMMENT_INFO_ORDER);
 
     if (accountLoader != null) {
       accountLoader.fill();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java
index 66ef731a..30ed82f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java
@@ -19,13 +19,10 @@
 import static com.google.gerrit.reviewdb.client.RefNames.REFS_CHANGES;
 import static com.google.gerrit.reviewdb.server.ReviewDbUtil.intKeyOrdering;
 import static com.google.gerrit.server.ChangeUtil.PS_ID_ORDER;
-import static com.google.gerrit.server.ChangeUtil.TO_PS_ID;
 
 import com.google.auto.value.AutoValue;
-import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.MultimapBuilder;
 import com.google.gerrit.common.FooterConstants;
@@ -255,13 +252,10 @@
 
     Map<String, Ref> refs;
     try {
-    refs = repo.getRefDatabase().exactRef(
-        Lists.transform(all, new Function<PatchSet, String>() {
-          @Override
-          public String apply(PatchSet ps) {
-            return ps.getId().toRefName();
-          }
-        }).toArray(new String[all.size()]));
+      refs = repo.getRefDatabase().exactRef(
+          all.stream()
+              .map(ps -> ps.getId().toRefName())
+              .toArray(String[]::new));
     } catch (IOException e) {
       error("error reading refs", e);
       refs = Collections.emptyMap();
@@ -319,7 +313,7 @@
       if (e.getValue().size() > 1) {
         problem(String.format("Multiple patch sets pointing to %s: %s",
             e.getKey().name(),
-            Collections2.transform(e.getValue(), TO_PS_ID)));
+            Collections2.transform(e.getValue(), PatchSet::getPatchSetId)));
       }
     }
 
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java
index 18b7023..1f78d54 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java
@@ -14,7 +14,6 @@
 
 package com.google.gerrit.server.change;
 
-import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.gerrit.common.TimeUtil;
@@ -210,7 +209,7 @@
     }
 
     private Iterable<PatchSetApproval> approvals(ChangeContext ctx,
-        final Account.Id accountId) throws OrmException {
+        Account.Id accountId) throws OrmException {
       Change.Id changeId = ctx.getNotes().getChangeId();
       Iterable<PatchSetApproval> approvals;
 
@@ -229,14 +228,7 @@
             approvalsUtil.byChange(ctx.getDb(), ctx.getNotes()).values();
       }
 
-      return Iterables.filter(
-          approvals,
-          new Predicate<PatchSetApproval>() {
-            @Override
-            public boolean apply(PatchSetApproval input) {
-              return accountId.equals(input.getAccountId());
-            }
-          });
+      return Iterables.filter(approvals, accountId::equals);
     }
 
     private String formatLabelValue(short value) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java
index be94d5d..b64b5a2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java
@@ -17,7 +17,6 @@
 import static com.google.gerrit.extensions.client.ReviewerState.CC;
 import static com.google.gerrit.extensions.client.ReviewerState.REVIEWER;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
@@ -357,13 +356,8 @@
         }
         emailReviewers(rsrc.getChange(), addedReviewers, addedCCs);
         if (!addedReviewers.isEmpty()) {
-          List<Account.Id> reviewers = Lists.transform(addedReviewers,
-              new Function<PatchSetApproval, Account.Id>() {
-                @Override
-                public Account.Id apply(PatchSetApproval psa) {
-                  return psa.getAccountId();
-                }
-              });
+          List<Account.Id> reviewers =
+              Lists.transform(addedReviewers, PatchSetApproval::getAccountId);
           reviewerAdded.fire(rsrc.getChange(), patchSet, reviewers,
               ctx.getAccount(), ctx.getWhen());
         }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
index 8fe778b..b8443be 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
@@ -14,15 +14,13 @@
 
 package com.google.gerrit.server.change;
 
+import static java.util.stream.Collectors.joining;
+
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
 import com.google.common.base.MoreObjects;
-import com.google.common.base.Predicate;
 import com.google.common.base.Strings;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Sets;
 import com.google.gerrit.common.data.ParameterizedString;
@@ -282,14 +280,10 @@
             return CHANGE_UNMERGEABLE;
           }
         }
-        return CHANGES_NOT_MERGEABLE + Joiner.on(", ").join(
-            Iterables.transform(unmergeable,
-                new Function<ChangeData, String>() {
-              @Override
-              public String apply(ChangeData cd) {
-                return String.valueOf(cd.getId().get());
-              }
-            }));
+        return CHANGES_NOT_MERGEABLE +
+            unmergeable.stream()
+                .map(c -> c.getId().toString())
+                .collect(joining(", "));
       }
     } catch (ResourceConflictException e) {
       return BLOCKED_SUBMIT_TOOLTIP;
@@ -405,14 +399,10 @@
    */
   public ChangeMessage getConflictMessage(RevisionResource rsrc)
       throws OrmException {
-    return FluentIterable.from(cmUtil.byPatchSet(dbProvider.get(), rsrc.getNotes(),
-        rsrc.getPatchSet().getId()))
-        .filter(new Predicate<ChangeMessage>() {
-          @Override
-          public boolean apply(ChangeMessage input) {
-            return input.getAuthor() == null;
-          }
-        })
+    return FluentIterable.from(
+            cmUtil.byPatchSet(
+                dbProvider.get(), rsrc.getNotes(), rsrc.getPatchSet().getId()))
+        .filter(cm -> cm.getAuthor() == null)
         .last()
         .orNull();
   }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/WalkSorter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/WalkSorter.java
index d31805d..e0959f5 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/WalkSorter.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/WalkSorter.java
@@ -18,7 +18,6 @@
 
 import com.google.auto.value.AutoValue;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
@@ -72,21 +71,17 @@
       LoggerFactory.getLogger(WalkSorter.class);
 
   private static final Ordering<List<PatchSetData>> PROJECT_LIST_SORTER =
-      Ordering.natural().nullsFirst()
-          .onResultOf(
-            new Function<List<PatchSetData>, Project.NameKey>() {
-              @Override
-              public Project.NameKey apply(List<PatchSetData> in) {
-                if (in == null || in.isEmpty()) {
-                  return null;
-                }
-                try {
-                  return in.get(0).data().change().getProject();
-                } catch (OrmException e) {
-                  throw new IllegalStateException(e);
-                }
-              }
-            });
+      Ordering.natural().nullsFirst().onResultOf(
+          (List<PatchSetData> in) -> {
+            if (in == null || in.isEmpty()) {
+              return null;
+            }
+            try {
+              return in.get(0).data().change().getProject();
+            } catch (OrmException e) {
+              throw new IllegalStateException(e);
+            }
+          });
 
   private final GitRepositoryManager repoManager;
   private final Set<PatchSet.Id> includePatchSets;