Merge branch 'stable-3.2' into master

* stable-3.2:
  Upgrade bazlets to latest stable-3.2 to build with 3.2.5.1 API
  Upgrade bazlets to latest stable-3.1 to build with 3.1.10 API

Change-Id: Ic9bee328dc2f5318a1c3d728a87ba9c0af860a4e
diff --git a/WORKSPACE b/WORKSPACE
index 001c81d..4c04284 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -12,7 +12,7 @@
     "gerrit_api",
 )
 
-gerrit_api()
+gerrit_api(version = "3.3.0-SNAPSHOT")
 
 load("//:external_plugin_deps.bzl", "external_plugin_deps")
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java
index 8904144..91f4d9e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java
@@ -44,11 +44,11 @@
     MetaDataUpdate md = metaDataUpdateFactory.create(key);
 
     ProjectConfig projectConfig = projectConfigFactory.read(md);
-    Project p = projectConfig.getProject();
-    p.setState(ProjectState.READ_ONLY);
+    projectConfig.updateProject(project -> project.setState(ProjectState.READ_ONLY));
 
     md.setMessage(String.format("Lock project while renaming the project %s\n", key.get()));
     projectConfig.commit(md);
+    Project p = projectConfig.getProject();
     projectCache.evict(p);
   }
 
@@ -56,11 +56,11 @@
     MetaDataUpdate md = metaDataUpdateFactory.create(key);
 
     ProjectConfig projectConfig = projectConfigFactory.read(md);
-    Project p = projectConfig.getProject();
-    p.setState(ProjectState.ACTIVE);
+    projectConfig.updateProject(project -> project.setState(ProjectState.ACTIVE));
 
     md.setMessage(String.format("Unlock project after renaming the project to %s\n", key.get()));
     projectConfig.commit(md);
+    Project p = projectConfig.getProject();
     projectCache.evict(p);
   }
 }
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 cab2957..55ed291 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
@@ -14,9 +14,11 @@
 
 package com.googlesource.gerrit.plugins.renameproject.conditions;
 
+import static com.google.gerrit.entities.RefNames.REFS_HEADS;
+import static java.util.stream.Collectors.toSet;
+
 import com.google.gerrit.entities.BranchNameKey;
 import com.google.gerrit.entities.Project;
-import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.common.ProjectInfo;
 import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.server.config.AllProjectsName;
@@ -26,18 +28,16 @@
 import com.google.gerrit.server.restapi.project.ListChildProjects;
 import com.google.gerrit.server.submit.MergeOpRepoManager;
 import com.google.gerrit.server.submit.SubmoduleConflictException;
-import com.google.gerrit.server.submit.SubmoduleOp;
+import com.google.gerrit.server.submit.SubscriptionGraph;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
 import com.googlesource.gerrit.plugins.renameproject.CannotRenameProjectException;
 import java.io.IOException;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
-import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.Repository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,7 +52,7 @@
   public final AllUsersName allUsersName;
   private final Provider<ListChildProjects> listChildProjectsProvider;
   private final GitRepositoryManager repoManager;
-  private final SubmoduleOp.Factory subOpFactory;
+  private final SubscriptionGraph.Factory subscriptionGraphFactory;
   private final Provider<MergeOpRepoManager> ormProvider;
 
   @Inject
@@ -61,13 +61,13 @@
       AllUsersName allUsersName,
       Provider<ListChildProjects> listChildProjectsProvider,
       GitRepositoryManager repoManager,
-      SubmoduleOp.Factory subOpFactory,
+      SubscriptionGraph.Factory subscriptionGraphFactory,
       Provider<MergeOpRepoManager> ormProvider) {
     this.allProjectsName = allProjectsName;
     this.allUsersName = allUsersName;
     this.listChildProjectsProvider = listChildProjectsProvider;
     this.repoManager = repoManager;
-    this.subOpFactory = subOpFactory;
+    this.subscriptionGraphFactory = subscriptionGraphFactory;
     this.ormProvider = ormProvider;
   }
 
@@ -109,13 +109,13 @@
   private void assertIsNotSubscribed(Project.NameKey key) throws CannotRenameProjectException {
     try (Repository repo = repoManager.openRepository(key);
         MergeOpRepoManager orm = ormProvider.get()) {
-      Set<BranchNameKey> branches = new HashSet<>();
-      for (Ref ref : repo.getRefDatabase().getRefsByPrefix(RefNames.REFS_HEADS)) {
-        branches.add(BranchNameKey.create(key, ref.getName()));
-      }
-      SubmoduleOp sub = subOpFactory.create(branches, orm);
+      Set<BranchNameKey> branches =
+          repo.getRefDatabase().getRefsByPrefix(REFS_HEADS).stream()
+              .map(ref -> BranchNameKey.create(key, ref.getName()))
+              .collect(toSet());
+      SubscriptionGraph sub = subscriptionGraphFactory.compute(branches, orm);
       for (BranchNameKey b : branches) {
-        if (!sub.superProjectSubscriptionsForSubmoduleBranch(b).isEmpty()) {
+        if (sub.hasSuperproject(b)) {
           String message = "Cannot rename a project subscribed to by the other projects";
           log.error(message);
           throw new CannotRenameProjectException(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 7019327..7afbf11 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
@@ -18,11 +18,11 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.gerrit.entities.Account;
 import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.NotifyConfig.NotifyType;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.ServerInitiated;
 import com.google.gerrit.server.account.AccountState;
 import com.google.gerrit.server.account.AccountsUpdate;
-import com.google.gerrit.server.account.ProjectWatches.NotifyType;
 import com.google.gerrit.server.account.ProjectWatches.ProjectWatchKey;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.notedb.ChangeNotes;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
index f33829d..8330748 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
@@ -126,6 +126,8 @@
   }
 
   private void assertReverted() throws Exception {
+    evictCaches();
+
     Optional<ProjectState> oldProjectState = projectCache.get(oldProjectKey);
     assertThat(oldProjectState.isPresent()).isTrue();
 
@@ -137,6 +139,8 @@
   }
 
   private void assertRenamed(Result result) throws Exception {
+    evictCaches();
+
     Optional<ProjectState> oldProjectState = projectCache.get(oldProjectKey);
     assertThat(oldProjectState.isPresent()).isFalse();
 
@@ -153,4 +157,9 @@
       assertThat(queryProvider.get().byProject(oldProjectKey)).isEmpty();
     }
   }
+
+  private void evictCaches() {
+    projectCache.evict(oldProjectKey);
+    projectCache.evict(newProjectKey);
+  }
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java
index be4dc37..fd59126 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java
@@ -16,8 +16,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.gerrit.common.data.SubscribeSection;
 import com.google.gerrit.entities.Project.NameKey;
+import com.google.gerrit.entities.SubscribeSection;
 import com.google.gerrit.server.git.meta.MetaDataUpdate;
 import com.google.gerrit.server.git.meta.MetaDataUpdate.Server;
 import com.google.gerrit.server.project.ProjectCache;
@@ -54,12 +54,12 @@
       throws Exception {
     try (MetaDataUpdate md = metaDataUpdateFactory.create(sub)) {
       md.setMessage("Added superproject subscription");
-      SubscribeSection s;
+      SubscribeSection.Builder s;
       ProjectConfig pc = projectConfigFactory.read(md);
       if (pc.getSubscribeSections().containsKey(superName)) {
-        s = pc.getSubscribeSections().get(superName);
+        s = pc.getSubscribeSections().get(superName).toBuilder();
       } else {
-        s = new SubscribeSection(superName);
+        s = SubscribeSection.builder(superName);
       }
       String refspec;
       if (superBranch == null) {
@@ -72,7 +72,7 @@
       } else {
         s.addMultiMatchRefSpec(refspec);
       }
-      pc.addSubscribeSection(s);
+      pc.addSubscribeSection(s.build());
       ObjectId oldId = pc.getRevision();
       ObjectId newId = pc.commit(md);
       assertThat(newId).isNotEqualTo(oldId);
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 adc0791..049db6d 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
@@ -30,7 +30,7 @@
 import com.google.gerrit.server.project.ProjectState;
 import com.google.gerrit.server.restapi.project.ListChildProjects;
 import com.google.gerrit.server.submit.MergeOpRepoManager;
-import com.google.gerrit.server.submit.SubmoduleOp;
+import com.google.gerrit.server.submit.SubscriptionGraph;
 import com.google.inject.Provider;
 import com.googlesource.gerrit.plugins.renameproject.CannotRenameProjectException;
 import java.util.ArrayList;
@@ -48,7 +48,6 @@
 
   @Mock private Provider<ListChildProjects> listChildProjectsProvider;
   @Mock private GitRepositoryManager repoManager;
-  @Mock private SubmoduleOp.Factory subOpFactory;
   @Mock private Provider<MergeOpRepoManager> ormProvider;
   @Mock private RenamePreconditions preconditions;
   @Mock private ObjectDatabase objDb;
@@ -56,6 +55,7 @@
   @Mock private CurrentUser user;
   @Mock private Repository repo;
   @Mock private ListChildProjects listChildProjects;
+  @Mock private SubscriptionGraph.Factory subscriptionGraphFactory;
 
   private AllProjectsName allProjects;
   private AllUsersName allUsersName;
@@ -76,7 +76,7 @@
             allUsersName,
             listChildProjectsProvider,
             repoManager,
-            subOpFactory,
+            subscriptionGraphFactory,
             ormProvider);
   }
 
@@ -89,7 +89,7 @@
 
   @Test(expected = CannotRenameProjectException.class)
   public void testAssertCannotRenameAllProjects() throws Exception {
-    Project oldProject = new Project(allProjects);
+    Project oldProject = Project.builder(allProjects).build();
     when(oldRsrc.getNameKey()).thenReturn(oldProject.getNameKey());
     when(objDb.exists()).thenReturn(false);
 
@@ -98,7 +98,7 @@
 
   @Test(expected = CannotRenameProjectException.class)
   public void testAssertCannotRenameAllUsers() throws Exception {
-    Project oldProject = new Project(allUsersName);
+    Project oldProject = Project.builder(allUsersName).build();
     when(oldRsrc.getNameKey()).thenReturn(oldProject.getNameKey());
     when(objDb.exists()).thenReturn(false);
 
@@ -107,7 +107,7 @@
 
   @Test(expected = CannotRenameProjectException.class)
   public void testAssertCannotRenameHasChildren() throws Exception {
-    Project oldProject = new Project(Project.nameKey("oldProject"));
+    Project oldProject = Project.builder(Project.nameKey("oldProject")).build();
     when(oldRsrc.getNameKey()).thenReturn(oldProject.getNameKey());
     when(objDb.exists()).thenReturn(false);