Merge branch 'stable-3.0'

* stable-3.0:
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Upgrade bazlets to latest stable-3.0 to build with 3.0.2 API
  Upgrade bazlets to latest stable-2.16 to build with 2.16.11.1 API
  Upgrade bazlets to latest stable-2.15 to build with 2.15.16 API
  Upgrade bazlets to latest stable-2.15 to build with 2.15.15 API

Change-Id: I23e620dbd97f7f1fce66d56572b6b9783c40b769
diff --git a/WORKSPACE b/WORKSPACE
index 712907c..b49d96d 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,27 +3,27 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "631205bc4f7903d3cf656a844cab2bfd6b03f246",
+    commit = "1ddb1d6c71b77972a89aa0a717f6250ef256d166",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
 # Snapshot Plugin API
-#load(
-#    "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
-#    "gerrit_api_maven_local",
-#)
-
-# Load snapshot Plugin API
-#gerrit_api_maven_local()
-
-# Release Plugin API
 load(
-    "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
-    "gerrit_api",
+    "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
+    "gerrit_api_maven_local",
 )
 
+# Load snapshot Plugin API
+gerrit_api_maven_local()
+
+# Release Plugin API
+#load(
+#    "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
+#    "gerrit_api",
+#)
+
 # Load release Plugin API
-gerrit_api()
+#gerrit_api()
 
 load("//:external_plugin_deps.bzl", "external_plugin_deps")
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
index db1e862..27c8b0f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
@@ -66,7 +66,7 @@
       input.name = newProjectName;
       ProjectResource rsrc =
           new ProjectResource(
-              projectCacheProvider.get().get(new Project.NameKey(projectControl)), self.get());
+              projectCacheProvider.get().get(Project.nameKey(projectControl)), self.get());
       try (CommandProgressMonitor monitor = new CommandProgressMonitor(stdout)) {
         renameProject.assertCanRename(rsrc, input, monitor);
         List<Change.Id> changeIds = renameProject.getChanges(rsrc, monitor);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
index 4d4f671..0de57ff 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
@@ -138,7 +138,7 @@
       pm.beginTask("Checking preconditions");
       assertNewNameNotNull(input);
       assertRenamePermission(rsrc);
-      renamePreconditions.assertCanRename(rsrc, new Project.NameKey(input.name));
+      renamePreconditions.assertCanRename(rsrc, Project.nameKey(input.name));
       log.debug("Rename preconditions check successful.");
     } catch (CannotRenameProjectException e) {
       throw new ResourceConflictException(e.getMessage());
@@ -148,15 +148,14 @@
   void doRename(List<Change.Id> changeIds, ProjectResource rsrc, Input input, ProgressMonitor pm)
       throws InterruptedException, ConfigInvalidException, IOException {
     Project.NameKey oldProjectKey = rsrc.getNameKey();
-    Project.NameKey newProjectKey = new Project.NameKey(input.name);
+    Project.NameKey newProjectKey = Project.nameKey(input.name);
     Exception ex = null;
     try {
       fsHandler.rename(oldProjectKey, newProjectKey, pm);
       log.debug("Renamed the git repo to {} successfully.", newProjectKey.get());
       cacheHandler.update(rsrc.getProjectState().getProject(), newProjectKey);
 
-      List<Change.Id> updatedChangeIds =
-          dbHandler.rename(changeIds, newProjectKey, pm);
+      List<Change.Id> updatedChangeIds = dbHandler.rename(changeIds, newProjectKey, pm);
       log.debug("Updated the changes in DB successfully for project {}.", oldProjectKey.get());
 
       // if the DB update is successful, update the secondary index
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
index 3e30f6e..70b398f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
@@ -15,8 +15,9 @@
 package com.googlesource.gerrit.plugins.renameproject.conditions;
 
 import com.google.gerrit.extensions.common.ProjectInfo;
+import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Branch;
+import com.google.gerrit.reviewdb.client.BranchNameKey;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.RefNames;
 import com.google.gerrit.server.config.AllProjectsName;
@@ -91,11 +92,12 @@
 
   private void assertHasNoChildProjects(ProjectResource rsrc) throws CannotRenameProjectException {
     try {
-      List<ProjectInfo> children = listChildProjectsProvider.get().apply(rsrc);
-      if (!children.isEmpty()) {
+      Response<List<ProjectInfo>> children = listChildProjectsProvider.get().apply(rsrc);
+      if (!children.value().isEmpty()) {
         String childrenString =
             String.join(
-                ", ", children.stream().map(info -> info.name).collect(Collectors.toList()));
+                ", ",
+                children.value().stream().map(info -> info.name).collect(Collectors.toList()));
         String message =
             String.format("Cannot rename project because it has children: %s", childrenString);
         log.error(message);
@@ -109,12 +111,12 @@
   private void assertIsNotSubscribed(Project.NameKey key) throws CannotRenameProjectException {
     try (Repository repo = repoManager.openRepository(key);
         MergeOpRepoManager orm = ormProvider.get()) {
-      Set<Branch.NameKey> branches = new HashSet<>();
+      Set<BranchNameKey> branches = new HashSet<>();
       for (Ref ref : repo.getRefDatabase().getRefs(RefNames.REFS_HEADS).values()) {
-        branches.add(new Branch.NameKey(key, ref.getName()));
+        branches.add(BranchNameKey.create(key, ref.getName()));
       }
       SubmoduleOp sub = subOpFactory.create(branches, orm);
-      for (Branch.NameKey b : branches) {
+      for (BranchNameKey b : branches) {
         if (!sub.superProjectSubscriptionsForSubmoduleBranch(b).isEmpty()) {
           String message = "Cannot rename a project subscribed to by the other projects";
           log.error(message);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
index 62e517e..ff8a6f5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
@@ -158,7 +158,7 @@
 
   private void updateWatchEntries(Project.NameKey newProjectKey) {
     for (AccountState a : accountQueryProvider.get().byWatchedProject(newProjectKey)) {
-      Account.Id accountId = a.getAccount().getId();
+      Account.Id accountId = a.getAccount().id();
       ImmutableMap<ProjectWatchKey, ImmutableSet<NotifyType>> projectWatches =
           a.getProjectWatches();
       Map<ProjectWatchKey, Set<NotifyType>> newProjectWatches = new HashMap<>();
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java
index efb8886..36aaa3b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java
@@ -43,10 +43,10 @@
     adminSshSession.exec(PLUGIN_NAME + " " + project.get() + " " + NEW_PROJECT_NAME);
 
     adminSshSession.assertSuccess();
-    ProjectState projectState = projectCache.get(new Project.NameKey(NEW_PROJECT_NAME));
+    ProjectState projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
     assertThat(projectState).isNotNull();
     assertThat(queryProvider.get().byProject(project)).isEmpty();
-    assertThat(queryProvider.get().byProject(new Project.NameKey(NEW_PROJECT_NAME))).isNotEmpty();
+    assertThat(queryProvider.get().byProject(Project.nameKey(NEW_PROJECT_NAME))).isNotEmpty();
   }
 
   @Test
@@ -57,7 +57,7 @@
     adminSshSession.exec(PLUGIN_NAME + " " + project.get() + " " + newProjectName);
 
     adminSshSession.assertFailure();
-    ProjectState projectState = projectCache.get(new Project.NameKey(newProjectName));
+    ProjectState projectState = projectCache.get(Project.nameKey(newProjectName));
     assertThat(projectState).isNull();
   }
 
@@ -68,7 +68,7 @@
     adminSshSession.exec(PLUGIN_NAME + " " + allProjects.get() + " " + NEW_PROJECT_NAME);
 
     adminSshSession.assertFailure();
-    ProjectState projectState = projectCache.get(new Project.NameKey(NEW_PROJECT_NAME));
+    ProjectState projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
     assertThat(projectState).isNull();
   }
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
index e42e550..7354187 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
@@ -18,10 +18,13 @@
 import static org.mockito.Mockito.when;
 
 import com.google.gerrit.extensions.common.ProjectInfo;
+import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.config.AllProjectsName;
+import com.google.gerrit.server.config.AllProjectsNameProvider;
 import com.google.gerrit.server.config.AllUsersName;
+import com.google.gerrit.server.config.AllUsersNameProvider;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.ProjectResource;
 import com.google.gerrit.server.project.ProjectState;
@@ -43,8 +46,6 @@
 @RunWith(MockitoJUnitRunner.class)
 public class RenamePreconditionsTest {
 
-  @Mock private AllProjectsName allProjects;
-  @Mock private AllUsersName allUsersName;
   @Mock private Provider<ListChildProjects> listChildProjectsProvider;
   @Mock private GitRepositoryManager repoManager;
   @Mock private SubmoduleOp.Factory subOpFactory;
@@ -56,12 +57,16 @@
   @Mock private Repository repo;
   @Mock private ListChildProjects listChildProjects;
 
+  private AllProjectsName allProjects;
+  private AllUsersName allUsersName;
   private ProjectResource oldRsrc;
-  private List<ProjectInfo> children = new ArrayList<>();
-  private Project.NameKey newProjectKey = new Project.NameKey("newProject");
+  private Response<List<ProjectInfo>> children = Response.ok(new ArrayList<>());
+  private Project.NameKey newProjectKey = Project.nameKey("newProject");
 
   @Before
   public void setUp() throws Exception {
+    allProjects = new AllProjectsName(AllProjectsNameProvider.DEFAULT);
+    allUsersName = new AllUsersName(AllUsersNameProvider.DEFAULT);
     oldRsrc = new ProjectResource(control, user);
     when(repoManager.openRepository(newProjectKey)).thenReturn(repo);
     when(repo.getObjectDatabase()).thenReturn(objDb);
@@ -102,13 +107,13 @@
 
   @Test(expected = CannotRenameProjectException.class)
   public void testAssertCannotRenameHasChildren() throws Exception {
-    Project oldProject = new Project(new Project.NameKey("oldProject"));
+    Project oldProject = new Project(Project.nameKey("oldProject"));
     when(oldRsrc.getNameKey()).thenReturn(oldProject.getNameKey());
     when(objDb.exists()).thenReturn(false);
 
     when(listChildProjectsProvider.get()).thenReturn(listChildProjects);
     ProjectInfo projInfo = mock(ProjectInfo.class);
-    children.add(projInfo);
+    children.value().add(projInfo);
     when(listChildProjects.apply(oldRsrc)).thenReturn(children);
 
     preconditions.assertCanRename(oldRsrc, newProjectKey);