Adapt to Gerrit 3.2 APIs

Change-Id: I4e8a33ab383846cc47a92521a04970ef1ad1520b
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/GetPreference.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/GetPreference.java
index a7bf3e0..3347a2d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/GetPreference.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/GetPreference.java
@@ -20,7 +20,6 @@
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.Response;
-import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.extensions.restapi.RestReadView;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.account.AccountResource;
@@ -60,19 +59,15 @@
   }
 
   @Override
-  public Response<ConfigInfo> apply(AccountResource rsrc) throws PermissionBackendException, RestApiException {
+  public Response<ConfigInfo> apply(AccountResource rsrc)
+      throws AuthException, PermissionBackendException {
     if (self.get() != rsrc.getUser()) {
       permissionBackend.currentUser().check(ADMINISTRATE_SERVER);
     }
 
     String username = self.get().getUserName().get();
 
-    ConfigInfo globalCfg;
-    try {
-      globalCfg = getConfig.get().apply(new ConfigResource()).value();
-    } catch (Exception e) {
-      throw new RestApiException("Failed to get global config.");
-    }
+    ConfigInfo globalCfg = getConfig.get().apply(new ConfigResource()).value();
 
     Config db = projectCache.getAllProjects().getConfig(pluginName + ".config").get();
     ConfigInfo info = new ConfigInfo();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
index 13d4ab0..3cad325 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
@@ -42,6 +42,7 @@
 import com.google.inject.Singleton;
 import eu.medsea.mimeutil.MimeType;
 import java.io.IOException;
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -102,8 +103,8 @@
     }
 
     ResourceKey key = ResourceKey.fromPath(getEncodedPath(req));
-    ProjectState state = projectCache.get(key.project);
-    if (state == null || key.file == null) {
+    Optional<ProjectState> state = projectCache.get(key.project);
+    if (!state.isPresent() || key.file == null) {
       notFound(res);
       return;
     }
@@ -115,14 +116,10 @@
     }
 
     try {
-      ProjectState projectState = projectCache.get(key.project);
+      ProjectState projectState = projectCache.get(key.project).orElse(null);
       String rev = key.revision;
       if (rev == null || Constants.HEAD.equals(rev)) {
-        try {
-          rev = getHead.get().apply(new ProjectResource(projectState, self.get())).value();
-        } catch (Exception e) {
-          throw new ResourceNotFoundException(String.format("Could not get head of project %s.", key.project));
-        }
+        rev = getHead.get().apply(new ProjectResource(projectState, self.get())).value();
       } else {
         if (!ObjectId.isId(rev)) {
           if (!rev.startsWith(Constants.R_REFS)) {
@@ -147,7 +144,7 @@
         if (ObjectId.isId(rev)) {
           try (RevWalk rw = new RevWalk(repo)) {
             RevCommit commit = rw.parseCommit(repo.resolve(rev));
-            if (!commits.canRead(state, repo, commit)) {
+            if (!commits.canRead(state.get(), repo, commit)) {
               notFound(res);
               return;
             }
@@ -202,6 +199,7 @@
         }
       }
     } catch (RepositoryNotFoundException
+        | AuthException
         | ResourceNotFoundException
         | RevisionSyntaxException
         | PermissionBackendException e) {