Merge branch 'stable-2.16' into stable-3.0

* stable-2.16:
  Upgrade bazlets to build with 2.16.7 API

Change-Id: I218f0ea9084c7cab7ad79ff6004e92ac91783cdc
diff --git a/WORKSPACE b/WORKSPACE
index c001cbe..4825cd4 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "c827ba79413585ab9dfc1bbd0d7f609eedd6aa80",
+    commit = "51049da0140c58ee26f8285bca4393c5e43ce4a1",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
index faebf4b..90208ce 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
@@ -17,15 +17,14 @@
 import static com.google.gerrit.server.permissions.ChangePermission.READ;
 
 import com.google.gerrit.common.data.SubmitRecord;
+import com.google.gerrit.exceptions.StorageException;
 import com.google.gerrit.extensions.api.changes.RelatedChangeAndCommitInfo;
 import com.google.gerrit.extensions.api.changes.RelatedChangesInfo;
 import com.google.gerrit.extensions.api.changes.SubmitInput;
 import com.google.gerrit.extensions.client.ChangeStatus;
 import com.google.gerrit.extensions.restapi.AuthException;
-import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.server.ReviewDb;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.account.Emails;
 import com.google.gerrit.server.change.ChangeResource;
@@ -40,9 +39,7 @@
 import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gerrit.server.restapi.change.GetRelated;
 import com.google.gerrit.server.restapi.change.Submit;
-import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
-import com.google.inject.Provider;
 import java.io.IOException;
 import java.util.List;
 import java.util.Set;
@@ -57,8 +54,6 @@
 
   @Inject AutomergeConfig config;
 
-  @Inject Provider<ReviewDb> db;
-
   @Inject private IdentifiedUser.GenericFactory factory;
 
   @Inject GetRelated getRelated;
@@ -84,12 +79,11 @@
    * @throws IOException
    * @throws NoSuchChangeException
    * @throws NoSuchProjectException
-   * @throws OrmException
    * @throws PermissionBackendException
    */
   public boolean hasDependentReview(String project, int number)
-      throws RestApiException, IOException, NoSuchChangeException, NoSuchProjectException,
-          OrmException, PermissionBackendException {
+      throws IOException, NoSuchChangeException, NoSuchProjectException,
+          PermissionBackendException {
     RevisionResource r = getRevisionResource(project, number);
     RelatedChangesInfo related = getRelated.apply(r);
     log.debug(String.format("Checking for related changes on review %d", number));
@@ -144,14 +138,11 @@
    * @param project a change project
    * @param change a change number
    * @return true or false
-   * @throws OrmException
    */
-  public boolean isSubmittable(String project, int change) throws OrmException {
+  public boolean isSubmittable(String project, int change) {
     ChangeData changeData =
         changeDataFactory.create(
-            db.get(),
-            new Project.NameKey(project),
-            new com.google.gerrit.reviewdb.client.Change.Id(change));
+            new Project.NameKey(project), new com.google.gerrit.reviewdb.client.Change.Id(change));
     // For draft reviews, the patchSet must be set to avoid an NPE.
     final List<SubmitRecord> cansubmit =
         submitRuleEvaluatorFactory.create(SubmitRuleOptions.defaults()).evaluate(changeData);
@@ -171,15 +162,13 @@
     submitter.apply(getRevisionResource(project, number), new SubmitInput());
   }
 
-  public RevisionResource getRevisionResource(String project, int changeNumber)
-      throws RestApiException, OrmException, IOException {
+  public RevisionResource getRevisionResource(String project, int changeNumber) {
     com.google.gerrit.reviewdb.client.Change.Id changeId =
         new com.google.gerrit.reviewdb.client.Change.Id(changeNumber);
     ChangeNotes notes = changeNotesFactory.createChecked(changeId);
     try {
-      permissionBackend.user(getBotUser()).change(notes).database(db).check(READ);
-      ChangeData changeData =
-          changeDataFactory.create(db.get(), new Project.NameKey(project), changeId);
+      permissionBackend.user(getBotUser()).change(notes).check(READ);
+      ChangeData changeData = changeDataFactory.create(new Project.NameKey(project), changeId);
 
       RevisionResource r =
           new RevisionResource(
@@ -198,7 +187,7 @@
         throw new RuntimeException("No user found with email: " + config.getBotEmail());
       }
       return factory.create(ids.iterator().next());
-    } catch (IOException | OrmException e) {
+    } catch (IOException | StorageException e) {
       throw new RuntimeException("Unable to get account with email: " + config.getBotEmail(), e);
     }
   }
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
index b1e3c71..61ee2b5 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -22,7 +22,6 @@
 import com.google.gerrit.extensions.common.ChangeInfo;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.server.ReviewDb;
 import com.google.gerrit.server.data.AccountAttribute;
 import com.google.gerrit.server.data.ChangeAttribute;
 import com.google.gerrit.server.events.ChangeEvent;
@@ -58,8 +57,6 @@
 
   @Inject private AutomergeConfig config;
 
-  @Inject Provider<ReviewDb> db;
-
   @Inject GetRelated getRelated;
 
   @Inject MergeUtil.Factory mergeUtilFactory;
diff --git a/src/test/java/com/criteo/gerrit/plugins/automerge/AutomaticMergerTest.java b/src/test/java/com/criteo/gerrit/plugins/automerge/AutomaticMergerTest.java
index 971659e..ed84b29 100644
--- a/src/test/java/com/criteo/gerrit/plugins/automerge/AutomaticMergerTest.java
+++ b/src/test/java/com/criteo/gerrit/plugins/automerge/AutomaticMergerTest.java
@@ -22,6 +22,7 @@
 import com.google.gerrit.acceptance.PushOneCommit;
 import com.google.gerrit.acceptance.TestAccount;
 import com.google.gerrit.acceptance.TestPlugin;
+import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
 import com.google.gerrit.extensions.api.changes.ChangeApi;
 import com.google.gerrit.extensions.api.changes.Changes;
 import com.google.gerrit.extensions.api.changes.ReviewInput;
@@ -30,8 +31,6 @@
 import com.google.gerrit.reviewdb.client.AccountGroup;
 import com.google.gerrit.server.account.externalids.ExternalIds;
 import com.google.inject.Inject;
-import java.util.Arrays;
-import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -45,6 +44,7 @@
   private TestAccount botUser;
   private TestAccount regularUser;
   @Inject ExternalIds extIds;
+  @Inject RequestScopeOperations requestScopeOperations;
 
   @Before
   public void setup() throws Exception {
@@ -60,31 +60,32 @@
   @Test
   @GerritConfig(name = "automerge.botEmail", value = "botuser@mycompany.com")
   public void changeReviewedShouldNotBeAutomaticallyMergedIfNotApproved() throws Exception {
-    int changeNum = createChangeNum(user);
+    String changeId = createChange(user);
 
-    assertThat(changesApi().id(changeNum).get().status).isEqualTo(ChangeStatus.NEW);
+    assertThat(changesApi().id(changeId).get().status).isEqualTo(ChangeStatus.NEW);
   }
 
   @Test
   @GerritConfig(name = "automerge.botEmail", value = "botuser@mycompany.com")
   public void changeReviewedShouldBeAutomaticallyMergedOnceApproved() throws Exception {
-    int changeNum = createChangeNum(user);
-    changesApi().id(changeNum).current().review(ReviewInput.approve());
+    String changeId = createChange(user);
+    changesApi().id(changeId).current().review(ReviewInput.approve());
 
-    assertThat(changesApi().id(changeNum).get().status).isEqualTo(ChangeStatus.MERGED);
+    assertThat(changesApi().id(changeId).get().status).isEqualTo(ChangeStatus.MERGED);
   }
 
   @Test
   @GerritConfig(name = "automerge.botEmail", value = "botuser@mycompany.com")
   public void changeShouldBeAutomaticallyMergedByBotUser() throws Exception {
-    int changeNum = createChangeNum(user);
-    ChangeApi changeApi = changesApi().id(changeNum);
+    requestScopeOperations.setApiUser(regularUser.id());
+    String changeId = createChange(user);
+    ChangeApi changeApi = changesApi().id(changeId);
     changeApi.current().review(ReviewInput.approve());
 
-    ChangeInfo changeInfo = changeApi.get();
+    ChangeInfo changeInfo = gApi.changes().id(changeId).get();
     assertThat(changeInfo.submitter).isNotNull();
-    assertThat(changeInfo.submitter._accountId).isEqualTo(new Integer(botUser.id.get()));
-    assertThat(changeInfo.submitter.email).isEqualTo(botUser.email);
+    assertThat(changeInfo.submitter._accountId).isEqualTo(new Integer(botUser.id().get()));
+    assertThat(changeInfo.submitter.email).isEqualTo(botUser.email());
   }
 
   private AccountGroup.UUID groupUUID(String name) {
@@ -92,19 +93,15 @@
   }
 
   private Changes changesApi() {
-    setApiUser(regularUser);
     return gApi.changes();
   }
 
-  private int createChangeNum(TestAccount user) throws Exception {
-    List<String> msgs =
-        Arrays.asList(createChangeAsUser("refs/for/master", user).getMessage().split("\n"));
-    String changeUrl = msgs.get(msgs.size() - 1).trim().split(" ")[0];
-    return Integer.parseInt(changeUrl.substring(changeUrl.lastIndexOf('/') + 1));
+  private String createChange(TestAccount user) throws Exception {
+    return createChangeAsUser("refs/for/master", user).getChangeId();
   }
 
   protected PushOneCommit.Result createChangeAsUser(String ref, TestAccount user) throws Exception {
-    PushOneCommit.Result result = pushFactory.create(db, user.getIdent(), testRepo).to(ref);
+    PushOneCommit.Result result = pushFactory.create(user.newIdent(), testRepo).to(ref);
     result.assertOkStatus();
     return result;
   }
diff --git a/src/test/java/com/criteo/gerrit/plugins/automerge/AutomergeConfigTest.java b/src/test/java/com/criteo/gerrit/plugins/automerge/AutomergeConfigTest.java
index 548ee49..a33f534 100644
--- a/src/test/java/com/criteo/gerrit/plugins/automerge/AutomergeConfigTest.java
+++ b/src/test/java/com/criteo/gerrit/plugins/automerge/AutomergeConfigTest.java
@@ -15,10 +15,8 @@
 package com.criteo.gerrit.plugins.automerge;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 
 import com.google.gerrit.server.config.SitePaths;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.nio.file.Paths;
 import org.eclipse.jgit.lib.Config;
@@ -29,37 +27,29 @@
   @Test
   public void testGetDefaultConfig() throws IOException {
     final Config conf = new Config();
-    try {
-      final SitePaths paths = new SitePaths(Paths.get("."));
+    final SitePaths paths = new SitePaths(Paths.get("."));
 
-      final AutomergeConfig amconf = new AutomergeConfig(conf, paths);
+    final AutomergeConfig amconf = new AutomergeConfig(conf, paths);
 
-      assertEquals(amconf.getBotEmail(), AutomergeConfig.getDefaultBotEmail());
-      assertEquals(amconf.getTopicPrefix(), AutomergeConfig.getDefaultTopicPrefix());
-    } catch (final FileNotFoundException e) {
-      fail();
-    }
+    assertEquals(amconf.getBotEmail(), AutomergeConfig.getDefaultBotEmail());
+    assertEquals(amconf.getTopicPrefix(), AutomergeConfig.getDefaultTopicPrefix());
   }
 
   @Test
   public void testGetValues() throws IOException {
     final Config conf = new Config();
-    try {
-      final SitePaths paths = new SitePaths(Paths.get("."));
+    final SitePaths paths = new SitePaths(Paths.get("."));
 
-      conf.setString(
-          AutomergeConfig.AUTOMERGE_SECTION, null, AutomergeConfig.BOT_EMAIL_KEY, "Foo@bar.com");
-      conf.setString(
-          AutomergeConfig.AUTOMERGE_SECTION,
-          null,
-          AutomergeConfig.TOPIC_PREFIX_KEY,
-          "fake_topic_prefix");
+    conf.setString(
+        AutomergeConfig.AUTOMERGE_SECTION, null, AutomergeConfig.BOT_EMAIL_KEY, "Foo@bar.com");
+    conf.setString(
+        AutomergeConfig.AUTOMERGE_SECTION,
+        null,
+        AutomergeConfig.TOPIC_PREFIX_KEY,
+        "fake_topic_prefix");
 
-      final AutomergeConfig amconf = new AutomergeConfig(conf, paths);
-      assertEquals(amconf.getBotEmail(), "Foo@bar.com");
-      assertEquals(amconf.getTopicPrefix(), "fake_topic_prefix");
-    } catch (final FileNotFoundException e) {
-      fail();
-    }
+    final AutomergeConfig amconf = new AutomergeConfig(conf, paths);
+    assertEquals(amconf.getBotEmail(), "Foo@bar.com");
+    assertEquals(amconf.getTopicPrefix(), "fake_topic_prefix");
   }
 }
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl
index d5764f7..c921d01 100644
--- a/tools/bzl/classpath.bzl
+++ b/tools/bzl/classpath.bzl
@@ -1,4 +1,6 @@
 load(
     "@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
-    "classpath_collector",
+    _classpath_collector = "classpath_collector",
 )
+
+classpath_collector = _classpath_collector
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
index 3af7e58..97307bd 100644
--- a/tools/bzl/junit.bzl
+++ b/tools/bzl/junit.bzl
@@ -1,4 +1,6 @@
 load(
     "@com_googlesource_gerrit_bazlets//tools:junit.bzl",
-    "junit_tests",
+    _junit_tests = "junit_tests",
 )
+
+junit_tests = _junit_tests
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
index 0b25d23..4d2dbdd 100644
--- a/tools/bzl/plugin.bzl
+++ b/tools/bzl/plugin.bzl
@@ -1,6 +1,10 @@
 load(
     "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
-    "PLUGIN_DEPS",
-    "PLUGIN_TEST_DEPS",
-    "gerrit_plugin",
+    _gerrit_plugin = "gerrit_plugin",
+    _plugin_deps = "PLUGIN_DEPS",
+    _plugin_test_deps = "PLUGIN_TEST_DEPS",
 )
+
+gerrit_plugin = _gerrit_plugin
+PLUGIN_DEPS = _plugin_deps
+PLUGIN_TEST_DEPS = _plugin_test_deps