Move code to send emails into 'mail.send' package

We will implement code to receive emails soon and having that code
side-by-side with the code to send email makes the whole package seem
overloaded.

Change-Id: I88dd9d5f537c4ed8f6608ee62d08f7dbd75d21a4
This commit is contained in:
Patrick Hiesel 2016-10-21 11:00:40 +02:00 committed by David Pursehouse
parent 87f4b1d61a
commit dc8478137a
61 changed files with 173 additions and 136 deletions

View File

@ -82,7 +82,7 @@ import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.index.change.ChangeIndex;
import com.google.gerrit.server.index.change.ChangeIndexCollection;
import com.google.gerrit.server.index.change.ChangeIndexer;
import com.google.gerrit.server.mail.EmailHeader;
import com.google.gerrit.server.mail.send.EmailHeader;
import com.google.gerrit.server.notedb.ChangeNoteUtil;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.project.ChangeControl;

View File

@ -48,7 +48,7 @@ import com.google.gerrit.server.account.AccountCache;
import com.google.gerrit.server.account.AccountResource;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.index.account.AccountIndexCollection;
import com.google.gerrit.server.mail.AddKeySender;
import com.google.gerrit.server.mail.send.AddKeySender;
import com.google.gerrit.server.query.account.InternalAccountQuery;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;

View File

@ -68,7 +68,7 @@ import com.google.gerrit.server.index.DummyIndexModule;
import com.google.gerrit.server.index.IndexModule;
import com.google.gerrit.server.index.IndexModule.IndexType;
import com.google.gerrit.server.mail.SignedTokenEmailTokenVerifier;
import com.google.gerrit.server.mail.SmtpEmailSender;
import com.google.gerrit.server.mail.send.SmtpEmailSender;
import com.google.gerrit.server.mime.MimeUtil2Module;
import com.google.gerrit.server.patch.DiffExecutorModule;
import com.google.gerrit.server.plugins.PluginGuiceEnvironment;

View File

@ -21,7 +21,7 @@ import com.google.gerrit.pgm.init.api.ConsoleUI;
import com.google.gerrit.pgm.init.api.InitStep;
import com.google.gerrit.pgm.init.api.Section;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.mail.SmtpEmailSender.Encryption;
import com.google.gerrit.server.mail.send.SmtpEmailSender.Encryption;
import com.google.inject.Inject;
import com.google.inject.Singleton;

View File

@ -29,7 +29,7 @@ import com.google.gerrit.pgm.init.api.InitStep;
import com.google.gerrit.pgm.init.api.Section;
import com.google.gerrit.pgm.init.api.Section.Factory;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.mail.OutgoingEmail;
import com.google.gerrit.server.mail.send.OutgoingEmail;
import com.google.inject.Binding;
import com.google.inject.Inject;
import com.google.inject.Injector;

View File

@ -58,7 +58,7 @@ import com.google.gerrit.server.git.ReceiveCommitsExecutorModule;
import com.google.gerrit.server.git.SearchingChangeCacheImpl;
import com.google.gerrit.server.git.TagCache;
import com.google.gerrit.server.group.GroupModule;
import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.mail.send.ReplacePatchSetSender;
import com.google.gerrit.server.notedb.NoteDbModule;
import com.google.gerrit.server.patch.DiffExecutorModule;
import com.google.gerrit.server.patch.PatchListCacheImpl;

View File

@ -19,7 +19,7 @@ import com.google.common.collect.Sets;
import com.google.gerrit.extensions.client.AccountFieldName;
import com.google.gerrit.reviewdb.client.AccountExternalId;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.mail.EmailSender;
import com.google.gerrit.server.mail.send.EmailSender;
import com.google.inject.Inject;
import java.util.Collection;

View File

@ -29,7 +29,7 @@ import com.google.gerrit.reviewdb.client.AccountSshKey;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AddSshKey.Input;
import com.google.gerrit.server.mail.AddKeySender;
import com.google.gerrit.server.mail.send.AddKeySender;
import com.google.gerrit.server.ssh.SshKeyCache;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;

View File

@ -38,7 +38,7 @@ import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.api.accounts.AccountExternalIdCreator;
import com.google.gerrit.server.group.GroupsCollection;
import com.google.gerrit.server.index.account.AccountIndexer;
import com.google.gerrit.server.mail.OutgoingEmailValidator;
import com.google.gerrit.server.mail.send.OutgoingEmailValidator;
import com.google.gerrit.server.ssh.SshKeyCache;
import com.google.gwtorm.server.OrmDuplicateKeyException;
import com.google.gwtorm.server.OrmException;

View File

@ -30,8 +30,8 @@ import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.GetEmails.EmailInfo;
import com.google.gerrit.server.config.AuthConfig;
import com.google.gerrit.server.mail.OutgoingEmailValidator;
import com.google.gerrit.server.mail.RegisterNewEmailSender;
import com.google.gerrit.server.mail.send.OutgoingEmailValidator;
import com.google.gerrit.server.mail.send.RegisterNewEmailSender;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;

View File

@ -38,8 +38,8 @@ import com.google.gerrit.server.git.BatchUpdate;
import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.mail.AbandonedSender;
import com.google.gerrit.server.mail.ReplyToChangeSender;
import com.google.gerrit.server.mail.send.AbandonedSender;
import com.google.gerrit.server.mail.send.ReplyToChangeSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gwtorm.server.OrmException;

View File

@ -47,7 +47,7 @@ import com.google.gerrit.server.git.GroupCollector;
import com.google.gerrit.server.git.SendEmailExecutor;
import com.google.gerrit.server.git.validators.CommitValidationException;
import com.google.gerrit.server.git.validators.CommitValidators;
import com.google.gerrit.server.mail.CreateChangeSender;
import com.google.gerrit.server.mail.send.CreateChangeSender;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.patch.PatchSetInfoFactory;

View File

@ -44,7 +44,7 @@ import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.BatchUpdateReviewDb;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.mail.DeleteReviewerSender;
import com.google.gerrit.server.mail.send.DeleteReviewerSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gwtorm.server.OrmException;

View File

@ -42,8 +42,8 @@ import com.google.gerrit.server.git.BatchUpdate;
import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.mail.DeleteVoteSender;
import com.google.gerrit.server.mail.ReplyToChangeSender;
import com.google.gerrit.server.mail.send.DeleteVoteSender;
import com.google.gerrit.server.mail.send.ReplyToChangeSender;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.util.LabelVote;
import com.google.gwtorm.server.OrmException;

View File

@ -24,7 +24,7 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.git.SendEmailExecutor;
import com.google.gerrit.server.mail.CommentSender;
import com.google.gerrit.server.mail.send.CommentSender;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.patch.PatchSetInfoFactory;
import com.google.gerrit.server.util.RequestContext;

View File

@ -40,7 +40,7 @@ import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.BatchUpdate.RepoContext;
import com.google.gerrit.server.git.validators.CommitValidationException;
import com.google.gerrit.server.git.validators.CommitValidators;
import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.mail.send.ReplacePatchSetSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.patch.PatchSetInfoFactory;
import com.google.gerrit.server.project.ChangeControl;

View File

@ -53,7 +53,7 @@ import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.group.GroupsCollection;
import com.google.gerrit.server.group.SystemGroupBackend;
import com.google.gerrit.server.mail.AddReviewerSender;
import com.google.gerrit.server.mail.send.AddReviewerSender;
import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchProjectException;

View File

@ -44,9 +44,9 @@ import com.google.gerrit.server.git.BatchUpdate;
import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.mail.CreateChangeSender;
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.mail.send.CreateChangeSender;
import com.google.gerrit.server.mail.send.ReplacePatchSetSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.patch.PatchSetInfoFactory;
import com.google.gwtorm.server.OrmException;

View File

@ -35,8 +35,8 @@ import com.google.gerrit.server.git.BatchUpdate;
import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.mail.ReplyToChangeSender;
import com.google.gerrit.server.mail.RestoredSender;
import com.google.gerrit.server.mail.send.ReplyToChangeSender;
import com.google.gerrit.server.mail.send.RestoredSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gwtorm.server.OrmException;

View File

@ -45,7 +45,7 @@ import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.git.validators.CommitValidators;
import com.google.gerrit.server.mail.RevertedSender;
import com.google.gerrit.server.mail.send.RevertedSender;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.ProjectControl;

View File

@ -128,19 +128,19 @@ import com.google.gerrit.server.git.validators.UploadValidators;
import com.google.gerrit.server.group.GroupInfoCache;
import com.google.gerrit.server.group.GroupModule;
import com.google.gerrit.server.index.change.ReindexAfterUpdate;
import com.google.gerrit.server.mail.AddKeySender;
import com.google.gerrit.server.mail.AddReviewerSender;
import com.google.gerrit.server.mail.CreateChangeSender;
import com.google.gerrit.server.mail.DeleteReviewerSender;
import com.google.gerrit.server.mail.EmailModule;
import com.google.gerrit.server.mail.FromAddressGenerator;
import com.google.gerrit.server.mail.FromAddressGeneratorProvider;
import com.google.gerrit.server.mail.MailSoyTofuProvider;
import com.google.gerrit.server.mail.MailTemplates;
import com.google.gerrit.server.mail.MergedSender;
import com.google.gerrit.server.mail.RegisterNewEmailSender;
import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.mail.VelocityRuntimeProvider;
import com.google.gerrit.server.mail.send.AddKeySender;
import com.google.gerrit.server.mail.send.AddReviewerSender;
import com.google.gerrit.server.mail.send.CreateChangeSender;
import com.google.gerrit.server.mail.send.DeleteReviewerSender;
import com.google.gerrit.server.mail.send.FromAddressGenerator;
import com.google.gerrit.server.mail.send.FromAddressGeneratorProvider;
import com.google.gerrit.server.mail.send.MailSoyTofuProvider;
import com.google.gerrit.server.mail.send.MailTemplates;
import com.google.gerrit.server.mail.send.MergedSender;
import com.google.gerrit.server.mail.send.RegisterNewEmailSender;
import com.google.gerrit.server.mail.send.ReplacePatchSetSender;
import com.google.gerrit.server.mail.send.VelocityRuntimeProvider;
import com.google.gerrit.server.mime.FileTypeRegistry;
import com.google.gerrit.server.mime.MimeUtilFileTypeRegistry;
import com.google.gerrit.server.notedb.NoteDbModule;

View File

@ -22,7 +22,7 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.mail.MergedSender;
import com.google.gerrit.server.mail.send.MergedSender;
import com.google.gerrit.server.util.RequestContext;
import com.google.gerrit.server.util.ThreadLocalRequestContext;
import com.google.gwtorm.server.OrmException;

View File

@ -28,7 +28,7 @@ import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.extensions.events.ChangeMerged;
import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.mail.MergedSender;
import com.google.gerrit.server.mail.send.MergedSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.patch.PatchSetInfoFactory;
import com.google.gerrit.server.util.RequestScopePropagator;

View File

@ -45,7 +45,7 @@ import com.google.gerrit.server.git.BatchUpdate.Context;
import com.google.gerrit.server.git.BatchUpdate.RepoContext;
import com.google.gerrit.server.git.ReceiveCommits.MagicBranchInput;
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.mail.send.ReplacePatchSetSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchChangeException;

View File

@ -14,6 +14,8 @@
package com.google.gerrit.server.mail;
import com.google.gerrit.server.mail.send.EmailHeader;
public class Address {
public static Address parse(final String in) {
final int lt = in.indexOf('<');

View File

@ -15,6 +15,12 @@
package com.google.gerrit.server.mail;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.gerrit.server.mail.send.AbandonedSender;
import com.google.gerrit.server.mail.send.CommentSender;
import com.google.gerrit.server.mail.send.DeleteReviewerSender;
import com.google.gerrit.server.mail.send.DeleteVoteSender;
import com.google.gerrit.server.mail.send.RestoredSender;
import com.google.gerrit.server.mail.send.RevertedSender;
public class EmailModule extends FactoryModule {
@Override

View File

@ -16,6 +16,7 @@ package com.google.gerrit.server.mail;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.server.account.AuthRequest;
import com.google.gerrit.server.mail.send.RegisterNewEmailSender;
/** Verifies the token sent by {@link RegisterNewEmailSender}. */
public interface EmailTokenVerifier {

View File

@ -18,6 +18,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.server.config.AuthConfig;
import com.google.gerrit.server.mail.send.RegisterNewEmailSender;
import com.google.gwtjsonrpc.server.SignedToken;
import com.google.gwtjsonrpc.server.ValidToken;
import com.google.gwtjsonrpc.server.XsrfException;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
@ -35,7 +35,7 @@ public class AbandonedSender extends ReplyToChangeSender {
@Assisted Project.NameKey project,
@Assisted Change.Id id)
throws OrmException {
super(ea, "abandon", newChangeData(ea, project, id));
super(ea, "abandon", ChangeEmail.newChangeData(ea, project, id));
}
@Override

View File

@ -12,12 +12,14 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.common.base.Joiner;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.AccountSshKey;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.mail.RecipientType;
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.errors.EmailException;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static com.google.gerrit.server.notedb.ReviewerStateInternal.REVIEWER;
@ -31,7 +31,8 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.StarredChangesUtil;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.mail.ProjectWatch.Watchers;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gerrit.server.mail.send.ProjectWatch.Watchers;
import com.google.gerrit.server.patch.PatchList;
import com.google.gerrit.server.patch.PatchListEntry;
import com.google.gerrit.server.patch.PatchListNotAvailableException;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.common.base.Strings;
import com.google.common.collect.Ordering;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.common.collect.Iterables;
import com.google.gerrit.common.errors.EmailException;
@ -20,7 +20,8 @@ import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.mail.ProjectWatch.Watchers;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gerrit.server.mail.send.ProjectWatch.Watchers;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;

View File

@ -12,13 +12,14 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.registration.DynamicSet;
@ -33,6 +33,7 @@ import com.google.gerrit.server.config.CanonicalWebUrl;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.index.account.AccountIndexCollection;
import com.google.gerrit.server.mail.EmailSettings;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.patch.PatchListCache;
import com.google.gerrit.server.patch.PatchSetInfoFactory;

View File

@ -12,11 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.MoreObjects;
import com.google.gerrit.server.mail.Address;
import java.io.IOException;
import java.io.Writer;
@ -75,7 +76,7 @@ public abstract class EmailHeader {
}
}
static boolean needsQuotedPrintable(java.lang.String value) {
public static boolean needsQuotedPrintable(java.lang.String value) {
for (int i = 0; i < value.length(); i++) {
if (value.charAt(i) < ' ' || '~' < value.charAt(i)) {
return true;
@ -104,7 +105,7 @@ public abstract class EmailHeader {
}
}
static java.lang.String quotedPrintable(java.lang.String value) {
public static java.lang.String quotedPrintable(java.lang.String value) {
final StringBuilder r = new StringBuilder();
r.append("=?UTF-8?Q?");
@ -191,7 +192,7 @@ public abstract class EmailHeader {
void remove(java.lang.String email) {
for (Iterator<Address> i = list.iterator(); i.hasNext();) {
if (i.next().email.equals(email)) {
if (i.next().getEmail().equals(email)) {
i.remove();
}
}

View File

@ -12,10 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.server.mail.Address;
import java.util.Collection;
import java.util.Map;

View File

@ -12,9 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.server.mail.Address;
/** Constructs an address to send email from. */
public interface FromAddressGenerator {

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static java.nio.charset.StandardCharsets.UTF_8;
@ -22,6 +22,8 @@ import com.google.gerrit.server.GerritPersonIdent;
import com.google.gerrit.server.account.AccountCache;
import com.google.gerrit.server.config.AnonymousCowardName;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.mail.MailUtil;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@ -53,7 +55,7 @@ public class FromAddressGeneratorProvider implements
ParameterizedString name = new ParameterizedString("${user} (Code Review)");
generator =
new PatternGen(srvAddr, accountCache, anonymousCowardName, name,
srvAddr.email);
srvAddr.getEmail());
} else if ("USER".equalsIgnoreCase(from)) {
String[] domains = cfg.getStringList("sendemail", null, "allowedDomain");
Pattern domainPattern = MailUtil.glob(domains);
@ -65,13 +67,14 @@ public class FromAddressGeneratorProvider implements
generator = new ServerGen(srvAddr);
} else {
final Address a = Address.parse(from);
final ParameterizedString name = a.name != null ? new ParameterizedString(a.name) : null;
final ParameterizedString name =
a.getName() != null ? new ParameterizedString(a.getName()) : null;
if (name == null || name.getParameterNames().isEmpty()) {
generator = new ServerGen(a);
} else {
generator =
new PatternGen(srvAddr, accountCache, anonymousCowardName, name,
a.email);
a.getEmail());
}
}
}
@ -135,12 +138,12 @@ public class FromAddressGeneratorProvider implements
}
senderName = nameRewriteTmpl.replace("user", fullName).toString();
} else {
senderName = serverAddress.name;
senderName = serverAddress.getName();
}
String senderEmail;
ParameterizedString senderEmailPattern =
new ParameterizedString(serverAddress.email);
new ParameterizedString(serverAddress.getEmail());
if (senderEmailPattern.getParameterNames().isEmpty()) {
senderEmail = senderEmailPattern.getRawPattern();
} else {
@ -215,7 +218,7 @@ public class FromAddressGeneratorProvider implements
senderName = namePattern.replace("user", fullName).toString();
} else {
senderName = serverAddress.name;
senderName = serverAddress.getName();
}
String senderEmail;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.common.io.CharStreams;
import com.google.common.io.Resources;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;

View File

@ -12,10 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gerrit.server.query.change.ChangeData;
import com.google.gwtorm.server.OrmException;

View File

@ -12,14 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.common.collect.Iterables;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.server.mail.ProjectWatch.Watchers;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gerrit.server.mail.send.ProjectWatch.Watchers;
import com.google.gwtorm.server.OrmException;
import org.slf4j.Logger;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static com.google.gerrit.extensions.client.GeneralPreferencesInfo.EmailStrategy.CC_ON_OWN_COMMENTS;
import static com.google.gerrit.extensions.client.GeneralPreferencesInfo.EmailStrategy.DISABLED;
@ -24,7 +24,9 @@ import com.google.gerrit.extensions.client.GeneralPreferencesInfo;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.UserIdentity;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.mail.EmailHeader.AddressList;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gerrit.server.mail.send.EmailHeader.AddressList;
import com.google.gerrit.server.validators.OutgoingEmailValidationListener;
import com.google.gerrit.server.validators.ValidationException;
import com.google.gwtorm.server.OrmException;
@ -201,8 +203,8 @@ public abstract class OutgoingEmail {
// Reply-To header with the current user's email address.
//
final Address a = toAddress(fromId);
if (a != null && !smtpFromAddress.email.equals(a.email)) {
setHeader("Reply-To", a.email);
if (a != null && !smtpFromAddress.getEmail().equals(a.getEmail())) {
setHeader("Reply-To", a.getEmail());
}
}
@ -421,11 +423,11 @@ public abstract class OutgoingEmail {
/** Schedule delivery of this message to the given account. */
protected void add(final RecipientType rt, final Address addr) {
if (addr != null && addr.email != null && addr.email.length() > 0) {
if (!OutgoingEmailValidator.isValid(addr.email)) {
log.warn("Not emailing " + addr.email + " (invalid email address)");
} else if (!args.emailSender.canEmail(addr.email)) {
log.warn("Not emailing " + addr.email + " (prohibited by allowrcpt)");
if (addr != null && addr.getEmail() != null && addr.getEmail().length() > 0) {
if (!OutgoingEmailValidator.isValid(addr.getEmail())) {
log.warn("Not emailing " + addr.getEmail() + " (invalid email address)");
} else if (!args.emailSender.canEmail(addr.getEmail())) {
log.warn("Not emailing " + addr.getEmail() + " (prohibited by allowrcpt)");
} else if (smtpRcptTo.add(addr)) {
switch (rt) {
case TO:
@ -561,7 +563,7 @@ public abstract class OutgoingEmail {
protected void removeUser(Account user) {
String fromEmail = user.getPreferredEmail();
for (Iterator<Address> j = smtpRcptTo.iterator(); j.hasNext();) {
if (j.next().email.equals(fromEmail)) {
if (j.next().getEmail().equals(fromEmail)) {
j.remove();
}
}

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static org.apache.commons.validator.routines.DomainValidator.ArrayType.GENERIC_PLUS;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.common.base.Strings;
import com.google.gerrit.common.data.GroupDescription;
@ -30,6 +30,7 @@ import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.account.WatchConfig.ProjectWatchKey;
import com.google.gerrit.server.git.NotifyConfig;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.server.query.Predicate;
import com.google.gerrit.server.query.QueryParseException;

View File

@ -12,12 +12,15 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.mail.EmailTokenVerifier;
import com.google.gerrit.server.mail.RecipientType;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;

View File

@ -12,13 +12,14 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;

View File

@ -12,11 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.mail.RecipientType;
import com.google.gerrit.server.query.change.ChangeData;
import com.google.gwtorm.server.OrmException;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
@ -35,7 +35,7 @@ public class RestoredSender extends ReplyToChangeSender {
@Assisted Project.NameKey project,
@Assisted Change.Id id)
throws OrmException {
super(ea, "restore", newChangeData(ea, project, id));
super(ea, "restore", ChangeEmail.newChangeData(ea, project, id));
}
@Override

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
@ -33,7 +33,7 @@ public class RevertedSender extends ReplyToChangeSender {
@Assisted Project.NameKey project,
@Assisted Change.Id id)
throws OrmException {
super(ea, "revert", newChangeData(ea, project, id));
super(ea, "revert", ChangeEmail.newChangeData(ea, project, id));
}
@Override

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static java.nio.charset.StandardCharsets.UTF_8;
@ -24,6 +24,7 @@ import com.google.gerrit.common.Version;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.server.config.ConfigUtil;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.mail.Address;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@ -194,9 +195,9 @@ public class SmtpEmailSender implements EmailSender {
try {
final SMTPClient client = open();
try {
if (!client.setSender(from.email)) {
if (!client.setSender(from.getEmail())) {
throw new EmailException("Server " + smtpHost
+ " rejected from address " + from.email);
+ " rejected from address " + from.getEmail());
}
/* Do not prevent the email from being sent to "good" users simply
@ -207,7 +208,7 @@ public class SmtpEmailSender implements EmailSender {
* error(s) logged.
*/
for (Address addr : rcpt) {
if (!client.addRecipient(addr.email)) {
if (!client.addRecipient(addr.getEmail())) {
String error = client.getReplyString();
rejected.append("Server ").append(smtpHost)
.append(" rejected recipient ").append(addr)

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import com.google.gerrit.server.config.SitePaths;
import com.google.inject.Inject;

View File

@ -17,7 +17,7 @@ package com.google.gerrit.server.validators;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.annotations.ExtensionPoint;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.mail.EmailHeader;
import com.google.gerrit.server.mail.send.EmailHeader;
import java.util.Map;
import java.util.Set;

View File

@ -17,6 +17,8 @@ package com.google.gerrit.server.mail;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assert_;
import com.google.gerrit.server.mail.send.OutgoingEmailValidator;
import org.junit.Test;
import java.io.BufferedReader;

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.mail;
package com.google.gerrit.server.mail.send;
import static com.google.common.truth.Truth.assertThat;
import static org.easymock.EasyMock.createStrictMock;
@ -29,6 +29,7 @@ import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
import com.google.gerrit.server.account.AccountCache;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.account.WatchConfig.ProjectWatchKey;
import com.google.gerrit.server.mail.Address;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.PersonIdent;
@ -94,8 +95,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name);
assertThat(r.email).isEqualTo(email);
assertThat(r.getName()).isEqualTo(name);
assertThat(r.getEmail()).isEqualTo(email);
verify(accountCache);
}
@ -109,8 +110,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isNull();
assertThat(r.email).isEqualTo(email);
assertThat(r.getName()).isNull();
assertThat(r.getEmail()).isEqualTo(email);
verify(accountCache);
}
@ -124,8 +125,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name + " (Code Review)");
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(name + " (Code Review)");
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -135,8 +136,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(null);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(ident.getName());
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(ident.getName());
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -151,8 +152,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name);
assertThat(r.email).isEqualTo(email);
assertThat(r.getName()).isEqualTo(name);
assertThat(r.getEmail()).isEqualTo(email);
verify(accountCache);
}
@ -167,8 +168,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name + " (Code Review)");
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(name + " (Code Review)");
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -184,8 +185,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name);
assertThat(r.email).isEqualTo(email);
assertThat(r.getName()).isEqualTo(name);
assertThat(r.getEmail()).isEqualTo(email);
verify(accountCache);
}
@ -201,8 +202,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name + " (Code Review)");
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(name + " (Code Review)");
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -217,8 +218,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name);
assertThat(r.email).isEqualTo(email);
assertThat(r.getName()).isEqualTo(name);
assertThat(r.getEmail()).isEqualTo(email);
verify(accountCache);
}
@ -245,8 +246,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(ident.getName());
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(ident.getName());
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -256,8 +257,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(null);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(ident.getName());
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(ident.getName());
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -284,8 +285,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name + " (Code Review)");
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(name + " (Code Review)");
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -299,8 +300,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo("Anonymous Coward (Code Review)");
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo("Anonymous Coward (Code Review)");
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -314,8 +315,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(name + " (Code Review)");
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(name + " (Code Review)");
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -325,8 +326,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(null);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(ident.getName());
assertThat(r.email).isEqualTo(ident.getEmailAddress());
assertThat(r.getName()).isEqualTo(ident.getName());
assertThat(r.getEmail()).isEqualTo(ident.getEmailAddress());
verify(accountCache);
}
@ -341,8 +342,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo("A " + name + " B");
assertThat(r.email).isEqualTo("my.server@email.address");
assertThat(r.getName()).isEqualTo("A " + name + " B");
assertThat(r.getEmail()).isEqualTo("my.server@email.address");
verify(accountCache);
}
@ -356,8 +357,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(user);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo("A Anonymous Coward B");
assertThat(r.email).isEqualTo("my.server@email.address");
assertThat(r.getName()).isEqualTo("A Anonymous Coward B");
assertThat(r.getEmail()).isEqualTo("my.server@email.address");
verify(accountCache);
}
@ -368,8 +369,8 @@ public class FromAddressGeneratorProviderTest {
replay(accountCache);
final Address r = create().from(null);
assertThat(r).isNotNull();
assertThat(r.name).isEqualTo(ident.getName());
assertThat(r.email).isEqualTo("my.server@email.address");
assertThat(r.getName()).isEqualTo(ident.getName());
assertThat(r.getEmail()).isEqualTo("my.server@email.address");
verify(accountCache);
}

View File

@ -22,8 +22,8 @@ import com.google.common.collect.ImmutableMap;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.mail.Address;
import com.google.gerrit.server.mail.EmailHeader;
import com.google.gerrit.server.mail.EmailSender;
import com.google.gerrit.server.mail.send.EmailHeader;
import com.google.gerrit.server.mail.send.EmailSender;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Singleton;

View File

@ -53,7 +53,7 @@ import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.index.IndexModule;
import com.google.gerrit.server.index.IndexModule.IndexType;
import com.google.gerrit.server.mail.SignedTokenEmailTokenVerifier;
import com.google.gerrit.server.mail.SmtpEmailSender;
import com.google.gerrit.server.mail.send.SmtpEmailSender;
import com.google.gerrit.server.mime.MimeUtil2Module;
import com.google.gerrit.server.notedb.ConfigNotesMigration;
import com.google.gerrit.server.patch.DiffExecutorModule;