commit 33f7258a051aeace6eb752eafc32da70100af350 Author: Ivan Frade Date: Thu Oct 8 16:18:13 2020 -0700 SubmissionExecutor: take directly a list of submission listeners SubmissionExecutor supports multiple listeners, but the injection only allows to put one. Inject a list so callers can actually provide multiple listeners if needed. Change-Id: I7593c0db5068a799586f04e306d5141a254d4790 diff --git a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java index 00fbe2b..c7c6c63 100644 --- a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java +++ b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java @@ -344,7 +344,7 @@ class ReceiveCommits { private final RequestScopePropagator requestScopePropagator; private final Sequences seq; private final SetHashtagsOp.Factory hashtagsFactory; - private final SubmissionListener superprojectUpdateSubmissionListener; + private final ImmutableList superprojectUpdateSubmissionListeners; private final TagCache tagCache; private final ProjectConfig.Factory projectConfigFactory; private final SetPrivateOp.Factory setPrivateOpFactory; @@ -426,7 +426,8 @@ class ReceiveCommits { RequestScopePropagator requestScopePropagator, Sequences seq, SetHashtagsOp.Factory hashtagsFactory, - @SuperprojectUpdateOnSubmission SubmissionListener superprojectUpdateSubmissionListener, + @SuperprojectUpdateOnSubmission + ImmutableList superprojectUpdateSubmissionListeners, TagCache tagCache, SetPrivateOp.Factory setPrivateOpFactory, ReplyAttentionSetUpdates replyAttentionSetUpdates, @@ -474,7 +475,7 @@ class ReceiveCommits { this.retryHelper = retryHelper; this.requestScopePropagator = requestScopePropagator; this.seq = seq; - this.superprojectUpdateSubmissionListener = superprojectUpdateSubmissionListener; + this.superprojectUpdateSubmissionListeners = superprojectUpdateSubmissionListeners; this.tagCache = tagCache; this.projectConfigFactory = projectConfigFactory; this.setPrivateOpFactory = setPrivateOpFactory; @@ -742,7 +743,7 @@ class ReceiveCommits { logger.atFine().log("Added %d additional ref updates", added); SubmissionExecutor submissionExecutor = - new SubmissionExecutor(false, superprojectUpdateSubmissionListener); + new SubmissionExecutor(false, superprojectUpdateSubmissionListeners); submissionExecutor.execute(ImmutableList.of(bu)); diff --git a/java/com/google/gerrit/server/submit/MergeOp.java b/java/com/google/gerrit/server/submit/MergeOp.java index 8a293a4..45e544d 100644 --- a/java/com/google/gerrit/server/submit/MergeOp.java +++ b/java/com/google/gerrit/server/submit/MergeOp.java @@ -232,7 +232,7 @@ public class MergeOp implements AutoCloseable { private final SubmitStrategyFactory submitStrategyFactory; private final SubscriptionGraph.Factory subscriptionGraphFactory; private final SubmoduleCommits.Factory submoduleCommitsFactory; - private final SubmissionListener superprojectUpdateSubmissionListener; + private final ImmutableList superprojectUpdateSubmissionListeners; private final Provider ormProvider; private final NotifyResolver notifyResolver; private final RetryHelper retryHelper; @@ -264,7 +264,8 @@ public class MergeOp implements AutoCloseable { SubmitStrategyFactory submitStrategyFactory, SubmoduleCommits.Factory submoduleCommitsFactory, SubscriptionGraph.Factory subscriptionGraphFactory, - @SuperprojectUpdateOnSubmission SubmissionListener superprojectUpdateSubmissionListener, + @SuperprojectUpdateOnSubmission + ImmutableList superprojectUpdateSubmissionListeners, Provider ormProvider, NotifyResolver notifyResolver, TopicMetrics topicMetrics, @@ -279,7 +280,7 @@ public class MergeOp implements AutoCloseable { this.submitStrategyFactory = submitStrategyFactory; this.submoduleCommitsFactory = submoduleCommitsFactory; this.subscriptionGraphFactory = subscriptionGraphFactory; - this.superprojectUpdateSubmissionListener = superprojectUpdateSubmissionListener; + this.superprojectUpdateSubmissionListeners = superprojectUpdateSubmissionListeners; this.ormProvider = ormProvider; this.notifyResolver = notifyResolver; this.retryHelper = retryHelper; @@ -498,7 +499,7 @@ public class MergeOp implements AutoCloseable { } SubmissionExecutor submissionExecutor = - new SubmissionExecutor(dryrun, superprojectUpdateSubmissionListener); + new SubmissionExecutor(dryrun, superprojectUpdateSubmissionListeners); RetryTracker retryTracker = new RetryTracker(); retryHelper .changeUpdate( diff --git a/java/com/google/gerrit/server/update/SubmissionExecutor.java b/java/com/google/gerrit/server/update/SubmissionExecutor.java index 5a3a789..39eda58 100644 --- a/java/com/google/gerrit/server/update/SubmissionExecutor.java +++ b/java/com/google/gerrit/server/update/SubmissionExecutor.java @@ -17,7 +17,6 @@ package com.google.gerrit.server.update; import com.google.common.collect.ImmutableList; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.server.submit.MergeOpRepoManager; -import java.util.Arrays; import java.util.Collection; import java.util.Optional; import java.util.stream.Collectors; @@ -28,14 +27,9 @@ public class SubmissionExecutor { private final boolean dryrun; private ImmutableList additionalListeners = ImmutableList.of(); - public SubmissionExecutor( - boolean dryrun, SubmissionListener listener, SubmissionListener... otherListeners) { + public SubmissionExecutor(boolean dryrun, ImmutableList submissionListeners) { this.dryrun = dryrun; - this.submissionListeners = - ImmutableList.builder() - .add(listener) - .addAll(Arrays.asList(otherListeners)) - .build(); + this.submissionListeners = submissionListeners; if (dryrun) { submissionListeners.forEach(SubmissionListener::setDryrun); } diff --git a/java/com/google/gerrit/server/update/SuperprojectUpdateSubmissionListener.java b/java/com/google/gerrit/server/update/SuperprojectUpdateSubmissionListener.java index dffdff0..4c65c80 100644 --- a/java/com/google/gerrit/server/update/SuperprojectUpdateSubmissionListener.java +++ b/java/com/google/gerrit/server/update/SuperprojectUpdateSubmissionListener.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.server.submit.MergeOpRepoManager; import com.google.gerrit.server.submit.SubmoduleOp; import com.google.inject.AbstractModule; +import com.google.inject.Provides; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -39,11 +40,11 @@ public class SuperprojectUpdateSubmissionListener implements SubmissionListener private boolean dryrun; public static class Module extends AbstractModule { - @Override - protected void configure() { - bind(SubmissionListener.class) - .annotatedWith(SuperprojectUpdateOnSubmission.class) - .to(SuperprojectUpdateSubmissionListener.class); + @Provides + @SuperprojectUpdateOnSubmission + ImmutableList provideSubmissionListeners( + SuperprojectUpdateSubmissionListener listener) { + return ImmutableList.of(listener); } }