Use project versioning ref name from global-refdb library

Global-refdb validation framework is moved to the global-refdb library.
Use generic name for project versioning ref to avoid replication.

Use global-refdb version 3.3.0

Feature: Issue 13429
Change-Id: Ic2641b9efbe5d69ccfdb13ce395fc544b94f1efb
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index 19b06b1..998d3b9 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -3,8 +3,8 @@
 def external_plugin_deps():
     maven_jar(
         name = "global-refdb",
-        artifact = "com.gerritforge:global-refdb:3.3.0-rc1",
-        sha1 = "1b005b31c27a30ff10de97f903fa2834051bcadf",
+        artifact = "com.gerritforge:global-refdb:3.3.0",
+        sha1 = "8ef0600757b7468dc023c5030ce2cfeaa8ea0b64",
     )
 
     maven_jar(
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java
index 28eddbb..42eb4e2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java
@@ -14,6 +14,7 @@
 
 package com.googlesource.gerrit.plugins.multisite.validation;
 
+import static com.gerritforge.gerrit.globalrefdb.validation.RefUpdateValidator.SHARED_REF_DB_VERSIONING_REF;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 
@@ -51,10 +52,11 @@
   private static final Set<RefUpdate.Result> SUCCESSFUL_RESULTS =
       ImmutableSet.of(RefUpdate.Result.NEW, RefUpdate.Result.FORCED, RefUpdate.Result.NO_CHANGE);
 
-  public static final String MULTI_SITE_VERSIONING_REF = "refs/multi-site/version";
-  public static final String MULTI_SITE_VERSIONING_VALUE_REF = "refs/multi-site/version/value";
+  public static final String SHARED_REF_DB_VERSIONING_VALUE_REF =
+      SHARED_REF_DB_VERSIONING_REF + "/value";
   public static final Ref NULL_PROJECT_VERSION_REF =
-      new ObjectIdRef.Unpeeled(Ref.Storage.NETWORK, MULTI_SITE_VERSIONING_REF, ObjectId.zeroId());
+      new ObjectIdRef.Unpeeled(
+          Ref.Storage.NETWORK, SHARED_REF_DB_VERSIONING_REF, ObjectId.zeroId());
 
   private final GitRepositoryManager gitRepositoryManager;
   private final GitReferenceUpdated gitReferenceUpdated;
@@ -91,7 +93,7 @@
   private boolean isSpecialRefName(String refName) {
     return refName.startsWith(RefNames.REFS_SEQUENCES)
         || refName.startsWith(RefNames.REFS_STARRED_CHANGES)
-        || refName.equals(MULTI_SITE_VERSIONING_REF);
+        || refName.equals(SHARED_REF_DB_VERSIONING_REF);
   }
 
   private void updateProducerProjectVersionUpdate(RefUpdatedEvent refUpdatedEvent) {
@@ -131,7 +133,8 @@
 
   private RefUpdate getProjectVersionRefUpdate(Repository repository, Long version)
       throws IOException {
-    RefUpdate refUpdate = repository.getRefDatabase().newUpdate(MULTI_SITE_VERSIONING_REF, false);
+    RefUpdate refUpdate =
+        repository.getRefDatabase().newUpdate(SHARED_REF_DB_VERSIONING_REF, false);
     refUpdate.setNewObjectId(getNewId(repository, version));
     refUpdate.setForceUpdate(true);
     return refUpdate;
@@ -150,17 +153,19 @@
 
     Ref sharedRef =
         sharedRefDb
-            .get(projectNameKey, MULTI_SITE_VERSIONING_REF, String.class)
+            .get(projectNameKey, SHARED_REF_DB_VERSIONING_REF, String.class)
             .map(
                 (String objectId) ->
                     new ObjectIdRef.Unpeeled(
-                        Ref.Storage.NEW, MULTI_SITE_VERSIONING_REF, ObjectId.fromString(objectId)))
+                        Ref.Storage.NEW,
+                        SHARED_REF_DB_VERSIONING_REF,
+                        ObjectId.fromString(objectId)))
             .orElse(
                 new ObjectIdRef.Unpeeled(
-                    Ref.Storage.NEW, MULTI_SITE_VERSIONING_REF, ObjectId.zeroId()));
+                    Ref.Storage.NEW, SHARED_REF_DB_VERSIONING_REF, ObjectId.zeroId()));
     Optional<Long> sharedVersion =
         sharedRefDb
-            .get(projectNameKey, MULTI_SITE_VERSIONING_VALUE_REF, String.class)
+            .get(projectNameKey, SHARED_REF_DB_VERSIONING_VALUE_REF, String.class)
             .map(Long::parseLong);
 
     try {
@@ -194,7 +199,7 @@
       success =
           sharedRefDb.compareAndPut(
               projectNameKey,
-              MULTI_SITE_VERSIONING_VALUE_REF,
+              SHARED_REF_DB_VERSIONING_VALUE_REF,
               sharedVersion.map(Object::toString).orElse(null),
               newVersion.toString());
       if (!success) {
@@ -223,7 +228,7 @@
   public Optional<Long> getProjectLocalVersion(String projectName) {
     try (Repository repository =
         gitRepositoryManager.openRepository(Project.NameKey.parse(projectName))) {
-      Optional<IntBlob> blob = IntBlob.parse(repository, MULTI_SITE_VERSIONING_REF);
+      Optional<IntBlob> blob = IntBlob.parse(repository, SHARED_REF_DB_VERSIONING_REF);
       if (blob.isPresent()) {
         Long repoVersion = Integer.toUnsignedLong(blob.get().value());
         logger.atFine().log("Local project '%s' has version %d", projectName, repoVersion);
@@ -240,7 +245,7 @@
   public Optional<Long> getProjectRemoteVersion(String projectName) {
     Optional<String> globalVersion =
         sharedRefDb.get(
-            Project.NameKey.parse(projectName), MULTI_SITE_VERSIONING_VALUE_REF, String.class);
+            Project.NameKey.parse(projectName), SHARED_REF_DB_VERSIONING_VALUE_REF, String.class);
     return globalVersion.flatMap(longString -> getLongValueOf(longString));
   }
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java
index 917c6bf..11ed304 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java
@@ -14,9 +14,9 @@
 
 package com.googlesource.gerrit.plugins.multisite.validation;
 
+import static com.gerritforge.gerrit.globalrefdb.validation.RefUpdateValidator.SHARED_REF_DB_VERSIONING_REF;
 import static com.google.common.truth.Truth.assertThat;
-import static com.googlesource.gerrit.plugins.multisite.validation.ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_REF;
-import static com.googlesource.gerrit.plugins.multisite.validation.ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_VALUE_REF;
+import static com.googlesource.gerrit.plugins.multisite.validation.ProjectVersionRefUpdate.SHARED_REF_DB_VERSIONING_VALUE_REF;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.atMost;
@@ -93,14 +93,11 @@
   @Test
   public void producerShouldUpdateProjectVersionUponRefUpdatedEvent() throws IOException {
     Context.setForwardedEvent(false);
-    when(sharedRefDb.get(
-            A_TEST_PROJECT_NAME_KEY,
-            ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_REF,
-            String.class))
+    when(sharedRefDb.get(A_TEST_PROJECT_NAME_KEY, SHARED_REF_DB_VERSIONING_REF, String.class))
         .thenReturn(Optional.of("26f7ee61bf0e470e8393c884526eec8a9b943a63"));
     when(sharedRefDb.get(
             A_TEST_PROJECT_NAME_KEY,
-            ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_VALUE_REF,
+            ProjectVersionRefUpdate.SHARED_REF_DB_VERSIONING_VALUE_REF,
             String.class))
         .thenReturn(Optional.of("" + (masterCommit.getCommitTime() - 1)));
     when(sharedRefDb.compareAndPut(any(Project.NameKey.class), any(Ref.class), any(ObjectId.class)))
@@ -114,7 +111,7 @@
             repoManager, sharedRefDb, gitReferenceUpdated, verLogger, projectsFilter)
         .onEvent(refUpdatedEvent);
 
-    Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
+    Ref ref = repo.getRepository().findRef(SHARED_REF_DB_VERSIONING_REF);
 
     verify(sharedRefDb, atMost(1))
         .compareAndPut(any(Project.NameKey.class), any(Ref.class), any(ObjectId.class));
@@ -138,14 +135,11 @@
     Thread.sleep(1000L);
     repo.branch("master").update(masterCommit);
 
-    when(sharedRefDb.get(
-            A_TEST_PROJECT_NAME_KEY,
-            ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_REF,
-            String.class))
+    when(sharedRefDb.get(A_TEST_PROJECT_NAME_KEY, SHARED_REF_DB_VERSIONING_REF, String.class))
         .thenReturn(Optional.of("26f7ee61bf0e470e8393c884526eec8a9b943a63"));
     when(sharedRefDb.get(
             A_TEST_PROJECT_NAME_KEY,
-            ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_VALUE_REF,
+            ProjectVersionRefUpdate.SHARED_REF_DB_VERSIONING_VALUE_REF,
             String.class))
         .thenReturn(Optional.of("" + (masterCommit.getCommitTime() - 1)));
     when(sharedRefDb.compareAndPut(any(Project.NameKey.class), any(Ref.class), any(ObjectId.class)))
@@ -159,7 +153,7 @@
             repoManager, sharedRefDb, gitReferenceUpdated, verLogger, projectsFilter)
         .onEvent(refUpdatedEvent);
 
-    Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
+    Ref ref = repo.getRepository().findRef(SHARED_REF_DB_VERSIONING_REF);
 
     verify(sharedRefDb, atMost(1))
         .compareAndPut(any(Project.NameKey.class), any(Ref.class), any(ObjectId.class));
@@ -177,14 +171,11 @@
   public void producerShouldCreateNewProjectVersionWhenMissingUponRefUpdatedEvent()
       throws IOException {
     Context.setForwardedEvent(false);
-    when(sharedRefDb.get(
-            A_TEST_PROJECT_NAME_KEY,
-            ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_REF,
-            String.class))
+    when(sharedRefDb.get(A_TEST_PROJECT_NAME_KEY, SHARED_REF_DB_VERSIONING_REF, String.class))
         .thenReturn(Optional.empty());
     when(sharedRefDb.get(
             A_TEST_PROJECT_NAME_KEY,
-            ProjectVersionRefUpdate.MULTI_SITE_VERSIONING_VALUE_REF,
+            ProjectVersionRefUpdate.SHARED_REF_DB_VERSIONING_VALUE_REF,
             String.class))
         .thenReturn(Optional.empty());
 
@@ -199,7 +190,7 @@
             repoManager, sharedRefDb, gitReferenceUpdated, verLogger, projectsFilter)
         .onEvent(refUpdatedEvent);
 
-    Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
+    Ref ref = repo.getRepository().findRef(SHARED_REF_DB_VERSIONING_REF);
 
     verify(sharedRefDb, atMost(1))
         .compareAndPut(any(Project.NameKey.class), isNull(), any(ObjectId.class));
@@ -242,7 +233,7 @@
             repoManager, sharedRefDb, gitReferenceUpdated, verLogger, projectsFilter)
         .onEvent(refUpdatedEvent);
 
-    Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
+    Ref ref = repo.getRepository().findRef(SHARED_REF_DB_VERSIONING_REF);
     assertThat(ref).isNull();
 
     verifyZeroInteractions(verLogger);
@@ -258,7 +249,7 @@
             repoManager, sharedRefDb, gitReferenceUpdated, verLogger, projectsFilter)
         .onEvent(refUpdatedEvent);
 
-    Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
+    Ref ref = repo.getRepository().findRef(SHARED_REF_DB_VERSIONING_REF);
     assertThat(ref).isNull();
 
     verifyZeroInteractions(verLogger);
@@ -280,7 +271,7 @@
             repoManager, sharedRefDb, gitReferenceUpdated, verLogger, projectsFilter)
         .onEvent(refUpdatedEvent);
 
-    Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
+    Ref ref = repo.getRepository().findRef(SHARED_REF_DB_VERSIONING_REF);
     assertThat(ref).isNull();
 
     verifyZeroInteractions(verLogger);
@@ -288,7 +279,7 @@
 
   @Test
   public void getRemoteProjectVersionShouldReturnCorrectValue() {
-    when(sharedRefDb.get(A_TEST_PROJECT_NAME_KEY, MULTI_SITE_VERSIONING_VALUE_REF, String.class))
+    when(sharedRefDb.get(A_TEST_PROJECT_NAME_KEY, SHARED_REF_DB_VERSIONING_VALUE_REF, String.class))
         .thenReturn(Optional.of("123"));
 
     Optional<Long> version =