Refactor: Make Hook an abstract class

Reduce visibility of Hook and AsynchronousHook to package private.

Make Hook an abstract class, defining abstract "execute" methods.

Rename the "run" and "submit" methods in SynchronousHook and
AsynchronousHook to "execute" to override that defined in Hook.

Change-Id: I4f69aeb8cce336a5765d784a2a7e793743a33ad7
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java
index 3953bf6..0eb9b6f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class AgreementSignup implements AgreementSignupListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -40,7 +40,7 @@
       args.add("--user-id", submitter._accountId);
       args.add("--cla-name", event.getAgreementName());
 
-      hook.submit(args);
+      hook.execute(args);
     }
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java
index c581642..4e74ece 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java
@@ -16,7 +16,7 @@
 
 import java.nio.file.Path;
 
-public class AsynchronousHook extends Hook {
+class AsynchronousHook extends Hook {
   private final HookQueue queue;
 
   AsynchronousHook(HookQueue queue, Path path) {
@@ -24,11 +24,15 @@
     this.queue = queue;
   }
 
-  void submit(HookArgs args) {
+  @Override
+  HookResult execute(HookArgs args) {
     queue.submit(path, args);
+    return null;
   }
 
-  void submit(String projectName, HookArgs args) {
+  @Override
+  HookResult execute(String projectName, HookArgs args) {
     queue.submit(projectName, path, args);
+    return null;
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java
index 19e6753..20ace66 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class ChangeAbandoned implements ChangeAbandonedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -45,6 +45,6 @@
     args.add("--commit", c.currentRevision);
     args.add("--reason", event.getReason());
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java
index 6e28143..6ef03e0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class ChangeMerged implements ChangeMergedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -45,6 +45,6 @@
     args.add("--commit", c.currentRevision);
     args.add("--newrev", event.getNewRevisionId());
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java
index af0f9a8..27b1c07 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class ChangeRestored implements ChangeRestoredListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -45,6 +45,6 @@
     args.add("--commit", c.currentRevision);
     args.add("--reason", event.getReason());
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java
index cea65d1..531f0ce 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class CommentAdded implements CommentAddedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -47,6 +47,6 @@
     args.add("--comment", event.getComment());
     args.addApprovals(event.getApprovals(), event.getOldApprovals());
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java
index ba4cec6..73b5ff5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java
@@ -25,7 +25,7 @@
 import org.eclipse.jgit.lib.ObjectId;
 
 public class CommitReceived implements CommitValidationListener {
-  private final SynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -54,7 +54,7 @@
     args.add("--newrev", receiveEvent.commit.name());
     args.add("--cmdref", commandRef);
 
-    HookResult result = hook.run(projectName, args);
+    HookResult result = hook.execute(projectName, args);
     if (result != null) {
       String output = result.toString();
       if (result.getExitValue() != 0) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java
index 7ae68f2..8fe8cde 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class DraftPublished implements DraftPublishedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -45,6 +45,6 @@
     args.add("--commit", event.getRevision().commit.commit);
     args.add("--patchset", event.getRevision()._number);
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java
index cf1a10d..07fff1e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java
@@ -20,7 +20,7 @@
 
 @Singleton
 class GitReferenceUpdated implements GitReferenceUpdatedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -39,6 +39,6 @@
     args.add("--project", event.getProjectName());
     args.add("--submitter", event.getUpdater());
 
-    hook.submit(event.getProjectName(), args);
+    hook.execute(event.getProjectName(), args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java
index 9bb40c1..7735b38 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java
@@ -22,7 +22,7 @@
 
 @Singleton
 class HashtagsEdited implements HashtagsEditedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -45,7 +45,7 @@
     add(args, "--added", event.getAddedHashtags());
     add(args, "--removed", event.getRemovedHashtags());
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 
   private void add(HookArgs args, String name, Collection<String> hashtags) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java
index 87fb4f4..fc84b9e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java
@@ -14,12 +14,17 @@
 
 package com.googlesource.gerrit.plugins.hooks;
 
+import com.google.gerrit.common.Nullable;
 import java.nio.file.Path;
 
-public class Hook {
+abstract class Hook {
   protected final Path path;
 
   Hook(Path path) {
     this.path = path;
   }
+
+  abstract @Nullable HookResult execute(HookArgs args);
+
+  abstract @Nullable HookResult execute(String projectName, HookArgs args);
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java
index ab4a615..c3ca6e1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java
@@ -57,11 +57,11 @@
     return hooksPath.resolve(firstNonNull(v, defaultName));
   }
 
-  public AsynchronousHook createAsync(String configName, String defaultName) {
+  public Hook createAsync(String configName, String defaultName) {
     return new AsynchronousHook(queue, getHookPath(configName, defaultName));
   }
 
-  public SynchronousHook createSync(String configName, String defaultName) {
+  public Hook createSync(String configName, String defaultName) {
     return new SynchronousHook(syncHookExecutor, getHookPath(configName, defaultName));
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java
index 5ff73f7..0cf0e88 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java
@@ -20,7 +20,7 @@
 
 @Singleton
 class NewProjectCreated implements NewProjectCreatedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -34,6 +34,6 @@
     HookArgs args = hookFactory.createArgs();
     args.add("--project", event.getProjectName());
     args.add("--head", event.getHeadName());
-    hook.submit(event.getProjectName(), args);
+    hook.execute(event.getProjectName(), args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java
index 7618d97..d6cba66 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java
@@ -24,7 +24,7 @@
 import java.util.List;
 
 public class RefUpdate implements RefOperationValidationListener {
-  private final SynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -46,7 +46,7 @@
     args.add("--newrev", refEvent.command.getNewId().getName());
     args.add("--refname", refEvent.command.getRefName());
 
-    HookResult result = hook.run(projectName, args);
+    HookResult result = hook.execute(projectName, args);
     if (result != null) {
       String output = result.toString();
       if (result.getExitValue() != 0) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java
index fca527d..9929255 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java
@@ -22,7 +22,7 @@
 
 @Singleton
 class ReviewerAdded implements ReviewerAddedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -44,7 +44,7 @@
       args.add("--branch", c.branch);
       args.add("--reviewer", reviewer);
 
-      hook.submit(c.project, args);
+      hook.execute(c.project, args);
     }
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java
index e23677d..0cf6ce7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class ReviewerDeleted implements ReviewerDeletedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -43,6 +43,6 @@
     args.add("--reviewer", event.getReviewer());
     args.addApprovals(event.getNewApprovals(), event.getOldApprovals());
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java
index cd4a9d1..ebf5a7b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java
@@ -21,7 +21,7 @@
 
 @Singleton
 public class RevisionCreated implements RevisionCreatedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -47,6 +47,6 @@
     args.add("--commit", event.getRevision().commit.commit);
     args.add("--patchset", event.getRevision()._number);
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java
index 03cbc40..d4dfaf8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java
@@ -24,11 +24,13 @@
     this.executor = executor;
   }
 
-  HookResult run(HookArgs args) {
+  @Override
+  HookResult execute(HookArgs args) {
     return executor.submit(path, args);
   }
 
-  HookResult run(String projectName, HookArgs args) {
+  @Override
+  HookResult execute(String projectName, HookArgs args) {
     return executor.submit(projectName, path, args);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java
index e608694..62407dd 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java
@@ -21,7 +21,7 @@
 
 @Singleton
 class TopicEdited implements TopicEditedListener {
-  private final AsynchronousHook hook;
+  private final Hook hook;
   private final HookFactory hookFactory;
 
   @Inject
@@ -43,6 +43,6 @@
     args.add("--old-topic", event.getOldTopic());
     args.add("--new-topic", event.getChange().topic);
 
-    hook.submit(c.project, args);
+    hook.execute(c.project, args);
   }
 }