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());
}