Trigger ref-updated event when new snapshot manifest is generated

Change-Id: I8e487fc4467338762326fc5437d530a0097917ed
diff --git a/LICENSE b/LICENSE
index 11069ed..573f736 100644
--- a/LICENSE
+++ b/LICENSE
@@ -186,7 +186,7 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (C) 2015 Advanced Micro Devices, Inc.
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
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 b7bc738..1dbf190 100644
--- a/src/main/java/com/amd/gerrit/plugins/manifestsubscription/ManifestSubscription.java
+++ b/src/main/java/com/amd/gerrit/plugins/manifestsubscription/ManifestSubscription.java
@@ -16,10 +16,13 @@
 
 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.Branch;
 import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.server.account.AccountCache;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.MetaDataUpdate;
 import com.google.gerrit.server.git.ProjectConfig;
@@ -52,6 +55,8 @@
   private final MetaDataUpdate.Server metaDataUpdateFactory;
   private final GitRepositoryManager gitRepoManager;
   private final ProjectCache projectCache;
+  private final ChangeHooks changeHooks;
+
 
   /**
    * source project lookup
@@ -111,11 +116,13 @@
   ManifestSubscription(MetaDataUpdate.Server metaDataUpdateFactory,
                        GitRepositoryManager gitRepoManager,
                        @PluginName String pluginName,
-                       ProjectCache projectCache) {
+                       ProjectCache projectCache,
+                       ChangeHooks changeHooks) {
     this.metaDataUpdateFactory = metaDataUpdateFactory;
     this.gitRepoManager = gitRepoManager;
     this.pluginName = pluginName;
     this.projectCache = projectCache;
+    this.changeHooks = changeHooks;
   }
 
   @Override
@@ -465,13 +472,15 @@
       refExists = false;
     }
 
+
+    RevCommit commit = null;
     if (refExists) {
       Map<String, Manifest> entry = Maps.newHashMapWithExpectedSize(1);
       entry.put("default.xml", manifest);
       vManifests.setManifests(entry);
       vManifests.setSrcManifestRepo(manifestSrc);
       vManifests.setExtraCommitMsg(extraCommitMsg);
-      vManifests.commit(update);
+      commit = vManifests.commit(update);
     } else {
       vManifests = new VersionedManifests("master");
       try {
@@ -482,8 +491,21 @@
       Map<String, Manifest> entry = Maps.newHashMapWithExpectedSize(1);
       entry.put("default.xml", manifest);
       vManifests.setManifests(entry);
-      vManifests.commitToNewRef(update, refName);
+      commit = vManifests.commitToNewRef(update, refName);
     }
+
+    // TODO this may be bug in the MetaDataUpdate or VersionedMetaData
+    // May be related:
+    // https://code.google.com/p/gerrit/issues/detail?id=2564
+    // https://gerrit-review.googlesource.com/55540
+    if (commit != null) {
+      changeHooks.doRefUpdatedHook(new Branch.NameKey(p, refName),
+                                    commit.getParent(0).getId(),
+                                    commit.getId(), null);
+    } else {
+      log.warn("Failing to commit manifest subscription update");
+    }
+
   }
 
 }