Merge branch 'stable-2.15'

* stable-2.15:
  Upgrade bazlets to latest stable-2.15 to build with 2.15.10 API

Change-Id: I9b92636aef5aa5fc72437009ca78b28bc191cff8
diff --git a/BUILD b/BUILD
index 82c5dfb..9acc76b 100644
--- a/BUILD
+++ b/BUILD
@@ -5,7 +5,7 @@
     srcs = glob(["src/main/java/**/*.java"]),
     manifest_entries = [
         "Gerrit-PluginName: batch",
-        "Gerrit-ApiVersion: 2.15",
+        "Gerrit-ApiVersion: 2.16",
         "Implementation-Title: Batch Plugin",
         "Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/batch",
         "Gerrit-Module: com.googlesource.gerrit.plugins.batch.Module",
diff --git a/WORKSPACE b/WORKSPACE
index a6c394d..c25ab79 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "2b1d68959119920e5fa9bdfb9f0cf926bfef4929",
+    commit = "c2227415d5044f8439bd47edffb0f052f8da2ac5",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/pom.xml b/pom.xml
index fecdcb7..d10f765 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
   <groupId>com.googlesource.gerrit.plugins.batch</groupId>
   <artifactId>batch</artifactId>
   <packaging>jar</packaging>
-  <version>2.15.7</version>
+  <version>2.16</version>
   <name>batch</name>
 
   <properties>
diff --git a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
index beca5b3..ce9505e 100644
--- a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
+++ b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
@@ -18,8 +18,6 @@
 import com.google.gerrit.reviewdb.client.File;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.MetaDataUpdate;
-import com.google.gerrit.server.git.VersionedMetaData;
 import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
@@ -58,7 +56,7 @@
   public String read() throws ConfigInvalidException, IOException, NoSuchProjectException {
     Project.NameKey project = branch.getParentKey();
     try (Repository repo = repos.openRepository(project)) {
-      load(repo);
+      load(project, repo);
       return text;
     } catch (RepositoryNotFoundException e) {
       throw new NoSuchProjectException(project);
diff --git a/src/main/java/com/google/gerrit/server/util/RefUpdater.java b/src/main/java/com/google/gerrit/server/util/RefUpdater.java
index c2c700d..0433722 100644
--- a/src/main/java/com/google/gerrit/server/util/RefUpdater.java
+++ b/src/main/java/com/google/gerrit/server/util/RefUpdater.java
@@ -202,8 +202,8 @@
             project, update.getName(), update.getOldObjectId(), args.newObjectId);
       }
       if (userProvider.get().isIdentifiedUser()) {
-        AccountState accountState = accountCache.get(userProvider.get().getAccountId());
-        gitRefUpdated.fire(project, update, accountState.getAccount());
+        AccountState accountState = accountCache.get(userProvider.get().getAccountId()).get();
+        gitRefUpdated.fire(project, update, accountState);
       }
     }
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
index 6d693df..9c0db7b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
@@ -29,7 +29,6 @@
 import java.util.ConcurrentModificationException;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import javax.inject.Singleton;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.lib.Ref;
@@ -62,10 +61,9 @@
   public List<Batch> find(boolean includeBatchInfo) throws IOException {
     List<Batch> batches = new ArrayList<>();
     try (Repository repo = repoManager.openRepository(project)) {
-      for (Map.Entry<String, Ref> entry : repo.getRefDatabase().getRefs(BATCHES_REF).entrySet()) {
+      for (Ref ref : repo.getRefDatabase().getRefsByPrefix(BATCHES_REF)) {
         try {
-          batches.add(
-              (includeBatchInfo == true) ? read(entry.getKey()) : new Batch(entry.getKey()));
+          batches.add((includeBatchInfo == true) ? read(ref.getName()) : new Batch(ref.getName()));
         } catch (NoSuchBatchException e) {
           continue;
         }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
index 7697dab..5da1531 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.batch;
 
-import com.google.gerrit.common.TimeUtil;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Branch;
@@ -26,6 +25,8 @@
 import com.google.gerrit.server.PatchSetUtil;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.MergedByPushOp;
+import com.google.gerrit.server.logging.RequestId;
+import com.google.gerrit.server.logging.TraceContext;
 import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.permissions.ChangePermission;
 import com.google.gerrit.server.permissions.PermissionBackend;
@@ -35,8 +36,8 @@
 import com.google.gerrit.server.update.BatchUpdate;
 import com.google.gerrit.server.update.UpdateException;
 import com.google.gerrit.server.util.RefUpdater;
-import com.google.gerrit.server.util.RequestId;
 import com.google.gerrit.server.util.RequestScopePropagator;
+import com.google.gerrit.server.util.time.TimeUtil;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.batch.exception.NoSuchBatchException;
@@ -166,15 +167,16 @@
     Branch.NameKey destination = change.getDest();
     Project.NameKey project = destination.getParentKey();
 
-    try (Repository repo = repoManager.openRepository(project);
+    try (TraceContext traceContext =
+            TraceContext.open()
+                .addTag(RequestId.Type.SUBMISSION_ID, new RequestId(change.getId().toString()));
+        Repository repo = repoManager.openRepository(project);
         BatchUpdate bu = batchUpdateFactory.create(db, project, user, TimeUtil.nowTs());
         ObjectInserter ins = repo.newObjectInserter();
         ObjectReader reader = ins.newReader();
         RevWalk walk = new RevWalk(reader)) {
       bu.setRepository(repo, walk, ins).updateChangesInParallel();
-      bu.setRequestId(RequestId.forChange(change));
       bu.setRefLogMessage("merged (batch submit)");
-
       bu.addOp(
           psId.getParentKey(),
           mergedByPushOpFactory.create(requestScopePropagator, psId, destination.get()));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java
index 444b148..37b4428 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java
@@ -18,7 +18,6 @@
 import com.google.gerrit.reviewdb.client.PatchSet;
 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.OutputFormat;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.NoSuchRefException;
@@ -86,7 +85,6 @@
   @Inject protected MergeBranch.Factory mergeBranchFactory;
   @Inject protected BatchCloser batchCloser;
   @Inject protected ReviewDb db;
-  @Inject protected IdentifiedUser user;
   @Inject protected GitRepositoryManager repoManager;
   protected Map<PatchSet.Id, List<ObjectId>> parentsByPsarg = new HashMap<>();
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java
index c766351..5d9323e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java
@@ -14,16 +14,16 @@
 package com.googlesource.gerrit.plugins.batch.util;
 
 import com.google.gerrit.common.Nullable;
-import com.google.gerrit.extensions.client.InheritableBoolean;
 import com.google.gerrit.extensions.restapi.BadRequestException;
+import com.google.gerrit.reviewdb.client.BooleanProjectConfig;
 import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.RefNames;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.IntegrationException;
 import com.google.gerrit.server.project.NoSuchRefException;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.project.ProjectState;
+import com.google.gerrit.server.submit.IntegrationException;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import com.googlesource.gerrit.plugins.batch.util.MergeBuilder.FastForwardMode;
@@ -112,8 +112,8 @@
 
   protected MergeStrategy defaultStrategy(MergeStrategy strategy) {
     if (strategy == null) {
-      Project project = projectFromName(projectName);
-      if (project != null && project.getUseContentMerge() == InheritableBoolean.TRUE) {
+      ProjectState project = projectFromName(projectName);
+      if (project != null && project.is(BooleanProjectConfig.USE_CONTENT_MERGE)) {
         return MergeStrategy.RESOLVE;
       }
       return MergeStrategy.SIMPLE_TWO_WAY_IN_CORE;
@@ -121,11 +121,8 @@
     return strategy;
   }
 
-  protected Project projectFromName(Project.NameKey name) {
+  protected ProjectState projectFromName(Project.NameKey name) {
     ProjectState ps = projectCache.get(name);
-    if (ps == null) {
-      return null;
-    }
-    return ps.getProject();
+    return ps != null ? ps : null;
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java
index 6e5c4a8..72bd980 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java
@@ -18,7 +18,7 @@
 import com.google.gerrit.server.GerritPersonIdent;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.IntegrationException;
+import com.google.gerrit.server.submit.IntegrationException;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import java.io.IOException;