in commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/CommitStatusPublisherListener.java [110:212]
public CommitStatusPublisherListener(@NotNull EventDispatcher<BuildServerListener> events,
@NotNull PublisherManager voterManager,
@NotNull BuildHistory buildHistory,
@NotNull BuildsManager buildsManager,
@NotNull BuildPromotionManager buildPromotionManager,
@NotNull CommitStatusPublisherProblems problems,
@NotNull ServerResponsibility serverResponsibility,
@NotNull final ExecutorServices executorServices,
@NotNull ProjectManager projectManager,
@NotNull TeamCityNodes teamCityNodes,
@NotNull UserModel userModel,
@NotNull MultiNodeTasks multiNodeTasks,
@NotNull FavoriteBuildProcessor favoriteBuildProcessor,
@NotNull BuildOwnerSupplier buildOwnerStrategy) {
myPublisherManager = voterManager;
myBuildHistory = buildHistory;
myBuildsManager = buildsManager;
myBuildPromotionManager = buildPromotionManager;
myProblems = problems;
myServerResponsibility = serverResponsibility;
myTeamCityNodes = teamCityNodes;
myMultiNodeTasks = multiNodeTasks;
myExecutorServices = executorServices;
myProjectManager = projectManager;
myUserModel = userModel;
myFavoriteBuildProcessor = favoriteBuildProcessor;
myBuildOwnerSupplier = buildOwnerStrategy;
myEventTypes.putAll(Arrays.stream(Event.values()).collect(Collectors.toMap(Event::getName, et -> et)));
myPublishingLocks = Striped.lazyWeakLock(TeamCityProperties.getInteger(LOCKS_STRIPES, LOCKS_STRIPES_DEFAULT));
myFinalizedEventReceived = CacheBuilder.newBuilder()
.expireAfterWrite(TeamCityProperties.getInteger(FINALIZED_EVENT_CACHE_TTL_PROPERTY, DEFAULT_FINALIZED_EVENTS_CACHE_TTL), TimeUnit.SECONDS)
.build();
events.addListener(this);
myMultiNodeTasks.subscribeOnSingletonTask(Event.STARTED.getName(), new BuildPublisherTaskConsumer (
build -> new PublishTask() {
@Override
public void run(@NotNull CommitStatusPublisher publisher, @NotNull BuildRevision revision) throws PublisherException {
publisher.buildStarted(build, revision);
myFavoriteBuildProcessor.markAsFavorite(build, myBuildOwnerSupplier);
}
}
));
myMultiNodeTasks.subscribe(Event.FINISHED.getName(), new BuildPublisherTaskConsumer (
build -> new PublishTask() {
@Override
public void run(@NotNull CommitStatusPublisher publisher, @NotNull BuildRevision revision) throws PublisherException {
publisher.buildFinished(build, revision);
}
}
));
myMultiNodeTasks.subscribe(Event.MARKED_AS_SUCCESSFUL.getName(), new BuildPublisherTaskConsumer (
build -> new PublishTask() {
@Override
public void run(@NotNull CommitStatusPublisher publisher, @NotNull BuildRevision revision) throws PublisherException {
publisher.buildMarkedAsSuccessful(build, revision, isBuildInProgress(build));
}
}
));
myMultiNodeTasks.subscribe(Event.COMMENTED.getName(), new BuildPublisherTaskConsumer (
build -> new PublishTask() {
@Override
public void run(@NotNull CommitStatusPublisher publisher, @NotNull BuildRevision revision) throws PublisherException {
Comment comment = build.getBuildComment();
if (null == comment)
return;
publisher.buildCommented(build, revision, comment.getUser(), comment.getComment(), isBuildInProgress(build));
}
}
));
myMultiNodeTasks.subscribe(Event.INTERRUPTED.getName(), new BuildPublisherTaskConsumer (
build -> new PublishTask() {
@Override
public void run(@NotNull CommitStatusPublisher publisher, @NotNull BuildRevision revision) throws PublisherException {
publisher.buildInterrupted(build, revision);
}
}
));
myMultiNodeTasks.subscribe(Event.FAILURE_DETECTED.getName(), new BuildPublisherTaskConsumer (
build -> new PublishTask() {
@Override
public void run(@NotNull CommitStatusPublisher publisher, @NotNull BuildRevision revision) throws PublisherException {
publisher.buildFailureDetected(build, revision);
}
}
));
myMultiNodeTasks.subscribeOnSingletonTask(Event.QUEUED.getName(), new QueuedBuildPublisherTaskConsumer(
buildPromotion -> new PublishQueuedTask() {
@Override
public void run(@NotNull CommitStatusPublisher publisher, @NotNull BuildRevision revision, @NotNull AdditionalTaskInfo additionalTaskInfo) throws PublisherException {
publisher.buildQueued(buildPromotion, revision, additionalTaskInfo);
}
}
));
}