Merge branch 'stable-3.6'

* stable-3.6:
  Set version to 3.6.3.1
  Set project and Gerrit version to 3.5.4
  Bump project and Gerrit version to v3.4.8
  Use a simpler named binding for the LocalDiskRepositoryManager
  Associated GitRepositoryManager indirectly through a Named binding
  Set version to 3.6.3

Change-Id: Ifb65d7906869e4e917dab9c488561c3e4d43e662
diff --git a/pom.xml b/pom.xml
index 69f7ae6..7371465 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
 
     <groupId>com.gerritforge</groupId>
     <artifactId>global-refdb</artifactId>
-    <version>3.6.0-rc5</version>
+    <version>3.6.3.1</version>
     <packaging>jar</packaging>
 
     <name>global-refdb</name>
@@ -38,7 +38,7 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <gerrit.version>${project.version}</gerrit.version>
+        <gerrit.version>3.6.3</gerrit.version>
     </properties>
 
     <dependencies>
diff --git a/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbGitRepositoryManager.java b/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbGitRepositoryManager.java
index baf69d3..513f062 100644
--- a/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbGitRepositoryManager.java
+++ b/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbGitRepositoryManager.java
@@ -14,6 +14,7 @@
 
 package com.gerritforge.gerrit.globalrefdb.validation;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableSet;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.entities.Project.NameKey;
@@ -50,7 +51,11 @@
    */
   public static final String IGNORED_REFS = "ignored_refs";
 
-  private final GitRepositoryManager gitRepositoryManager;
+  @Inject(optional = true)
+  @Named("LocalDiskRepositoryManager")
+  private GitRepositoryManager gitRepositoryManager;
+
+  private final LocalDiskRepositoryManager localDiskRepositoryManager;
   private final SharedRefDbRepository.Factory sharedRefDbRepoFactory;
 
   @Inject(optional = true)
@@ -71,7 +76,7 @@
       SharedRefDbRepository.Factory sharedRefDbRepoFactory,
       LocalDiskRepositoryManager localDiskRepositoryManager) {
     this.sharedRefDbRepoFactory = sharedRefDbRepoFactory;
-    this.gitRepositoryManager = localDiskRepositoryManager;
+    this.localDiskRepositoryManager = localDiskRepositoryManager;
   }
 
   /**
@@ -85,7 +90,7 @@
   @Override
   public Repository openRepository(Project.NameKey name)
       throws RepositoryNotFoundException, IOException {
-    return wrap(name, gitRepositoryManager.openRepository(name));
+    return wrap(name, repositoryManager().openRepository(name));
   }
 
   /**
@@ -101,12 +106,12 @@
   @Override
   public Repository createRepository(Project.NameKey name)
       throws RepositoryCaseMismatchException, RepositoryNotFoundException, IOException {
-    return wrap(name, gitRepositoryManager.createRepository(name));
+    return wrap(name, repositoryManager().createRepository(name));
   }
 
   @Override
-  public NavigableSet<NameKey> list() {
-    return gitRepositoryManager.list();
+  public NavigableSet<Project.NameKey> list() {
+    return repositoryManager().list();
   }
 
   @Override
@@ -122,4 +127,8 @@
   private Repository wrap(Project.NameKey projectName, Repository projectRepo) {
     return sharedRefDbRepoFactory.create(projectName.get(), projectRepo, ignoredRefs);
   }
+
+  private GitRepositoryManager repositoryManager() {
+    return MoreObjects.firstNonNull(gitRepositoryManager, localDiskRepositoryManager);
+  }
 }