Refactor ChangeHookRunner as an interface

This enables deciding at startup time if hooks will be supported,
and if not stub in a dummy implementation that does nothing. This
is mainly useful for my gerrit-review.googlesource.com environment
where the standard hook system of spawning an external program is
not supportable.

The factoring is a simple step towards a more pluggable event system.
Someone could implement a new version of ChangeHooks that uses a
Guice multibinding to dispatch these events to multiple instances
of the ChangeHooks API.

Change-Id: I6e9fba78f87d6e9ba8aaf80d386230334a492ea2
This commit is contained in:
Shawn O. Pearce
2012-01-23 11:28:42 -08:00
parent d6bd00b5eb
commit 8dba895ad6
18 changed files with 249 additions and 95 deletions

View File

@@ -14,7 +14,7 @@
package com.google.gerrit.sshd.commands;
import com.google.gerrit.common.ChangeHookRunner;
import com.google.gerrit.common.ChangeHooks;
import com.google.gerrit.common.data.ApprovalType;
import com.google.gerrit.common.data.ApprovalTypes;
import com.google.gerrit.common.data.ReviewResult;
@@ -150,7 +150,7 @@ public class ReviewCommand extends BaseCommand {
private RestoredSender.Factory restoredSenderFactory;
@Inject
private ChangeHookRunner hooks;
private ChangeHooks hooks;
@Inject
private GitRepositoryManager gitManager;

View File

@@ -14,7 +14,7 @@
package com.google.gerrit.sshd.commands;
import com.google.gerrit.common.ChangeHookRunner;
import com.google.gerrit.common.ChangeHooks;
import com.google.gerrit.common.ChangeListener;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.events.ChangeEvent;
@@ -43,7 +43,7 @@ final class StreamEvents extends BaseCommand {
private IdentifiedUser currentUser;
@Inject
private ChangeHookRunner hooks;
private ChangeHooks hooks;
@Inject
@StreamCommandExecutor