Revert "Replace project cache with GerritApi for listing projects"

Revert submission 425518

Reason for revert: See Issue 325029893, this metric should go into Gerrit core

Reverted changes: /q/submissionid:425518

Change-Id: I8153b52cf2ad975eb002f3b1449a79d882354fd9
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java
index 4e41e1d..27c320b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java
@@ -14,47 +14,21 @@
 
 package com.googlesource.gerrit.plugins.gitrepometrics.collectors;
 
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import com.google.common.flogger.FluentLogger;
-import com.google.gerrit.extensions.api.GerritApi;
-import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.server.util.ManualRequestContext;
-import com.google.gerrit.server.util.OneOffRequestContext;
+import com.google.gerrit.server.project.ProjectCache;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
-import com.google.inject.Singleton;
-import com.googlesource.gerrit.plugins.gitrepometrics.GitRepoMetricsConfig;
-import java.util.concurrent.TimeUnit;
 
-@Singleton
 public class NumberOfProjectsCollector implements Provider<Long> {
   public static final String NUM_PROJECTS = "num-projects";
-  public static final long MIN_NUM_PROJECTS_GRACE_PERIOD_MS = 1000L;
-
-  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
-  private final Supplier<Long> numberOfProjects;
+  private final ProjectCache projectCache;
 
   @Inject
-  NumberOfProjectsCollector(GerritApi api, OneOffRequestContext ctx, GitRepoMetricsConfig config) {
-    numberOfProjects =
-        Suppliers.memoizeWithExpiration(
-            () -> queryNumberOfProjects(ctx, api),
-            Math.max(MIN_NUM_PROJECTS_GRACE_PERIOD_MS, config.getGracePeriodMs()),
-            TimeUnit.MILLISECONDS);
-  }
-
-  private static long queryNumberOfProjects(OneOffRequestContext ctx, GerritApi api) {
-    try (ManualRequestContext c = ctx.open()) {
-      return api.projects().query().get().size();
-    } catch (RestApiException e) {
-      logger.atWarning().withCause(e).log("Unable to query Gerrit projects list");
-      throw new IllegalStateException(e);
-    }
+  NumberOfProjectsCollector(ProjectCache projectCache) {
+    this.projectCache = projectCache;
   }
 
   @Override
   public Long get() {
-    return numberOfProjects.get();
+    return (long) projectCache.all().size();
   }
 }