Use core Gerrit API instead of ChangeHooks

In preparation for upgrade to 2.14 support.  ChangeHooks were seperated
from core Gerrit into its own plugin since 2.13.

Change-Id: I45fbb47c558a4e4c0c646ed9d6da8b5f6ab96017
diff --git a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestCommand.java b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestCommand.java
index fd367a6..f8517d6 100644
--- a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestCommand.java
+++ b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestCommand.java
@@ -14,9 +14,9 @@
 
 package com.amd.gerrit.plugins.manifestsubscription;
 
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.common.data.GlobalCapability;
 import com.google.gerrit.extensions.annotations.RequiresCapability;
+import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.MetaDataUpdate;
 import com.google.gerrit.sshd.CommandMetaData;
@@ -36,7 +36,7 @@
   private MetaDataUpdate.Server metaDataUpdateFactory;
 
   @Inject
-  private ChangeHooks changeHooks;
+  private GitReferenceUpdated gitRefUpdated;
 
   @Option(name = "-r", aliases = {"--manifest-repo"},
           usage = "", required = true)
@@ -90,7 +90,7 @@
     stdout.println(newManifestPath);
     stdout.println("Create snapshot branch: " + createSnapShotBranch);
 
-    Utilities.branchManifest(gitRepoManager, metaDataUpdateFactory, changeHooks,
+    Utilities.branchManifest(gitRepoManager, metaDataUpdateFactory, gitRefUpdated,
         manifestRepo, manifestCommitish, manifestPath,
         newBranch,
         newManifestRepo, newManifestBranch, newManifestPath,
diff --git a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestServlet.java b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestServlet.java
index aeb97f2..c03106b 100644
--- a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestServlet.java
+++ b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/BranchManifestServlet.java
@@ -14,8 +14,8 @@
 
 package com.amd.gerrit.plugins.manifestsubscription;
 
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.extensions.annotations.Export;
+import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.MetaDataUpdate;
 import com.google.inject.Inject;
@@ -39,7 +39,7 @@
   private MetaDataUpdate.Server metaDataUpdateFactory;
 
   @Inject
-  private ChangeHooks changeHooks;
+  private GitReferenceUpdated gitRefUpdated;
 
   protected void doPost(HttpServletRequest req, HttpServletResponse res)
                                                             throws IOException {
@@ -67,7 +67,7 @@
       }
 
       Utilities.branchManifest(
-          gitRepoManager, metaDataUpdateFactory, changeHooks,
+          gitRepoManager, metaDataUpdateFactory, gitRefUpdated,
           input.get("manifest-repo")[0],
           input.get("manifest-commit-ish")[0],
           input.get("manifest-path")[0],
diff --git a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/ManifestSubscription.java b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/ManifestSubscription.java
index 29699e3..7e82ff2 100644
--- a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/ManifestSubscription.java
+++ b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/ManifestSubscription.java
@@ -18,11 +18,11 @@
 
 import com.amd.gerrit.plugins.manifestsubscription.manifest.Manifest;
 import com.google.common.collect.*;
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.MetaDataUpdate;
 import com.google.gerrit.server.git.ProjectConfig;
@@ -56,7 +56,8 @@
   private final MetaDataUpdate.Server metaDataUpdateFactory;
   private final GitRepositoryManager gitRepoManager;
   private final ProjectCache projectCache;
-  private final ChangeHooks changeHooks;
+  private final GitReferenceUpdated gitRefUpdated;
+
 
 
   /**
@@ -124,12 +125,12 @@
                        GitRepositoryManager gitRepoManager,
                        @PluginName String pluginName,
                        ProjectCache projectCache,
-                       ChangeHooks changeHooks) {
+                       GitReferenceUpdated gitRefUpdated) {
     this.metaDataUpdateFactory = metaDataUpdateFactory;
     this.gitRepoManager = gitRepoManager;
     this.pluginName = pluginName;
     this.projectCache = projectCache;
-    this.changeHooks = changeHooks;
+    this.gitRefUpdated = gitRefUpdated;
   }
 
   @Override
@@ -199,7 +200,7 @@
 
         try {
           Utilities.updateManifest(gitRepoManager, metaDataUpdateFactory,
-              changeHooks, store, STORE_BRANCH_PREFIX + storeBranch,
+                  gitRefUpdated, store, STORE_BRANCH_PREFIX + storeBranch,
               manifest, manifestSrc, extraCommitMsg.toString(), null);
         } catch (JAXBException | IOException e) {
           e.printStackTrace();
@@ -465,7 +466,7 @@
   private void updateManifest(String projectName, String refName,
                               Manifest manifest, String manifestSrc)
       throws JAXBException, IOException {
-    Utilities.updateManifest(gitRepoManager, metaDataUpdateFactory, changeHooks,
+    Utilities.updateManifest(gitRepoManager, metaDataUpdateFactory, gitRefUpdated,
         projectName, refName, manifest, manifestSrc, "", null);
   }
 
diff --git a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/Utilities.java b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/Utilities.java
index 92a1a82..3ff0ee5 100644
--- a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/Utilities.java
+++ b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/Utilities.java
@@ -14,22 +14,19 @@
 
 package com.amd.gerrit.plugins.manifestsubscription;
 
+import com.amd.gerrit.plugins.manifestsubscription.manifest.Default;
+import com.amd.gerrit.plugins.manifestsubscription.manifest.Manifest;
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Maps;
-import com.google.gerrit.common.ChangeHooks;
-import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.MetaDataUpdate;
 import com.google.gson.FieldNamingPolicy;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-
-import com.amd.gerrit.plugins.manifestsubscription.manifest.Default;
-import com.amd.gerrit.plugins.manifestsubscription.manifest.Manifest;
-
 import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.lib.ObjectId;
@@ -38,15 +35,14 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.xml.bind.JAXBException;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Writer;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.xml.bind.JAXBException;
-
 public class Utilities {
   private static final Logger log =
       LoggerFactory.getLogger(Utilities.class);
@@ -80,7 +76,7 @@
 
   static ObjectId updateManifest(GitRepositoryManager gitRepoManager,
                              MetaDataUpdate.Server metaDataUpdateFactory,
-                             ChangeHooks changeHooks,
+                             GitReferenceUpdated gitRefUpdated,
                              String projectName, String refName,
                              Manifest manifest, String manifestSrc,
                              String extraCommitMsg,
@@ -134,10 +130,7 @@
         if (commit.getParents().length > 0) {
           parent = commit.getParent(0).getId();
         }
-        changeHooks.doRefUpdatedHook(new Branch.NameKey(p, refName),
-            parent,
-            commit.getId(), null);
-
+        gitRefUpdated.fire(p, refName, parent, commit.getId() );
       }
       return commit.getId();
     } else {
@@ -171,14 +164,14 @@
   }
 
   static Manifest createNewManifestFromBase(
-      GitRepositoryManager gitRepoManager,
-       MetaDataUpdate.Server metaDataUpdateFactory,
-       ChangeHooks changeHooks,
-       String srcManifestRepo, String srcManifestCommitish,
-       String manifestRepo, String manifestBranch, String manifestPath,
-       String newRef,
-       boolean createSnapShotBranch,
-       Manifest base)
+          GitRepositoryManager gitRepoManager,
+          MetaDataUpdate.Server metaDataUpdateFactory,
+          GitReferenceUpdated gitRefUpdated,
+          String srcManifestRepo, String srcManifestCommitish,
+          String manifestRepo, String manifestBranch, String manifestPath,
+          String newRef,
+          boolean createSnapShotBranch,
+          Manifest base)
       throws JAXBException, IOException, ConfigInvalidException, GitAPIException {
 
     // Replace default ref with newly created branch or tag
@@ -226,7 +219,7 @@
       String shortBranch = manifestBranch.replaceFirst("^refs/heads/(.*)", "$1");
 
       ObjectId oid = Utilities.updateManifest(
-          gitRepoManager, metaDataUpdateFactory, changeHooks,
+          gitRepoManager, metaDataUpdateFactory, gitRefUpdated,
           srcManifestRepo,
           ManifestSubscription.STORE_BRANCH_PREFIX + shortBranch + "/" + manifestPath,
           manifest, manifestRepo, "Manifest branched", srcManifestCommitish);
@@ -317,7 +310,7 @@
 
   static void branchManifest(GitRepositoryManager gitRepoManager,
                              MetaDataUpdate.Server metaDataUpdateFactory,
-                             ChangeHooks changeHooks,
+                             GitReferenceUpdated gitRefUpdated,
                              String manifestRepo, String manifestCommitish,
                              String manifestPath, String newBranch,
                              String newManifestRepo,
@@ -331,13 +324,13 @@
       manifest = getManifest(gitRepoManager, manifestRepo,
                               manifestCommitish, manifestPath);
       VersionedManifests.branchManifest(gitRepoManager, manifest,
-                                        newBranch, changeHooks);
+                                        newBranch, gitRefUpdated);
 
       if (newManifestBranch != null &&
           newManifestPath != null &&
           newManifestRepo != null) {
         createNewManifestFromBase(
-            gitRepoManager, metaDataUpdateFactory, changeHooks,
+            gitRepoManager, metaDataUpdateFactory, gitRefUpdated,
             manifestRepo, manifestCommitish,
             newManifestRepo, newManifestBranch, newManifestPath,
             newBranch, createSnapShotBranch, manifest);
diff --git a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/VersionedManifests.java b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/VersionedManifests.java
index 3c779d1..196a945 100644
--- a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/VersionedManifests.java
+++ b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/VersionedManifests.java
@@ -17,9 +17,9 @@
 import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Table;
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.VersionedMetaData;
 
@@ -259,7 +259,7 @@
   static void branchManifest(GitRepositoryManager gitRepoManager,
                              Manifest manifest,
                              final String branch,
-                             final ChangeHooks changeHooks)
+                             final GitReferenceUpdated gitReferenceUpdated)
                                           throws GitAPIException, IOException {
     Table<String, String, String> lookup = HashBasedTable.create();
     String defaultRef = null;
@@ -279,9 +279,7 @@
              Git git = new Git(db)) {
           try {
             Ref r = git.branchCreate().setName(branch).setStartPoint(hash).call();
-            changeHooks.doRefUpdatedHook(new Branch.NameKey(p, branch),
-                ObjectId.zeroId(),
-                r.getObjectId(), null);
+            gitReferenceUpdated.fire(p, branch, ObjectId.zeroId(), r.getObjectId());
           } catch (Exception e) {
 
           }