Use revision of project config instead of loading it from repo

The current revision of the refs/meta/config branch is available from
the project config and we don't need to load it from the repository
once more on every load of a document.

Change-Id: Id318cf945b1673d5777a80997124ad5b2cdc7283
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocCache.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocCache.java
index f84efd7..8c03eb9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocCache.java
@@ -17,47 +17,33 @@
 import com.google.common.cache.LoadingCache;
 import com.google.gerrit.httpd.resources.Resource;
 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.project.ProjectCache;
+import com.google.gerrit.server.project.ProjectState;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 
-import com.googlesource.gerrit.plugins.xdocs.XDocLoader;
 import com.googlesource.gerrit.plugins.xdocs.formatter.Formatters.FormatterProvider;
 
 import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.Repository;
-
-import java.io.IOException;
 
 @Singleton
 public class XDocCache {
   private final LoadingCache<String, Resource> cache;
-  private final GitRepositoryManager repoManager;
+  private final ProjectCache projectCache;
 
   @Inject
   XDocCache(
       @Named(XDocLoader.Module.X_DOC_RESOURCES) LoadingCache<String, Resource> cache,
-      GitRepositoryManager repoManager) {
+      ProjectCache projectCache) {
     this.cache = cache;
-    this.repoManager = repoManager;
+    this.projectCache = projectCache;
   }
 
   public Resource get(FormatterProvider formatter, Project.NameKey project,
       String file, ObjectId revId) {
-    ObjectId metaConfigRevId;
-    try {
-      Repository repo = repoManager.openRepository(project);
-      try {
-        metaConfigRevId = repo.resolve(RefNames.REFS_CONFIG);
-      } finally {
-        repo.close();
-      }
-    } catch (IOException e) {
-      return null;
-    }
-
+    ProjectState p = projectCache.get(project);
+    ObjectId metaConfigRevId = p != null ? p.getConfig().getRevision() : null;
     return cache.getUnchecked((new XDocResourceKey(formatter.getName(),
         project, file, revId, metaConfigRevId)).asString());
   }