Make ReplacePatchSetSender managed by Guice.

Since now only classes in com.google.gerrit.server.mail package depend on
EmailSender interface.

Signed-off-by: Grzegorz Kossakowski <grek@google.com>
This commit is contained in:
Grzegorz Kossakowski
2009-07-30 10:25:57 -07:00
parent 9a05cf6695
commit 8c0c6f238b
3 changed files with 18 additions and 6 deletions

View File

@@ -36,6 +36,7 @@ import com.google.gerrit.server.mail.CreateChangeSender;
import com.google.gerrit.server.mail.EmailSender; import com.google.gerrit.server.mail.EmailSender;
import com.google.gerrit.server.mail.MergeFailSender; import com.google.gerrit.server.mail.MergeFailSender;
import com.google.gerrit.server.mail.MergedSender; import com.google.gerrit.server.mail.MergedSender;
import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.mail.SmtpEmailSender; import com.google.gerrit.server.mail.SmtpEmailSender;
import com.google.gerrit.server.patch.DiffCache; import com.google.gerrit.server.patch.DiffCache;
import com.google.gerrit.server.patch.PatchSetInfoFactory; import com.google.gerrit.server.patch.PatchSetInfoFactory;
@@ -110,5 +111,8 @@ public class GerritServerModule extends AbstractModule {
bind(MergeFailSender.Factory.class).toProvider( bind(MergeFailSender.Factory.class).toProvider(
FactoryProvider.newFactory(MergeFailSender.Factory.class, FactoryProvider.newFactory(MergeFailSender.Factory.class,
MergeFailSender.class)); MergeFailSender.class));
bind(ReplacePatchSetSender.Factory.class).toProvider(
FactoryProvider.newFactory(ReplacePatchSetSender.Factory.class,
ReplacePatchSetSender.class));
} }
} }

View File

@@ -17,6 +17,8 @@ package com.google.gerrit.server.mail;
import com.google.gerrit.client.reviewdb.Account; import com.google.gerrit.client.reviewdb.Account;
import com.google.gerrit.client.reviewdb.Change; import com.google.gerrit.client.reviewdb.Change;
import com.google.gerrit.server.GerritServer; import com.google.gerrit.server.GerritServer;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
@@ -25,10 +27,17 @@ import java.util.Set;
/** Send notice of new patch sets for reviewers. */ /** Send notice of new patch sets for reviewers. */
public class ReplacePatchSetSender extends ReplyToChangeSender { public class ReplacePatchSetSender extends ReplyToChangeSender {
public static interface Factory {
public ReplacePatchSetSender create(Change change);
}
private final Set<Account.Id> reviewers = new HashSet<Account.Id>(); private final Set<Account.Id> reviewers = new HashSet<Account.Id>();
private final Set<Account.Id> extraCC = new HashSet<Account.Id>(); private final Set<Account.Id> extraCC = new HashSet<Account.Id>();
public ReplacePatchSetSender(GerritServer gs, EmailSender sf, Change c) { @Inject
public ReplacePatchSetSender(GerritServer gs, EmailSender sf,
@Assisted Change c) {
super(gs, sf, c, "newpatchset"); super(gs, sf, c, "newpatchset");
} }

View File

@@ -46,7 +46,6 @@ import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.config.AuthConfig; import com.google.gerrit.server.config.AuthConfig;
import com.google.gerrit.server.mail.CreateChangeSender; import com.google.gerrit.server.mail.CreateChangeSender;
import com.google.gerrit.server.mail.EmailException; import com.google.gerrit.server.mail.EmailException;
import com.google.gerrit.server.mail.EmailSender;
import com.google.gerrit.server.mail.MergedSender; import com.google.gerrit.server.mail.MergedSender;
import com.google.gerrit.server.mail.ReplacePatchSetSender; import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.patch.DiffCache; import com.google.gerrit.server.patch.DiffCache;
@@ -134,15 +133,15 @@ class Receive extends AbstractGitCommand {
@Inject @Inject
private AuthConfig authConfig; private AuthConfig authConfig;
@Inject
private EmailSender emailSender;
@Inject @Inject
private CreateChangeSender.Factory createChangeSenderFactory; private CreateChangeSender.Factory createChangeSenderFactory;
@Inject @Inject
private MergedSender.Factory mergedSenderFactory; private MergedSender.Factory mergedSenderFactory;
@Inject
private ReplacePatchSetSender.Factory replacePatchSetFactory;
@Inject @Inject
private ReplicationQueue replication; private ReplicationQueue replication;
@@ -1044,7 +1043,7 @@ class Receive extends AbstractGitCommand {
try { try {
final ReplacePatchSetSender cm; final ReplacePatchSetSender cm;
cm = new ReplacePatchSetSender(server, emailSender, result.change); cm = replacePatchSetFactory.create(result.change);
cm.setFrom(me); cm.setFrom(me);
cm.setPatchSet(ps, result.info); cm.setPatchSet(ps, result.info);
cm.setChangeMessage(result.msg); cm.setChangeMessage(result.msg);