diff --git a/java/com/google/gerrit/plugins/checks/api/CreateChecker.java b/java/com/google/gerrit/plugins/checks/api/CreateChecker.java
index 86765b9..fdaaed1 100644
--- a/java/com/google/gerrit/plugins/checks/api/CreateChecker.java
+++ b/java/com/google/gerrit/plugins/checks/api/CreateChecker.java
@@ -140,16 +140,18 @@
   }
 
   private Project.NameKey resolveRepository(String repository)
-      throws BadRequestException, UnprocessableEntityException, IOException {
+      throws BadRequestException, UnprocessableEntityException {
     if (repository == null || repository.trim().isEmpty()) {
       throw new BadRequestException("repository is required");
     }
 
-    ProjectState projectState = projectCache.checkedGet(Project.nameKey(repository.trim()));
-    if (projectState == null) {
-      throw new UnprocessableEntityException(String.format("repository %s not found", repository));
-    }
-
+    ProjectState projectState =
+        projectCache
+            .get(Project.nameKey(repository.trim()))
+            .orElseThrow(
+                () ->
+                    new UnprocessableEntityException(
+                        String.format("repository %s not found", repository)));
     return projectState.getNameKey();
   }
 
diff --git a/java/com/google/gerrit/plugins/checks/api/UpdateChecker.java b/java/com/google/gerrit/plugins/checks/api/UpdateChecker.java
index 93f5b09..2841349 100644
--- a/java/com/google/gerrit/plugins/checks/api/UpdateChecker.java
+++ b/java/com/google/gerrit/plugins/checks/api/UpdateChecker.java
@@ -125,16 +125,18 @@
   }
 
   private Project.NameKey resolveRepository(String repository)
-      throws BadRequestException, UnprocessableEntityException, IOException {
+      throws BadRequestException, UnprocessableEntityException {
     if (repository == null || repository.trim().isEmpty()) {
       throw new BadRequestException("repository cannot be unset");
     }
 
-    ProjectState projectState = projectCache.checkedGet(Project.nameKey(repository.trim()));
-    if (projectState == null) {
-      throw new UnprocessableEntityException(String.format("repository %s not found", repository));
-    }
-
+    ProjectState projectState =
+        projectCache
+            .get(Project.nameKey(repository.trim()))
+            .orElseThrow(
+                () ->
+                    new UnprocessableEntityException(
+                        String.format("repository %s not found", repository)));
     return projectState.getNameKey();
   }
 
