diff --git a/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java b/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java
index 5daa828..dc98f5d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java
@@ -35,6 +35,7 @@
 import com.google.inject.Singleton;
 import java.io.IOException;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.ScheduledExecutorService;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.lib.ObjectId;
@@ -79,11 +80,12 @@
           @Override
           public void run() {
             for (Project.NameKey p : projectCache.all()) {
-              ProjectState projectState = projectCache.get(p);
-              if (projectState != null) {
-                PluginConfig cfg = projectState.getConfig().getPluginConfig(pluginName);
+              Optional<ProjectState> projectState = projectCache.get(p);
+              if (projectState.isPresent()) {
+                PluginConfig cfg = projectState.get().getConfig().getPluginConfig(pluginName);
                 for (String name : cfg.getNames()) {
-                  installCommand(projectState.getProject().getNameKey(), name, cfg.getString(name));
+                  installCommand(
+                      projectState.get().getProject().getNameKey(), name, cfg.getString(name));
                 }
               }
             }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/download/command/project/ProjectDownloadCommand.java b/src/main/java/com/googlesource/gerrit/plugins/download/command/project/ProjectDownloadCommand.java
index 10d0291..e011f04 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/download/command/project/ProjectDownloadCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/download/command/project/ProjectDownloadCommand.java
@@ -22,6 +22,7 @@
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.project.ProjectState;
 import java.util.Map;
+import java.util.Optional;
 
 public class ProjectDownloadCommand extends DownloadCommand {
   private final ProjectCache projectCache;
@@ -50,9 +51,9 @@
     Project.NameKey projectName = Project.nameKey(project);
     String command = commands.get(projectName);
     if (command == null) {
-      ProjectState projectState = projectCache.get(projectName);
-      if (projectState != null) {
-        for (ProjectState parent : projectState.parents()) {
+      Optional<ProjectState> projectState = projectCache.get(projectName);
+      if (projectState.isPresent()) {
+        for (ProjectState parent : projectState.get().parents()) {
           command = commands.get(parent.getProject().getNameKey());
           if (command != null) {
             break;
