Adapt to upstream changes

- ChangeHooks is gone. Hooks are now invoked via the ref-update event.
- The ref-update firing mechanism now needs the user
- ProjectControl#canReadCommit now takes a Repository, not RevWalk
- Repository#getRef is deprecated in favor of #exactRef

The Buck build was already updated to build with 2.13-SNAPSHOT, but
the pom.xml was still using 2.12-SNAPSHOT, so update that too.

Change-Id: I3dd4b22c8ab3f8d12c0e787807e7fc1ca443c456
diff --git a/pom.xml b/pom.xml
index b607858..dfbc4fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
   <groupId>com.googlesource.gerrit.plugins.imagare</groupId>
   <artifactId>imagare</artifactId>
   <packaging>jar</packaging>
-  <version>2.12-SNAPSHOT</version>
+  <version>2.13-SNAPSHOT</version>
   <name>imagare</name>
 
   <properties>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java
index 2805ba4..7a6449e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.imagare;
 
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -51,17 +50,16 @@
   private final Provider<IdentifiedUser> self;
   private final GitRepositoryManager repoManager;
   private final GitReferenceUpdated referenceUpdated;
-  private final ChangeHooks hooks;
 
   @Inject
-  public DeleteImage(@PluginName String pluginName, Provider<IdentifiedUser> self,
-      GitRepositoryManager repoManager, GitReferenceUpdated referenceUpdated,
-      ChangeHooks hooks) {
+  public DeleteImage(@PluginName String pluginName,
+      Provider<IdentifiedUser> self,
+      GitRepositoryManager repoManager,
+      GitReferenceUpdated referenceUpdated) {
     this.pluginName = pluginName;
     this.self = self;
     this.repoManager = repoManager;
     this.referenceUpdated = referenceUpdated;
-    this.hooks = hooks;
   }
 
   @Override
@@ -95,8 +93,7 @@
         case NO_CHANGE:
         case FAST_FORWARD:
         case FORCED:
-          referenceUpdated.fire(rsrc.getProject(), u);
-          hooks.doRefUpdatedHook(rsrc.getBranchKey(), u, self.get().getAccount());
+          referenceUpdated.fire(rsrc.getProject(), u, self.get().getAccount());
           break;
 
         case REJECTED_CURRENT_BRANCH:
@@ -113,7 +110,7 @@
 
   private void validateOwnImage(Repository repo, String ref)
       throws IOException, ResourceNotFoundException, AuthException {
-    Ref r = repo.getRef(ref);
+    Ref r = repo.exactRef(ref);
     if (r == null) {
       throw new ResourceNotFoundException(ref);
     }
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 4218fcc..69ef8d1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
@@ -142,7 +142,7 @@
         if (ObjectId.isId(rev)) {
           try (RevWalk rw = new RevWalk(repo)) {
             RevCommit commit = rw.parseCommit(repo.resolve(rev));
-            if (!projectControl.canReadCommit(db.get(), rw, commit)) {
+            if (!projectControl.canReadCommit(db.get(), repo, commit)) {
               notFound(res);
               return;
             }
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 c41e75a..5b58590 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.imagare;
 
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -23,7 +22,6 @@
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
 import com.google.gerrit.extensions.restapi.Response;
 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.reviewdb.server.ReviewDb;
 import com.google.gerrit.server.mime.FileTypeRegistry;
@@ -74,7 +72,6 @@
   private final Provider<IdentifiedUser> self;
   private final GitRepositoryManager repoManager;
   private final GitReferenceUpdated referenceUpdated;
-  private final ChangeHooks hooks;
   private final PersonIdent myIdent;
   private final String canonicalWebUrl;
   private final Config cfg;
@@ -82,17 +79,20 @@
   private final String pluginName;
 
   @Inject
-  public PostImage(FileTypeRegistry registry, Provider<IdentifiedUser> self,
-      GitRepositoryManager repoManager, GitReferenceUpdated referenceUpdated,
-      ChangeHooks hooks, @GerritPersonIdent PersonIdent myIdent,
-      @CanonicalWebUrl String canonicalWebUrl, @GerritServerConfig Config cfg,
-      Provider<ReviewDb> db, @PluginName String pluginName) {
+  public PostImage(FileTypeRegistry registry,
+      Provider<IdentifiedUser> self,
+      GitRepositoryManager repoManager,
+      GitReferenceUpdated referenceUpdated,
+      @GerritPersonIdent PersonIdent myIdent,
+      @CanonicalWebUrl String canonicalWebUrl,
+      @GerritServerConfig Config cfg,
+      Provider<ReviewDb> db,
+      @PluginName String pluginName) {
     this.registry = registry;
     this.imageDataPattern = Pattern.compile("data:([\\w/.-]+);([\\w]+),(.*)");
     this.self = self;
     this.repoManager = repoManager;
     this.referenceUpdated = referenceUpdated;
-    this.hooks = hooks;
     this.myIdent = myIdent;
     this.canonicalWebUrl = canonicalWebUrl;
     this.cfg = cfg;
@@ -192,7 +192,7 @@
         commitId = oi.insert(cb);
         oi.flush();
 
-        if (!rc.canCreate(db.get(), rw, rw.parseCommit(commitId))) {
+        if (!rc.canCreate(db.get(), repo, rw.parseCommit(commitId))) {
           throw new AuthException(String.format(
               "Project %s doesn't allow image upload.", pc.getProject().getName()));
         }
@@ -202,9 +202,8 @@
         ru.setNewObjectId(commitId);
         ru.disableRefLog();
         if (ru.update(rw) == RefUpdate.Result.NEW) {
-          referenceUpdated.fire(pc.getProject().getNameKey(), ru);
-          hooks.doRefUpdatedHook(new Branch.NameKey(pc.getProject()
-              .getNameKey(), ref), ru, self.get().getAccount());
+          referenceUpdated.fire(pc.getProject().getNameKey(), ru,
+              self.get().getAccount());
         } else {
           throw new IOException(String.format(
               "Failed to create ref %s in %s: %s", ref,