Convert Function/Predicate in acceptance tests to streams/lambdas

This saves a lot of boilerplate as we heavily use Truth to do
  assertThat(someReadableIterable).containsExactly(expectedReadble)
in order to get nice exception messages. Constructing these iterables
frequently requires transforming some input to get a readable type
like a String for messages.

These still pretty much all use Iterables#transform rather than
collecting to a list, as it's definitely shorter. (If Truth had a
StreamSubject we might use that, but thus far it doesn't.)

Change-Id: Ice4f07f1e88bddcd12e904b15546bfd970f0c071
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
index ec77484..01009aa 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
@@ -31,7 +31,6 @@
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.junit.Assert.fail;
 
-import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -753,13 +752,7 @@
     Map<String, GpgKeyInfo> keyMap = gApi.accounts().self().listGpgKeys();
     assertThat(keyMap.keySet())
         .named("keys returned by listGpgKeys()")
-        .containsExactlyElementsIn(
-          expected.transform(new Function<TestKey, String>() {
-            @Override
-            public String apply(TestKey in) {
-              return in.getKeyIdString();
-            }
-          }));
+        .containsExactlyElementsIn(expected.transform(TestKey::getKeyIdString));
 
     for (TestKey key : expected) {
       assertKeyEquals(key, gApi.accounts().self().gpgKey(
@@ -771,23 +764,13 @@
 
     // Check raw external IDs.
     Account.Id currAccountId = atrScope.get().getUser().getAccountId();
-    assertThat(
-        GpgKeys.getGpgExtIds(db, currAccountId)
-          .transform(new Function<AccountExternalId, String>() {
-            @Override
-            public String apply(AccountExternalId in) {
-              return in.getSchemeRest();
-            }
-          }))
+    Iterable<String> expectedFps = expected.transform(
+        k -> BaseEncoding.base16().encode(k.getPublicKey().getFingerprint()));
+    Iterable<String> actualFps = GpgKeys.getGpgExtIds(db, currAccountId)
+        .transform(AccountExternalId::getSchemeRest);
+    assertThat(actualFps)
         .named("external IDs in database")
-        .containsExactlyElementsIn(
-            expected.transform(new Function<TestKey, String>() {
-              @Override
-              public String apply(TestKey in) {
-                return BaseEncoding.base16().encode(
-                    in.getPublicKey().getFingerprint());
-              }
-            }));
+        .containsExactlyElementsIn(expectedFps);
 
     // Check raw stored keys.
     for (TestKey key : expected) {
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java
index 520c7db..312a93c 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java
@@ -30,7 +30,6 @@
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.junit.Assert.fail;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
@@ -1940,12 +1939,7 @@
 
   private static Iterable<Account.Id> getReviewers(
       Collection<AccountInfo> r) {
-    return Iterables.transform(r, new Function<AccountInfo, Account.Id>() {
-      @Override
-      public Account.Id apply(AccountInfo account) {
-        return new Account.Id(account._accountId);
-      }
-    });
+    return Iterables.transform(r, a -> new Account.Id(a._accountId));
   }
 
   private ChangeResource parseResource(PushOneCommit.Result r)
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java
index 3f8c1bc..78c0cda 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java
@@ -18,14 +18,12 @@
 import static com.google.gerrit.acceptance.api.group.GroupAssert.assertGroupInfo;
 import static com.google.gerrit.acceptance.rest.account.AccountAssert.assertAccountInfos;
 
-import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Ordering;
 import com.google.gerrit.acceptance.AbstractDaemonTest;
 import com.google.gerrit.acceptance.NoHttpd;
 import com.google.gerrit.acceptance.TestAccount;
-import com.google.gerrit.common.Nullable;
 import com.google.gerrit.extensions.api.groups.GroupApi;
 import com.google.gerrit.extensions.api.groups.GroupInput;
 import com.google.gerrit.extensions.common.AccountInfo;
@@ -401,12 +399,8 @@
   public void testListAllGroups() throws Exception {
     List<String> expectedGroups = FluentIterable
           .from(groupCache.all())
-          .transform(new Function<AccountGroup, String>() {
-            @Override
-            public String apply(AccountGroup group) {
-              return group.getName();
-            }
-          }).toSortedList(Ordering.natural());
+          .transform(AccountGroup::getName)
+          .toSortedList(Ordering.natural());
     assertThat(expectedGroups.size()).isAtLeast(2);
     assertThat(gApi.groups().list().getAsMap().keySet())
         .containsExactlyElementsIn(expectedGroups).inOrder();
@@ -518,14 +512,7 @@
 
   private void assertMembers(Iterable<AccountInfo> members,
       String... expectedNames) {
-    Iterable<String> memberNames = Iterables.transform(members,
-        new Function<AccountInfo, String>() {
-          @Override
-          public String apply(@Nullable AccountInfo info) {
-            return info.name;
-          }
-        });
-    assertThat(memberNames)
+    assertThat(Iterables.transform(members, i -> i.name))
         .containsExactlyElementsIn(Arrays.asList(expectedNames)).inOrder();
   }
 
@@ -540,15 +527,7 @@
 
   private static void assertIncludes(
       Iterable<GroupInfo> includes, String... expectedNames) {
-    Iterable<String> includeNames = Iterables.transform(
-        includes,
-        new Function<GroupInfo, String>() {
-          @Override
-          public String apply(@Nullable GroupInfo info) {
-            return info.name;
-          }
-        });
-    assertThat(includeNames)
+    assertThat(Iterables.transform(includes, i -> i.name))
         .containsExactlyElementsIn(Arrays.asList(expectedNames)).inOrder();
   }
 
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java
index de0c3c1..545be3e 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java
@@ -27,7 +27,6 @@
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.gerrit.acceptance.AbstractDaemonTest;
 import com.google.gerrit.acceptance.PushOneCommit;
@@ -522,12 +521,10 @@
         .revision(r.getCommit().name())
         .files();
     assertThat(files).hasSize(2);
-    assertThat(Iterables.all(files.keySet(), new Predicate<String>() {
-      @Override
-      public boolean apply(String file) {
-        return file.matches(FILE_NAME + '|' + COMMIT_MSG);
-      }
-    })).isTrue();
+    assertThat(
+            Iterables.all(
+                files.keySet(), f -> f.matches(FILE_NAME + '|' + COMMIT_MSG)))
+        .isTrue();
   }
 
   @Test
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/AccountAssert.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/AccountAssert.java
index 91ee332..787902e 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/AccountAssert.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/AccountAssert.java
@@ -16,7 +16,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
 import com.google.gerrit.acceptance.TestAccount;
 import com.google.gerrit.extensions.common.AccountInfo;
@@ -36,13 +35,7 @@
       List<AccountInfo> actual) {
     Iterable<Account.Id> expectedIds = TestAccount.ids(expected);
     Iterable<Account.Id> actualIds = Iterables.transform(
-        actual,
-        new Function<AccountInfo, Account.Id>() {
-          @Override
-          public Account.Id apply(AccountInfo in) {
-            return new Account.Id(in._accountId);
-          }
-        });
+        actual, a -> new Account.Id(a._accountId));
     assertThat(actualIds).containsExactlyElementsIn(expectedIds).inOrder();
     for (int i = 0; i < expected.size(); i++) {
       AccountAssert.assertAccountInfo(expected.get(i), actual.get(i));
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/CapabilitiesIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/CapabilitiesIT.java
index ce82270..116a3ac 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/CapabilitiesIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/CapabilitiesIT.java
@@ -26,7 +26,6 @@
 import static com.google.gerrit.common.data.GlobalCapability.RUN_AS;
 import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
 
-import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.gerrit.acceptance.AbstractDaemonTest;
 import com.google.gerrit.acceptance.RestResponse;
@@ -40,13 +39,9 @@
 
   @Test
   public void testCapabilitiesUser() throws Exception {
-    Iterable<String> all = Iterables.filter(GlobalCapability.getAllNames(),
-        new Predicate<String>() {
-          @Override
-          public boolean apply(String in) {
-            return !ADMINISTRATE_SERVER.equals(in) && !PRIORITY.equals(in);
-          }
-        });
+    Iterable<String> all = Iterables.filter(
+        GlobalCapability.getAllNames(),
+        c -> !ADMINISTRATE_SERVER.equals(c) && !PRIORITY.equals(c));
 
     allowGlobalCapabilities(REGISTERED_USERS, all);
     try {
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
index a8e33ba..d73447e 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
@@ -25,7 +25,6 @@
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.junit.Assert.fail;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.gerrit.acceptance.AbstractDaemonTest;
@@ -40,7 +39,6 @@
 import com.google.gerrit.extensions.client.ListChangesOption;
 import com.google.gerrit.extensions.client.SubmitType;
 import com.google.gerrit.extensions.common.ChangeInfo;
-import com.google.gerrit.extensions.common.ChangeMessageInfo;
 import com.google.gerrit.extensions.common.LabelInfo;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.BinaryResult;
@@ -403,13 +401,8 @@
   private void assertSubmitter(PushOneCommit.Result change) throws Exception {
     ChangeInfo info = get(change.getChangeId(), ListChangesOption.MESSAGES);
     assertThat(info.messages).isNotNull();
-    Iterable<String> messages = Iterables.transform(info.messages,
-        new Function<ChangeMessageInfo, String>() {
-          @Override
-          public String apply(ChangeMessageInfo in) {
-            return in.message;
-          }
-        });
+    Iterable<String> messages =
+        Iterables.transform(info.messages, i -> i.message);
     assertThat(messages).hasSize(3);
     String last = Iterables.getLast(messages);
     if (getSubmitType() == SubmitType.CHERRY_PICK) {
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java
index e4f56f8..0f251f5 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java
@@ -16,8 +16,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.base.Function;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Iterables;
 import com.google.gerrit.acceptance.AbstractDaemonTest;
 import com.google.gerrit.acceptance.GerritConfig;
@@ -287,13 +285,9 @@
 
   private TestAccount user(String name, String fullName, String emailName,
       AccountGroup... groups) throws Exception {
-    String[] groupNames = FluentIterable.from(Arrays.asList(groups))
-        .transform(new Function<AccountGroup, String>() {
-          @Override
-          public String apply(AccountGroup in) {
-            return in.getName();
-          }
-        }).toArray(String.class);
+    String[] groupNames = Arrays.stream(groups)
+        .map(AccountGroup::getName)
+        .toArray(String[]::new);
     return accounts.create(name(name), name(emailName) + "@example.com",
         fullName, groupNames);
   }
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BranchAssert.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BranchAssert.java
index c860bf0..522836d 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BranchAssert.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BranchAssert.java
@@ -16,7 +16,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
 import com.google.gerrit.extensions.api.projects.BranchInfo;
 
@@ -48,12 +47,7 @@
   }
 
   private static Iterable<String> refs(Iterable<BranchInfo> infos) {
-    return Iterables.transform(infos, new Function<BranchInfo, String>() {
-      @Override
-      public String apply(BranchInfo in) {
-        return in.ref;
-      }
-    });
+    return Iterables.transform(infos, b -> b.ref);
   }
 
   private static boolean toBoolean(Boolean b) {
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java
index e86bb29..496e7fd 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java
@@ -19,7 +19,6 @@
 import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
 import static org.junit.Assert.fail;
 
-import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.gerrit.acceptance.AbstractDaemonTest;
 import com.google.gerrit.acceptance.NoHttpd;
@@ -208,15 +207,14 @@
   }
 
   private Iterable<ProjectInfo> filter(Iterable<ProjectInfo> infos) {
-    final String prefix = name("");
-    return Iterables.filter(infos, new Predicate<ProjectInfo>() {
-      @Override
-      public boolean apply(ProjectInfo in) {
-        return in.name != null && (
-            in.name.equals(allProjects.get())
-            || in.name.equals(allUsers.get())
-            || in.name.startsWith(prefix));
-      }
-    });
+    String prefix = name("");
+    return Iterables.filter(
+        infos,
+        p -> {
+          return p.name != null && (
+              p.name.equals(allProjects.get())
+              || p.name.equals(allUsers.get())
+              || p.name.startsWith(prefix));
+        });
   }
 }
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ProjectAssert.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ProjectAssert.java
index db6df95..e081ce5 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ProjectAssert.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ProjectAssert.java
@@ -17,7 +17,6 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.base.Function;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
@@ -45,13 +44,8 @@
           .that(Url.decode(info.id))
           .isEqualTo(info.name);
     }
-    return assertThat(Iterables.transform(actual,
-        new Function<ProjectInfo, Project.NameKey>() {
-          @Override
-          public Project.NameKey apply(ProjectInfo in) {
-            return new Project.NameKey(in.name);
-          }
-        }));
+    return assertThat(
+        Iterables.transform(actual, p -> new Project.NameKey(p.name)));
   }
 
   public static void assertProjectInfo(Project project, ProjectInfo info) {
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java
index 5b6f3f9..77cb11b 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java
@@ -54,6 +54,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Supplier;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -722,29 +723,21 @@
     return c;
   }
 
-  private static Function<CommentInfo, CommentInput> infoToInput(
-      final String path) {
-    return new Function<CommentInfo, CommentInput>() {
-      @Override
-      public CommentInput apply(CommentInfo info) {
-        CommentInput ci = new CommentInput();
-        ci.path = path;
-        copy(info, ci);
-        return ci;
-      }
-    };
+  private static Function<CommentInfo, CommentInput> infoToInput(String path) {
+    return infoToInput(path, CommentInput::new);
   }
 
-  private static Function<CommentInfo, DraftInput> infoToDraft(
-      final String path) {
-    return new Function<CommentInfo, DraftInput>() {
-      @Override
-      public DraftInput apply(CommentInfo info) {
-        DraftInput di = new DraftInput();
-        di.path = path;
-        copy(info, di);
-        return di;
-      }
+  private static Function<CommentInfo, DraftInput> infoToDraft(String path) {
+    return infoToInput(path, DraftInput::new);
+  }
+
+  private static <I extends Comment> Function<CommentInfo, I> infoToInput(
+      String path, Supplier<I> supplier) {
+    return info -> {
+      I i = supplier.get();
+      i.path = path;
+      copy(info, i);
+      return i;
     };
   }
 
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/ChangeRebuilderIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/ChangeRebuilderIT.java
index 8606ce7..ced0141 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/ChangeRebuilderIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/ChangeRebuilderIT.java
@@ -22,7 +22,6 @@
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 import static org.junit.Assert.fail;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
@@ -448,12 +447,7 @@
     assertThat(
             Iterables.transform(
                 notes.getChangeMessages(),
-                new Function<ChangeMessage, String>() {
-                  @Override
-                  public String apply(ChangeMessage in) {
-                    return in.getMessage();
-                  }
-                }))
+                ChangeMessage::getMessage))
         .contains(msg);
   }