diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java index 8c103e2d51..6515d977ba 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java +++ b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java @@ -86,8 +86,8 @@ import java.util.concurrent.TimeoutException; /** Spawns local executables when a hook action occurs. */ @Singleton -public class ChangeHookRunner implements ChangeHooks, EventSource, - LifecycleListener { +public class ChangeHookRunner implements ChangeHooks, EventDispatcher, + EventSource, LifecycleListener { /** A logger for this class. */ private static final Logger log = LoggerFactory.getLogger(ChangeHookRunner.class); @@ -96,6 +96,7 @@ public class ChangeHookRunner implements ChangeHooks, EventSource, protected void configure() { bind(ChangeHookRunner.class); bind(ChangeHooks.class).to(ChangeHookRunner.class); + bind(EventDispatcher.class).to(ChangeHookRunner.class); bind(EventSource.class).to(ChangeHookRunner.class); listener().to(ChangeHookRunner.class); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java index 4e8a21e6f1..7f7e8b24a3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java +++ b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java @@ -22,7 +22,6 @@ import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; -import com.google.gerrit.server.events.Event; import com.google.gwtorm.server.OrmException; import org.eclipse.jgit.lib.ObjectId; @@ -182,23 +181,4 @@ public interface ChangeHooks { public void doHashtagsChangedHook(Change change, Account account, Setadded, Set removed, Set hashtags, ReviewDb db) throws OrmException; - - /** - * Post a stream event that is related to a change - * - * @param change The change that the event is related to - * @param event The event to post - * @param db The database - * @throws OrmException - */ - public void postEvent(Change change, Event event, ReviewDb db) - throws OrmException; - - /** - * Post a stream event that is related to a branch - * - * @param branchName The branch that the event is related to - * @param event The event to post - */ - public void postEvent(Branch.NameKey branchName, Event event); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java b/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java index 8bbb600da5..156672eb7b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java +++ b/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java @@ -32,7 +32,8 @@ import java.util.Map; import java.util.Set; /** Does not invoke hooks. */ -public final class DisabledChangeHooks implements ChangeHooks, EventSource { +public final class DisabledChangeHooks implements ChangeHooks, EventDispatcher, + EventSource { @Override public void addEventListener(EventListener listener, CurrentUser user) { } diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/EventDispatcher.java b/gerrit-server/src/main/java/com/google/gerrit/common/EventDispatcher.java new file mode 100644 index 0000000000..b74771f818 --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/common/EventDispatcher.java @@ -0,0 +1,44 @@ +// Copyright (C) 2015 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.common; + +import com.google.gerrit.reviewdb.client.Branch; +import com.google.gerrit.reviewdb.client.Change; +import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gerrit.server.events.Event; +import com.google.gwtorm.server.OrmException; + + +/** Interface for posting (dispatching) Events */ +public interface EventDispatcher { + /** + * Post a stream event that is related to a change + * + * @param change The change that the event is related to + * @param event The event to post + * @param db The database + * @throws OrmException + */ + public void postEvent(Change change, Event event, ReviewDb db) + throws OrmException; + + /** + * Post a stream event that is related to a branch + * + * @param branchName The branch that the event is related to + * @param event The event to post + */ + public void postEvent(Branch.NameKey branchName, Event event); +}