Use 'ProjectState' in the other code path

Our last fix (I6caf2572c36) is working well. But we need to change
the other code path to use 'ProjectState' as it still throws those
exceptions.

Change-Id: Ie1ee545f9c8213a283b41a3764fb83e0bc30a801
diff --git a/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java b/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java
index 7e80fd9..90172f3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java
@@ -33,6 +33,7 @@
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.ProjectCache;
+import com.google.gerrit.server.project.ProjectState;
 import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gwtorm.server.OrmException;
 import com.google.gwtorm.server.SchemaFactory;
@@ -175,20 +176,16 @@
       Repository repository, Parameters params, ChangeData changeData)
       throws OrmException, BadRequestException, IOException {
     int patchset = getValidPatchsetNum(changeData, params.patchset);
+    ProjectState projectState = projectCache.get(changeData.project());
     OwnersDb db =
         Cache.getInstance()
-            .get(
-                projectCache.get(changeData.project()),
-                accountCache,
-                emails,
-                repository,
-                changeData,
-                patchset);
+            .get(projectState, accountCache, emails, repository, changeData, patchset);
     Collection<String> changedFiles = changeData.currentFilePaths();
     Map<String, Set<String>> file2Owners = db.findOwners(changedFiles);
 
     Boolean addDebugMsg = (params.debug != null) ? params.debug : Config.getAddDebugMsg();
-    RestResult obj = new RestResult(Config.getMinOwnerVoteLevel(changeData), addDebugMsg);
+    RestResult obj =
+        new RestResult(Config.getMinOwnerVoteLevel(projectState, changeData), addDebugMsg);
     obj.change = changeData.getId().get();
     obj.patchset = patchset;
     obj.ownerRevision = db.revision;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java b/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java
index 03225df..85f4bec 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java
@@ -146,7 +146,7 @@
       return 0;
     }
     if (minVoteLevel <= 0) {
-      minVoteLevel = Config.getMinOwnerVoteLevel(changeData);
+      minVoteLevel = Config.getMinOwnerVoteLevel(projectState, changeData);
     }
     log.trace("findApproval db key = " + db.key);
     return findApproval(accountCache, db);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/findowners/Config.java b/src/main/java/com/googlesource/gerrit/plugins/findowners/Config.java
index e69275d..9497353 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/findowners/Config.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/findowners/Config.java
@@ -15,10 +15,8 @@
 package com.googlesource.gerrit.plugins.findowners;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
-import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.gerrit.server.project.ProjectState;
 import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gwtorm.server.OrmException;
@@ -126,17 +124,16 @@
     reportSyntaxError = value;
   }
 
-  static int getMinOwnerVoteLevel(ChangeData changeData) throws OrmException {
-    Project.NameKey project = changeData.change().getProject();
-    try {
-      return (config == null || project == null)
-          ? minOwnerVoteLevel
-          : config
-              .getFromProjectConfigWithInheritance(project, PLUGIN_NAME)
-              .getInt(MIN_OWNER_VOTE_LEVEL, minOwnerVoteLevel);
-    } catch (NoSuchProjectException e) {
-      log.error("Cannot find project " + project + " for " + getChangeId(changeData), e);
+  static int getMinOwnerVoteLevel(ProjectState projectState, ChangeData c) throws OrmException {
+    if (projectState == null) {
+      log.error("Null projectState for change " + getChangeId(c));
       return minOwnerVoteLevel;
+    } else if (config == null) {
+      return minOwnerVoteLevel;
+    } else {
+      return config
+          .getFromProjectConfigWithInheritance(projectState, PLUGIN_NAME)
+          .getInt(MIN_OWNER_VOTE_LEVEL, minOwnerVoteLevel);
     }
   }
 }