Adapt to Gerrit 3.1 API

Change-Id: I8ecbd7cd31f36a26b3f3041c25a5a61acb9561b0
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/GetConfig.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/GetConfig.java
index 4ddd017..dc3e17d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/GetConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/GetConfig.java
@@ -17,6 +17,7 @@
 import com.google.common.base.MoreObjects;
 import com.google.gerrit.extensions.annotations.PluginCanonicalWebUrl;
 import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.extensions.restapi.RestReadView;
 import com.google.gerrit.server.config.ConfigResource;
 import com.google.gerrit.server.config.PluginConfig;
@@ -40,7 +41,7 @@
   }
 
   @Override
-  public ConfigInfo apply(ConfigResource resource) {
+  public Response<ConfigInfo> apply(ConfigResource resource) {
     ConfigInfo info = new ConfigInfo();
     info.defaultProject = MoreObjects.firstNonNull(cfg.getString("defaultProject"), "All-Projects");
     info.linkDecoration = cfg.getEnum("linkDecoration", LinkDecoration.INLINE);
@@ -67,7 +68,7 @@
       info.uploadUrl = cfg.getString("uploadUrl");
     }
 
-    return info;
+    return Response.ok(info);
   }
 
   /**
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 e69b27d..a7bf3e0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/GetPreference.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/GetPreference.java
@@ -19,6 +19,8 @@
 import com.google.common.base.MoreObjects;
 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;
@@ -58,14 +60,19 @@
   }
 
   @Override
-  public ConfigInfo apply(AccountResource rsrc) throws AuthException, PermissionBackendException {
+  public Response<ConfigInfo> apply(AccountResource rsrc) throws PermissionBackendException, RestApiException {
     if (self.get() != rsrc.getUser()) {
       permissionBackend.currentUser().check(ADMINISTRATE_SERVER);
     }
 
     String username = self.get().getUserName().get();
 
-    ConfigInfo globalCfg = getConfig.get().apply(new ConfigResource());
+    ConfigInfo globalCfg;
+    try {
+      globalCfg = getConfig.get().apply(new ConfigResource()).value();
+    } catch (Exception e) {
+      throw new RestApiException("Failed to get global config.");
+    }
 
     Config db = projectCache.getAllProjects().getConfig(pluginName + ".config").get();
     ConfigInfo info = new ConfigInfo();
@@ -93,6 +100,6 @@
 
     info.pattern = globalCfg.pattern;
 
-    return info;
+    return Response.ok(info);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageResource.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageResource.java
index d57d42f..3551a9e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageResource.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageResource.java
@@ -14,31 +14,31 @@
 
 package com.googlesource.gerrit.plugins.imagare;
 
+import com.google.gerrit.entities.BranchNameKey;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.restapi.RestResource;
 import com.google.gerrit.extensions.restapi.RestView;
-import com.google.gerrit.reviewdb.client.Branch;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.inject.TypeLiteral;
 
 public class ImageResource implements RestResource {
   public static final TypeLiteral<RestView<ImageResource>> IMAGE_KIND =
       new TypeLiteral<RestView<ImageResource>>() {};
 
-  private Branch.NameKey branchName;
+  private BranchNameKey branchName;
 
-  ImageResource(Branch.NameKey branchName) {
+  ImageResource(BranchNameKey branchName) {
     this.branchName = branchName;
   }
 
   public Project.NameKey getProject() {
-    return branchName.getParentKey();
+    return branchName.project();
   }
 
   public String getRef() {
-    return branchName.get();
+    return branchName.branch();
   }
 
-  public Branch.NameKey getBranchKey() {
+  public BranchNameKey getBranchKey() {
     return branchName;
   }
 }
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 9c47679..13d4ab0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
@@ -20,11 +20,11 @@
 import com.google.common.base.CharMatcher;
 import com.google.common.hash.Hashing;
 import com.google.common.net.HttpHeaders;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.IdString;
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.mime.FileTypeRegistry;
@@ -118,7 +118,11 @@
       ProjectState projectState = projectCache.get(key.project);
       String rev = key.revision;
       if (rev == null || Constants.HEAD.equals(rev)) {
-        rev = getHead.get().apply(new ProjectResource(projectState, self.get()));
+        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));
+        }
       } else {
         if (!ObjectId.isId(rev)) {
           if (!rev.startsWith(Constants.R_REFS)) {
@@ -199,7 +203,6 @@
       }
     } catch (RepositoryNotFoundException
         | ResourceNotFoundException
-        | AuthException
         | RevisionSyntaxException
         | PermissionBackendException e) {
       notFound(res);
@@ -298,7 +301,7 @@
     }
 
     private ResourceKey(String p, String f, String r) {
-      project = new Project.NameKey(p);
+      project = Project.nameKey(p);
       file = f;
       revision = r;
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagesCollection.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagesCollection.java
index 92a8493..8070266 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagesCollection.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagesCollection.java
@@ -14,12 +14,12 @@
 
 package com.googlesource.gerrit.plugins.imagare;
 
+import com.google.gerrit.entities.BranchNameKey;
 import com.google.gerrit.extensions.registration.DynamicMap;
 import com.google.gerrit.extensions.restapi.ChildCollection;
 import com.google.gerrit.extensions.restapi.IdString;
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.extensions.restapi.RestView;
-import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.server.permissions.PermissionBackend;
 import com.google.gerrit.server.permissions.RefPermission;
 import com.google.gerrit.server.project.ProjectResource;
@@ -48,7 +48,7 @@
 
   @Override
   public ImageResource parse(ProjectResource parent, IdString id) throws ResourceNotFoundException {
-    Branch.NameKey branchName = new Branch.NameKey(parent.getNameKey(), id.get());
+    BranchNameKey branchName = BranchNameKey.create(parent.getNameKey(), id.get());
     if (permissionBackend.user(parent.getUser()).ref(branchName).testOrFalse(RefPermission.READ)) {
       return new ImageResource(branchName);
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
index 0a330f1..5fe103a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
@@ -14,6 +14,8 @@
 
 package com.googlesource.gerrit.plugins.imagare;
 
+import com.google.gerrit.entities.BranchNameKey;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -23,8 +25,6 @@
 import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.extensions.restapi.RestModifyView;
-import com.google.gerrit.reviewdb.client.Branch;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.GerritPersonIdent;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.config.CanonicalWebUrl;
@@ -186,7 +186,7 @@
           createRefControl.checkCreateRef(
               self,
               repo,
-              new Branch.NameKey(ps.getProject().getNameKey(), ref),
+              BranchNameKey.create(ps.getProject().getNameKey(), ref),
               rw.parseCommit(commitId));
         } catch (AuthException e) {
           throw new AuthException(
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/PutConfig.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/PutConfig.java
index 8443094..99ad85d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/PutConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/PutConfig.java
@@ -16,13 +16,13 @@
 
 import com.google.common.base.Strings;
 import com.google.gerrit.common.data.GlobalCapability;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.annotations.CapabilityScope;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.annotations.RequiresCapability;
 import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.extensions.restapi.RestModifyView;
 import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.config.ConfigResource;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.config.SitePaths;
@@ -71,7 +71,7 @@
     cfg.load();
 
     if (input.defaultProject != null) {
-      if (projectCache.get(new Project.NameKey(input.defaultProject)) == null) {
+      if (projectCache.get(Project.nameKey(input.defaultProject)) == null) {
         throw new UnprocessableEntityException(
             "project '" + input.defaultProject + "' does not exist");
       }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/PutPreference.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/PutPreference.java
index ffd00d4..a882042 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/PutPreference.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/PutPreference.java
@@ -21,12 +21,12 @@
 import static com.googlesource.gerrit.plugins.imagare.GetPreference.PREFERENCE;
 
 import com.google.common.base.Strings;
+import com.google.gerrit.entities.Project;
 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.RestModifyView;
 import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.account.AccountResource;
 import com.google.gerrit.server.git.meta.MetaDataUpdate;
@@ -81,7 +81,7 @@
 
     String defaultProject = db.getString(PREFERENCE, username, KEY_DEFAULT_PROJECT);
     if (Strings.emptyToNull(input.defaultProject) != null) {
-      if (projectCache.get(new Project.NameKey(input.defaultProject)) == null) {
+      if (projectCache.get(Project.nameKey(input.defaultProject)) == null) {
         throw new UnprocessableEntityException(
             "project '" + input.defaultProject + "' does not exist");
       }