Merge branch 'stable-3.0' into stable-3.1

* stable-3.0:
  CreateReviewNotes: Use UTF_8 constant from StandardCharsets

Change-Id: I6593ce7a25aaa4a98dfbeb88a7898efba0e8f9cc
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java
index ff255ae..2cee7cb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java
@@ -19,12 +19,13 @@
 import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.common.data.LabelType;
 import com.google.gerrit.common.data.LabelTypes;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.PatchSet;
+import com.google.gerrit.entities.PatchSetApproval;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.gerrit.git.LockFailureException;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.PatchSet;
-import com.google.gerrit.reviewdb.client.PatchSetApproval;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.git.ObjectIds;
 import com.google.gerrit.server.ApprovalsUtil;
 import com.google.gerrit.server.GerritPersonIdent;
 import com.google.gerrit.server.PatchSetUtil;
@@ -150,7 +151,7 @@
       for (RevCommit c : rw) {
         PatchSet ps = loadPatchSet(c, branch);
         if (ps != null) {
-          ChangeNotes notes = notesFactory.create(project, ps.getId().changeId());
+          ChangeNotes notes = notesFactory.create(project, ps.id().changeId());
           ObjectId content = createNoteContent(notes, ps);
           if (content != null) {
             monitor.update(1);
@@ -174,9 +175,8 @@
       for (ChangeNotes cn : notes) {
         monitor.update(1);
         PatchSet ps = psUtil.current(cn);
-        ObjectId commitId = ObjectId.fromString(ps.getRevision().get());
-        RevCommit commit = rw.parseCommit(commitId);
-        getNotes().set(commitId, createNoteContent(cn, ps));
+        RevCommit commit = rw.parseCommit(ps.commitId());
+        getNotes().set(commit, createNoteContent(cn, ps));
         getMessage().append("* ").append(commit.getShortMessage()).append("\n");
       }
     }
@@ -240,7 +240,7 @@
     String hash = c.name();
     for (ChangeData cd : queryProvider.get().byBranchCommit(project.get(), destBranch, hash)) {
       for (PatchSet ps : cd.patchSets()) {
-        if (ps.getRevision().matches(hash)) {
+        if (ObjectIds.matchesAbbreviation(ps.commitId(), hash)) {
           return ps;
         }
       }
@@ -257,32 +257,31 @@
     // commit time so we will be able to skip this normalization step.
     Change change = notes.getChange();
     PatchSetApproval submit = null;
-    for (PatchSetApproval a : approvalsUtil.byPatchSet(notes, ps.getId(), null, null)) {
-      if (a.getValue() == 0) {
+    for (PatchSetApproval a : approvalsUtil.byPatchSet(notes, ps.id(), null, null)) {
+      if (a.value() == 0) {
         // Ignore 0 values.
       } else if (a.isLegacySubmit()) {
         submit = a;
       } else {
-        LabelType type = labelTypes.byLabel(a.getLabelId());
+        LabelType type = labelTypes.byLabel(a.labelId());
         if (type != null) {
           fmt.appendApproval(
               type,
-              a.getValue(),
-              a.getAccountId(),
-              accountCache.get(a.getAccountId()).map(AccountState::getAccount));
+              a.value(),
+              a.accountId(),
+              accountCache.get(a.accountId()).map(AccountState::account));
         }
       }
     }
     if (submit != null) {
       fmt.appendSubmittedBy(
-          submit.getAccountId(),
-          accountCache.get(submit.getAccountId()).map(AccountState::getAccount));
-      fmt.appendSubmittedAt(submit.getGranted());
+          submit.accountId(), accountCache.get(submit.accountId()).map(AccountState::account));
+      fmt.appendSubmittedAt(submit.granted());
     }
 
     UrlFormatter uf = urlFormatter.get();
     if (uf != null && uf.getWebUrl().isPresent()) {
-      fmt.appendReviewedOn(uf, notes.getChange().getProject(), ps.getId().changeId());
+      fmt.appendReviewedOn(uf, notes.getChange().getProject(), ps.id().changeId());
     }
     fmt.appendProject(project.get());
     fmt.appendBranch(change.getDest().branch());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java
index 1d512c6..9e728a7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java
@@ -20,8 +20,8 @@
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.MultimapBuilder;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.update.RetryHelper;
@@ -54,6 +54,8 @@
 
   @Inject private RetryHelper retryHelper;
 
+  private static final Object lock = new Object();
+
   private ListMultimap<Project.NameKey, ChangeNotes> changes;
   private ThreadSafeProgressMonitor monitor;
 
@@ -111,7 +113,7 @@
   }
 
   private Map.Entry<Project.NameKey, List<ChangeNotes>> next() {
-    synchronized (changes) {
+    synchronized (lock) {
       if (changes.isEmpty()) {
         return null;
       }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/HeaderFormatter.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/HeaderFormatter.java
index 5559eeb..480a268 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/HeaderFormatter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/HeaderFormatter.java
@@ -19,9 +19,9 @@
 import com.google.common.base.Strings;
 import com.google.gerrit.common.data.LabelType;
 import com.google.gerrit.common.data.LabelValue;
-import com.google.gerrit.reviewdb.client.Account;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Account;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.config.UrlFormatter;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -76,20 +76,20 @@
    */
   private void appendUserData(Account.Id accountId, Optional<Account> account) {
     checkState(
-        !account.isPresent() || accountId.equals(account.get().getId()), "mismatching account IDs");
+        !account.isPresent() || accountId.equals(account.get().id()), "mismatching account IDs");
 
     boolean needSpace = false;
     boolean wroteData = false;
 
     if (account.isPresent()) {
-      String fullName = account.get().getFullName();
+      String fullName = account.get().fullName();
       if (!Strings.isNullOrEmpty(fullName)) {
         sb.append(fullName);
         needSpace = true;
         wroteData = true;
       }
 
-      String preferredEmail = account.get().getPreferredEmail();
+      String preferredEmail = account.get().preferredEmail();
       if (!Strings.isNullOrEmpty(preferredEmail)) {
         if (needSpace) {
           sb.append(" ");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java
index 3365abe..c370a5c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java
@@ -15,10 +15,10 @@
 package com.googlesource.gerrit.plugins.reviewnotes;
 
 import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.entities.Project;
+import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
 import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.RefNames;
 import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.ProjectRunnable;