MAILET-115 Convert RedirectNotify to interface
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4e81a893 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4e81a893 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4e81a893 Branch: refs/heads/master Commit: 4e81a8934f49234fbaadba3e4acd9d4c46728481 Parents: e59ef33 Author: Antoine Duprat <[email protected]> Authored: Thu Nov 17 16:02:19 2016 +0100 Committer: Benoit Tellier <[email protected]> Committed: Wed Jan 11 10:03:31 2017 +0700 ---------------------------------------------------------------------- .../apache/james/transport/mailets/Bounce.java | 54 +++++++++++--- .../james/transport/mailets/DSNBounce.java | 49 ++++++++++--- .../apache/james/transport/mailets/Forward.java | 54 +++++++++++--- .../transport/mailets/NotifyPostmaster.java | 54 +++++++++++--- .../james/transport/mailets/NotifySender.java | 54 +++++++++++--- .../james/transport/mailets/Redirect.java | 54 +++++++++++--- .../apache/james/transport/mailets/Resend.java | 54 +++++++++++--- .../mailets/redirect/ProcessRedirectNotify.java | 2 +- .../mailets/redirect/RedirectNotify.java | 74 +++++++------------- .../transport/util/SpecialAddressesUtils.java | 26 +++---- .../util/SpecialAddressesUtilsTest.java | 19 ++--- 11 files changed, 341 insertions(+), 153 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java index 2b1d3e2..ad25df2 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java @@ -21,14 +21,16 @@ package org.apache.james.transport.mailets; import java.util.List; +import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import org.apache.james.transport.mailets.redirect.RedirectNotify; +import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters; import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage; import org.apache.james.transport.mailets.redirect.ProcessRedirectNotify; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.redirect.SpecialAddress; import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.james.transport.mailets.utils.MimeMessageUtils; @@ -39,6 +41,7 @@ import org.apache.james.transport.util.SpecialAddressesUtils; import org.apache.james.transport.util.TosUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; +import org.apache.mailet.base.GenericMailet; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; @@ -117,12 +120,13 @@ import com.google.common.collect.ImmutableList; * * @since 2.2.0 */ -public class Bounce extends RedirectNotify { +public class Bounce extends GenericMailet implements RedirectNotify { private static final String[] CONFIGURABLE_PARAMETERS = new String[] { "debug", "passThrough", "fakeDomainCheck", "inline", "attachment", "message", "notice", "sender", "sendingAddress", "prefix", "attachError" }; private static final List<MailAddress> RECIPIENTS = ImmutableList.of(SpecialAddress.REVERSE_PATH); private static final List<InternetAddress> TO = ImmutableList.of(SpecialAddress.REVERSE_PATH.toInternetAddress()); + private DNSService dns; @Override public String getMailetInfo() { @@ -135,10 +139,38 @@ public class Bounce extends RedirectNotify { } @Override - protected String[] getAllowedInitParameters() { + public String[] getAllowedInitParameters() { return CONFIGURABLE_PARAMETERS; } + @Inject + @Override + public void setDNSService(DNSService dns) { + this.dns = dns; + } + + @Override + public DNSService getDNSService() { + return dns; + } + + @Override + public void init() throws MessagingException { + if (getInitParameters().isDebug()) { + log("Initializing"); + } + + // check that all init parameters have been declared in + // allowedInitParameters + checkInitParameters(getAllowedInitParameters()); + + if (getInitParameters().isStatic()) { + if (getInitParameters().isDebug()) { + log(getInitParameters().asString()); + } + } + } + @Override public String getMessage(Mail originalMail) throws MessagingException { return new NotifyMailetsMessage().generateMessage(getInitParameters().getMessage(), originalMail); @@ -150,7 +182,7 @@ public class Bounce extends RedirectNotify { } @Override - protected List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { + public List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { return RecipientsUtils.from(this).getRecipients(originalMail); } @@ -160,7 +192,7 @@ public class Bounce extends RedirectNotify { } @Override - protected List<MailAddress> getTo(Mail originalMail) throws MessagingException { + public List<MailAddress> getTo(Mail originalMail) throws MessagingException { return TosUtils.from(this).getTo(originalMail); } @@ -170,17 +202,17 @@ public class Bounce extends RedirectNotify { } @Override - protected MailAddress getReplyTo(Mail originalMail) throws MessagingException { + public MailAddress getReplyTo(Mail originalMail) throws MessagingException { return ReplyToUtils.from(getReplyTo()).getReplyTo(originalMail); } @Override - protected MailAddress getReversePath(Mail originalMail) { + public MailAddress getReversePath(Mail originalMail) { return SpecialAddress.NULL; } @Override - protected MailAddress getReversePath() throws MessagingException { + public MailAddress getReversePath() throws MessagingException { return SpecialAddressesUtils.from(this) .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), RedirectNotify.REVERSE_PATH_ALLOWED_SPECIALS); } @@ -192,12 +224,12 @@ public class Bounce extends RedirectNotify { } @Override - protected Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { + public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { return SenderUtils.from(getSender()).getSender(originalMail); } @Override - protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { return new MimeMessageUtils(originalMail.getMessage()).subjectWithPrefix(subjectPrefix); } @@ -223,7 +255,7 @@ public class Bounce extends RedirectNotify { } @Override - protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { return new MimeMessageModifier(originalMail.getMessage()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java index 33fba54..a88f4ae 100755 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java @@ -25,6 +25,7 @@ import java.util.Date; import java.util.List; import java.util.regex.Pattern; +import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.internet.InternetAddress; @@ -32,6 +33,7 @@ import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import org.apache.james.core.MailImpl; +import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.MailModifier; import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters; @@ -50,6 +52,7 @@ import org.apache.james.transport.util.TosUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; import org.apache.mailet.base.DateFormats; +import org.apache.mailet.base.GenericMailet; import org.apache.mailet.base.RFC2822Headers; import org.apache.mailet.base.StringUtils; import org.apache.mailet.base.mail.MimeMultipartReport; @@ -97,7 +100,7 @@ import com.google.common.collect.ImmutableList; * @see org.apache.james.transport.mailets.AbstractNotify */ -public class DSNBounce extends RedirectNotify { +public class DSNBounce extends GenericMailet implements RedirectNotify { private static final String[] CONFIGURABLE_PARAMETERS = new String[]{ "debug", "passThrough", "messageString", "attachment", "sender", "prefix" }; private static final List<MailAddress> RECIPIENT_MAIL_ADDRESSES = ImmutableList.of(SpecialAddress.REVERSE_PATH); @@ -109,10 +112,23 @@ public class DSNBounce extends RedirectNotify { private static final String LINE_BREAK = "\n"; private String messageString = null; + private DNSService dns; @Override public void init() throws MessagingException { - super.init(); + if (getInitParameters().isDebug()) { + log("Initializing"); + } + + // check that all init parameters have been declared in + // allowedInitParameters + checkInitParameters(getAllowedInitParameters()); + + if (getInitParameters().isStatic()) { + if (getInitParameters().isDebug()) { + log(getInitParameters().asString()); + } + } messageString = getInitParameter("messageString", "Hi. This is the James mail server at [machine].\nI'm afraid I wasn't able to deliver your message to the following addresses.\nThis is a permanent error; I've given up. Sorry it didn't work out. Below\nI include the list of recipients and the reason why I was unable to deliver\nyour message.\n"); } @@ -128,10 +144,21 @@ public class DSNBounce extends RedirectNotify { } @Override - protected String[] getAllowedInitParameters() { + public String[] getAllowedInitParameters() { return CONFIGURABLE_PARAMETERS; } + @Inject + @Override + public void setDNSService(DNSService dns) { + this.dns = dns; + } + + @Override + public DNSService getDNSService() { + return dns; + } + @Override public String getMessage(Mail originalMail) throws MessagingException { return new NotifyMailetsMessage().generateMessage(getInitParameters().getMessage(), originalMail); @@ -143,7 +170,7 @@ public class DSNBounce extends RedirectNotify { } @Override - protected List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { + public List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { return RecipientsUtils.from(this).getRecipients(originalMail); } @@ -153,7 +180,7 @@ public class DSNBounce extends RedirectNotify { } @Override - protected List<MailAddress> getTo(Mail originalMail) throws MessagingException { + public List<MailAddress> getTo(Mail originalMail) throws MessagingException { return TosUtils.from(this).getTo(originalMail); } @@ -163,18 +190,18 @@ public class DSNBounce extends RedirectNotify { } @Override - protected MailAddress getReplyTo(Mail originalMail) throws MessagingException { + public MailAddress getReplyTo(Mail originalMail) throws MessagingException { return ReplyToUtils.from(getReplyTo()).getReplyTo(originalMail); } @Override - protected MailAddress getReversePath() throws MessagingException { + public MailAddress getReversePath() throws MessagingException { return SpecialAddressesUtils.from(this) .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), RedirectNotify.REVERSE_PATH_ALLOWED_SPECIALS); } @Override - protected MailAddress getReversePath(Mail originalMail) { + public MailAddress getReversePath(Mail originalMail) { return SpecialAddress.NULL; } @@ -185,12 +212,12 @@ public class DSNBounce extends RedirectNotify { } @Override - protected Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { + public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { return SenderUtils.from(getSender()).getSender(originalMail); } @Override - protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { return new MimeMessageUtils(originalMail.getMessage()).subjectWithPrefix(subjectPrefix); } @@ -411,7 +438,7 @@ public class DSNBounce extends RedirectNotify { } @Override - protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { return new MimeMessageModifier(originalMail.getMessage()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java index fcab123..fda5f23 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java @@ -21,15 +21,17 @@ package org.apache.james.transport.mailets; import java.util.List; +import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; -import org.apache.james.transport.mailets.redirect.RedirectNotify; +import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.redirect.AddressExtractor; import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.ProcessRedirectNotify; import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.redirect.TypeCode; import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.james.transport.util.RecipientsUtils; @@ -38,6 +40,7 @@ import org.apache.james.transport.util.SenderUtils; import org.apache.james.transport.util.TosUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; +import org.apache.mailet.base.GenericMailet; import com.google.common.base.Optional; import com.google.common.base.Strings; @@ -87,12 +90,13 @@ import com.google.common.collect.ImmutableList; * for backward compatibility. * </p> */ -public class Forward extends RedirectNotify { +public class Forward extends GenericMailet implements RedirectNotify { private static final String[] CONFIGURABLE_PARAMETERS = new String[] { "debug", "passThrough", "fakeDomainCheck", "forwardto", "forwardTo" }; private static final List<String> ALLOWED_SPECIALS = ImmutableList.of( "postmaster", "sender", "from", "replyTo", "reversePath", "unaltered", "recipients", "to", "null"); + private DNSService dns; @Override public String getMailetInfo() { @@ -105,10 +109,38 @@ public class Forward extends RedirectNotify { } @Override - protected String[] getAllowedInitParameters() { + public String[] getAllowedInitParameters() { return CONFIGURABLE_PARAMETERS; } + @Inject + @Override + public void setDNSService(DNSService dns) { + this.dns = dns; + } + + @Override + public DNSService getDNSService() { + return dns; + } + + @Override + public void init() throws MessagingException { + if (getInitParameters().isDebug()) { + log("Initializing"); + } + + // check that all init parameters have been declared in + // allowedInitParameters + checkInitParameters(getAllowedInitParameters()); + + if (getInitParameters().isStatic()) { + if (getInitParameters().isDebug()) { + log(getInitParameters().asString()); + } + } + } + @Override public String getMessage(Mail originalMail) throws MessagingException { return getInitParameters().getMessage(); @@ -124,7 +156,7 @@ public class Forward extends RedirectNotify { } @Override - protected List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { + public List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { return RecipientsUtils.from(this).getRecipients(originalMail); } @@ -164,7 +196,7 @@ public class Forward extends RedirectNotify { } @Override - protected List<MailAddress> getTo(Mail originalMail) throws MessagingException { + public List<MailAddress> getTo(Mail originalMail) throws MessagingException { return TosUtils.from(this).getTo(originalMail); } @@ -174,17 +206,17 @@ public class Forward extends RedirectNotify { } @Override - protected MailAddress getReplyTo(Mail originalMail) throws MessagingException { + public MailAddress getReplyTo(Mail originalMail) throws MessagingException { return ReplyToUtils.from(getReplyTo()).getReplyTo(originalMail); } @Override - protected MailAddress getReversePath() throws MessagingException { + public MailAddress getReversePath() throws MessagingException { return null; } @Override - protected MailAddress getReversePath(Mail originalMail) throws MessagingException { + public MailAddress getReversePath(Mail originalMail) throws MessagingException { return null; } @@ -194,17 +226,17 @@ public class Forward extends RedirectNotify { } @Override - protected Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { + public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { return SenderUtils.from(getSender()).getSender(originalMail); } @Override - protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { return Optional.absent(); } @Override - protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { return new MimeMessageModifier(newMail.getMessage()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java index 47f6ece..9c1684b 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java @@ -21,15 +21,17 @@ package org.apache.james.transport.mailets; import java.util.List; +import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import org.apache.james.transport.mailets.redirect.RedirectNotify; +import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.redirect.AddressExtractor; import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters; import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage; import org.apache.james.transport.mailets.redirect.ProcessRedirectNotify; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.redirect.SpecialAddress; import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.james.transport.mailets.utils.MimeMessageUtils; @@ -41,6 +43,7 @@ import org.apache.james.transport.util.TosUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; import org.apache.mailet.MailetConfig; +import org.apache.mailet.base.GenericMailet; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; @@ -117,13 +120,14 @@ import com.google.common.collect.ImmutableList; * are kept for backward compatibility. * </p> */ -public class NotifyPostmaster extends RedirectNotify { +public class NotifyPostmaster extends GenericMailet implements RedirectNotify { private static final String[] CONFIGURABLE_PARAMETERS = new String[]{ "debug", "passThrough", "fakeDomainCheck", "inline", "attachment", "message", "notice", "sender", "sendingAddress", "prefix", "attachError", "to" }; private static final List<String> ALLOWED_SPECIALS = ImmutableList.of("postmaster", "unaltered"); private Optional<String> to = Optional.absent(); + private DNSService dns; @Override public void init(MailetConfig mailetConfig) throws MessagingException { @@ -142,10 +146,38 @@ public class NotifyPostmaster extends RedirectNotify { } @Override - protected String[] getAllowedInitParameters() { + public String[] getAllowedInitParameters() { return CONFIGURABLE_PARAMETERS; } + @Inject + @Override + public void setDNSService(DNSService dns) { + this.dns = dns; + } + + @Override + public DNSService getDNSService() { + return dns; + } + + @Override + public void init() throws MessagingException { + if (getInitParameters().isDebug()) { + log("Initializing"); + } + + // check that all init parameters have been declared in + // allowedInitParameters + checkInitParameters(getAllowedInitParameters()); + + if (getInitParameters().isStatic()) { + if (getInitParameters().isDebug()) { + log(getInitParameters().asString()); + } + } + } + @Override public String getMessage(Mail originalMail) throws MessagingException { return new NotifyMailetsMessage().generateMessage(getInitParameters().getMessage(), originalMail); @@ -157,7 +189,7 @@ public class NotifyPostmaster extends RedirectNotify { } @Override - protected List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { + public List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { return RecipientsUtils.from(this).getRecipients(originalMail); } @@ -176,7 +208,7 @@ public class NotifyPostmaster extends RedirectNotify { } @Override - protected List<MailAddress> getTo(Mail originalMail) throws MessagingException { + public List<MailAddress> getTo(Mail originalMail) throws MessagingException { return TosUtils.from(this).getTo(originalMail); } @@ -186,18 +218,18 @@ public class NotifyPostmaster extends RedirectNotify { } @Override - protected MailAddress getReplyTo(Mail originalMail) throws MessagingException { + public MailAddress getReplyTo(Mail originalMail) throws MessagingException { return ReplyToUtils.from(getReplyTo()).getReplyTo(originalMail); } @Override - protected MailAddress getReversePath() throws MessagingException { + public MailAddress getReversePath() throws MessagingException { return SpecialAddressesUtils.from(this) .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), RedirectNotify.REVERSE_PATH_ALLOWED_SPECIALS); } @Override - protected MailAddress getReversePath(Mail originalMail) throws MessagingException { + public MailAddress getReversePath(Mail originalMail) throws MessagingException { return getSender(originalMail).orNull(); } @@ -208,17 +240,17 @@ public class NotifyPostmaster extends RedirectNotify { } @Override - protected Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { + public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { return SenderUtils.from(getSender()).getSender(originalMail); } @Override - protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { return new MimeMessageUtils(originalMail.getMessage()).subjectWithPrefix(subjectPrefix); } @Override - protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { return new MimeMessageModifier(originalMail.getMessage()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java index 11a46cb..c018706 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java @@ -21,15 +21,17 @@ package org.apache.james.transport.mailets; import java.util.List; +import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import org.apache.james.transport.mailets.redirect.RedirectNotify; +import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.redirect.AddressExtractor; import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters; import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage; import org.apache.james.transport.mailets.redirect.ProcessRedirectNotify; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.redirect.SpecialAddress; import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.james.transport.mailets.utils.MimeMessageUtils; @@ -41,6 +43,7 @@ import org.apache.james.transport.util.TosUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; import org.apache.mailet.MailetConfig; +import org.apache.mailet.base.GenericMailet; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; @@ -116,7 +119,7 @@ import com.google.common.collect.ImmutableList; * are kept for backward compatibility. * </p> */ -public class NotifySender extends RedirectNotify { +public class NotifySender extends GenericMailet implements RedirectNotify { private static final String[] CONFIGURABLE_PARAMETERS = new String[]{ "debug", "passThrough", "fakeDomainCheck", "inline", "attachment", "message", "notice", "sender", "sendingAddress", "prefix", "attachError", "to" }; @@ -124,6 +127,7 @@ public class NotifySender extends RedirectNotify { private static final List<String> ALLOWED_SPECIALS = ImmutableList.of("sender", "unaltered", "from"); private Optional<String> to = Optional.absent(); + private DNSService dns; @Override public void init(MailetConfig mailetConfig) throws MessagingException { @@ -142,10 +146,38 @@ public class NotifySender extends RedirectNotify { } @Override - protected String[] getAllowedInitParameters() { + public String[] getAllowedInitParameters() { return CONFIGURABLE_PARAMETERS; } + @Inject + @Override + public void setDNSService(DNSService dns) { + this.dns = dns; + } + + @Override + public DNSService getDNSService() { + return dns; + } + + @Override + public void init() throws MessagingException { + if (getInitParameters().isDebug()) { + log("Initializing"); + } + + // check that all init parameters have been declared in + // allowedInitParameters + checkInitParameters(getAllowedInitParameters()); + + if (getInitParameters().isStatic()) { + if (getInitParameters().isDebug()) { + log(getInitParameters().asString()); + } + } + } + @Override public String getMessage(Mail originalMail) throws MessagingException { return new NotifyMailetsMessage().generateMessage(getInitParameters().getMessage(), originalMail); @@ -157,7 +189,7 @@ public class NotifySender extends RedirectNotify { } @Override - protected List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { + public List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { return RecipientsUtils.from(this).getRecipients(originalMail); } @@ -176,7 +208,7 @@ public class NotifySender extends RedirectNotify { } @Override - protected List<MailAddress> getTo(Mail originalMail) throws MessagingException { + public List<MailAddress> getTo(Mail originalMail) throws MessagingException { return TosUtils.from(this).getTo(originalMail); } @@ -186,18 +218,18 @@ public class NotifySender extends RedirectNotify { } @Override - protected MailAddress getReplyTo(Mail originalMail) throws MessagingException { + public MailAddress getReplyTo(Mail originalMail) throws MessagingException { return ReplyToUtils.from(getReplyTo()).getReplyTo(originalMail); } @Override - protected MailAddress getReversePath() throws MessagingException { + public MailAddress getReversePath() throws MessagingException { return SpecialAddressesUtils.from(this) .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), RedirectNotify.REVERSE_PATH_ALLOWED_SPECIALS); } @Override - protected MailAddress getReversePath(Mail originalMail) throws MessagingException { + public MailAddress getReversePath(Mail originalMail) throws MessagingException { return getSender(originalMail).orNull(); } @@ -208,17 +240,17 @@ public class NotifySender extends RedirectNotify { } @Override - protected Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { + public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { return SenderUtils.from(getSender()).getSender(originalMail); } @Override - protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { return new MimeMessageUtils(originalMail.getMessage()).subjectWithPrefix(subjectPrefix); } @Override - protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { return new MimeMessageModifier(originalMail.getMessage()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java index 1e86f56..e5c25d1 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java @@ -21,14 +21,16 @@ package org.apache.james.transport.mailets; import java.util.List; +import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import org.apache.james.transport.mailets.redirect.RedirectNotify; +import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.redirect.AddressExtractor; import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.ProcessRedirectNotify; import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.redirect.TypeCode; import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.james.transport.mailets.utils.MimeMessageUtils; @@ -40,6 +42,7 @@ import org.apache.james.transport.util.SpecialAddressesUtils; import org.apache.james.transport.util.TosUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; +import org.apache.mailet.base.GenericMailet; import com.google.common.base.Optional; import com.google.common.base.Strings; @@ -296,12 +299,13 @@ import com.google.common.collect.ImmutableList; * </p> */ -public class Redirect extends RedirectNotify { +public class Redirect extends GenericMailet implements RedirectNotify { private static final String[] CONFIGURABLE_PARAMETERS = new String[] { "static", "debug", "passThrough", "fakeDomainCheck", "inline", "attachment", "message", "recipients", "to", "replyTo", "replyto", "reversePath", "sender", "subject", "prefix", "attachError", "isReply" }; private static final List<String> ALLOWED_SPECIALS = ImmutableList.of( "postmaster", "sender", "from", "replyTo", "reversePath", "unaltered", "recipients", "to", "null"); + private DNSService dns; @Override public String getMailetInfo() { @@ -314,10 +318,38 @@ public class Redirect extends RedirectNotify { } @Override - protected String[] getAllowedInitParameters() { + public String[] getAllowedInitParameters() { return CONFIGURABLE_PARAMETERS; } + @Inject + @Override + public void setDNSService(DNSService dns) { + this.dns = dns; + } + + @Override + public DNSService getDNSService() { + return dns; + } + + @Override + public void init() throws MessagingException { + if (getInitParameters().isDebug()) { + log("Initializing"); + } + + // check that all init parameters have been declared in + // allowedInitParameters + checkInitParameters(getAllowedInitParameters()); + + if (getInitParameters().isStatic()) { + if (getInitParameters().isDebug()) { + log(getInitParameters().asString()); + } + } + } + @Override public String getMessage(Mail originalMail) throws MessagingException { return getInitParameters().getMessage(); @@ -347,7 +379,7 @@ public class Redirect extends RedirectNotify { } @Override - protected List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { + public List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { return RecipientsUtils.from(this).getRecipients(originalMail); } @@ -371,7 +403,7 @@ public class Redirect extends RedirectNotify { } @Override - protected List<MailAddress> getTo(Mail originalMail) throws MessagingException { + public List<MailAddress> getTo(Mail originalMail) throws MessagingException { return TosUtils.from(this).getTo(originalMail); } @@ -392,18 +424,18 @@ public class Redirect extends RedirectNotify { } @Override - protected MailAddress getReplyTo(Mail originalMail) throws MessagingException { + public MailAddress getReplyTo(Mail originalMail) throws MessagingException { return ReplyToUtils.from(getReplyTo()).getReplyTo(originalMail); } @Override - protected MailAddress getReversePath() throws MessagingException { + public MailAddress getReversePath() throws MessagingException { return SpecialAddressesUtils.from(this) .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), ImmutableList.of("postmaster", "sender", "null")); } @Override - protected MailAddress getReversePath(Mail originalMail) throws MessagingException { + public MailAddress getReversePath(Mail originalMail) throws MessagingException { MailAddress reversePath = retrieveReversePath(); if (reversePath != null) { return reversePath; @@ -428,17 +460,17 @@ public class Redirect extends RedirectNotify { } @Override - protected Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { + public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { return SenderUtils.from(getSender()).getSender(originalMail); } @Override - protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { return new MimeMessageUtils(newMail.getMessage()).subjectWithPrefix(subjectPrefix, originalMail, getInitParameters().getSubject()); } @Override - protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { return new MimeMessageModifier(newMail.getMessage()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java index bde2c78..c1cfe12 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java @@ -21,14 +21,16 @@ package org.apache.james.transport.mailets; import java.util.List; +import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import org.apache.james.transport.mailets.redirect.RedirectNotify; +import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.redirect.AddressExtractor; import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.ProcessRedirectNotify; import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.james.transport.mailets.utils.MimeMessageUtils; import org.apache.james.transport.util.MailAddressUtils; @@ -39,6 +41,7 @@ import org.apache.james.transport.util.SpecialAddressesUtils; import org.apache.james.transport.util.TosUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; +import org.apache.mailet.base.GenericMailet; import com.google.common.base.Optional; import com.google.common.base.Strings; @@ -291,10 +294,11 @@ import com.google.common.collect.ImmutableList; * @since 2.2.0 */ -public class Resend extends RedirectNotify { +public class Resend extends GenericMailet implements RedirectNotify { private static final String[] CONFIGURABLE_PARAMETERS = new String[] { "debug", "passThrough", "fakeDomainCheck", "inline", "attachment", "message", "recipients", "to", "replyTo", "replyto", "reversePath", "sender", "subject", "prefix", "attachError", "isReply" }; + private DNSService dns; @Override public String getMailetInfo() { @@ -307,10 +311,38 @@ public class Resend extends RedirectNotify { } @Override - protected String[] getAllowedInitParameters() { + public String[] getAllowedInitParameters() { return CONFIGURABLE_PARAMETERS; } + @Inject + @Override + public void setDNSService(DNSService dns) { + this.dns = dns; + } + + @Override + public DNSService getDNSService() { + return dns; + } + + @Override + public void init() throws MessagingException { + if (getInitParameters().isDebug()) { + log("Initializing"); + } + + // check that all init parameters have been declared in + // allowedInitParameters + checkInitParameters(getAllowedInitParameters()); + + if (getInitParameters().isStatic()) { + if (getInitParameters().isDebug()) { + log(getInitParameters().asString()); + } + } + } + @Override public String getMessage(Mail originalMail) throws MessagingException { return getInitParameters().getMessage(); @@ -325,7 +357,7 @@ public class Resend extends RedirectNotify { } @Override - protected List<MailAddress> getTo(Mail originalMail) throws MessagingException { + public List<MailAddress> getTo(Mail originalMail) throws MessagingException { return TosUtils.from(this).getTo(originalMail); } @@ -346,7 +378,7 @@ public class Resend extends RedirectNotify { } @Override - protected MailAddress getReplyTo(Mail originalMail) throws MessagingException { + public MailAddress getReplyTo(Mail originalMail) throws MessagingException { return ReplyToUtils.from(getReplyTo()).getReplyTo(originalMail); } @@ -363,18 +395,18 @@ public class Resend extends RedirectNotify { } @Override - protected List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { + public List<MailAddress> getRecipients(Mail originalMail) throws MessagingException { return RecipientsUtils.from(this).getRecipients(originalMail); } @Override - protected MailAddress getReversePath() throws MessagingException { + public MailAddress getReversePath() throws MessagingException { return SpecialAddressesUtils.from(this) .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), RedirectNotify.REVERSE_PATH_ALLOWED_SPECIALS); } @Override - protected MailAddress getReversePath(Mail originalMail) throws MessagingException { + public MailAddress getReversePath(Mail originalMail) throws MessagingException { MailAddress reversePath = getReversePath(); if (reversePath != null) { if (MailAddressUtils.isUnalteredOrReversePathOrSender(reversePath)) { @@ -391,17 +423,17 @@ public class Resend extends RedirectNotify { } @Override - protected Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { + public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException { return SenderUtils.from(getSender()).getSender(originalMail); } @Override - protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { return new MimeMessageUtils(newMail.getMessage()).subjectWithPrefix(subjectPrefix, originalMail, getInitParameters().getSubject()); } @Override - protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { return new MimeMessageModifier(newMail.getMessage()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java index df4eba4..cd7d5e3 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java @@ -49,7 +49,7 @@ public class ProcessRedirectNotify { MailModifier mailModifier = MailModifier.builder() .mailet(mailet) .mail(newMail) - .dns(mailet.dns) + .dns(mailet.getDNSService()) .build(); mailModifier.setRemoteAddr(); mailModifier.setRemoteHost(); http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java index aa5c19e..c72fad5 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java @@ -21,7 +21,6 @@ package org.apache.james.transport.mailets.redirect; import java.util.List; -import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; @@ -30,7 +29,8 @@ import org.apache.james.transport.mailets.Redirect; import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; -import org.apache.mailet.base.GenericMailet; +import org.apache.mailet.Mailet; +import org.apache.mailet.MailetConfig; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; @@ -134,21 +134,21 @@ import com.google.common.collect.ImmutableList; * @since 2.2.0 */ -public abstract class RedirectNotify extends GenericMailet { +public interface RedirectNotify extends Mailet, MailetConfig { - public static final List<String> REVERSE_PATH_ALLOWED_SPECIALS = ImmutableList.of("postmaster", "sender", "null", "unaltered"); - public static final List<String> SENDER_ALLOWED_SPECIALS = ImmutableList.of("postmaster", "sender", "unaltered"); + List<String> REVERSE_PATH_ALLOWED_SPECIALS = ImmutableList.of("postmaster", "sender", "null", "unaltered"); + List<String> SENDER_ALLOWED_SPECIALS = ImmutableList.of("postmaster", "sender", "unaltered"); - public abstract InitParameters getInitParameters(); + InitParameters getInitParameters(); - protected abstract String[] getAllowedInitParameters(); + String[] getAllowedInitParameters(); - protected DNSService dns; + void setDNSService(DNSService dns); - @Inject - public void setDNSService(DNSService dns) { - this.dns = dns; - } + DNSService getDNSService(); + + void log(String message); + void log(String message, Throwable t); /** * Gets the <code>message</code> property, built dynamically using the @@ -156,7 +156,7 @@ public abstract class RedirectNotify extends GenericMailet { * * @return {@link #getMessage()} */ - public abstract String getMessage(Mail originalMail) throws MessagingException; + String getMessage(Mail originalMail) throws MessagingException; /** * Gets the <code>recipients</code> property. Returns the collection of @@ -172,7 +172,7 @@ public abstract class RedirectNotify extends GenericMailet { * <code>SpecialAddress.RECIPIENTS</code> or <code>null</code> if * missing */ - public abstract List<MailAddress> getRecipients() throws MessagingException; + List<MailAddress> getRecipients() throws MessagingException; /** * Gets the <code>recipients</code> property, built dynamically using the @@ -180,7 +180,7 @@ public abstract class RedirectNotify extends GenericMailet { * * @return {@link #replaceMailAddresses} on {@link #getRecipients()}, */ - protected abstract List<MailAddress> getRecipients(Mail originalMail) throws MessagingException; + List<MailAddress> getRecipients(Mail originalMail) throws MessagingException; /** * Gets the <code>to</code> property. Returns the "To:" recipients of the @@ -194,7 +194,7 @@ public abstract class RedirectNotify extends GenericMailet { * <code>SpecialAddress.UNALTERED</code> or * <code>SpecialAddress.TO</code> or <code>null</code> if missing */ - public abstract List<InternetAddress> getTo() throws MessagingException; + List<InternetAddress> getTo() throws MessagingException; /** * Gets the <code>to</code> property, built dynamically using the original @@ -204,7 +204,7 @@ public abstract class RedirectNotify extends GenericMailet { * * @return {@link #replaceInternetAddresses} on {@link #getRecipients()}, */ - protected abstract List<MailAddress> getTo(Mail originalMail) throws MessagingException; + List<MailAddress> getTo(Mail originalMail) throws MessagingException; /** * Gets the <code>replyto</code> property. Returns the Reply-To address of @@ -215,7 +215,7 @@ public abstract class RedirectNotify extends GenericMailet { * <code>SpecialAddress.UNALTERED</code> or * <code>SpecialAddress.NULL</code> or <code>null</code> if missing */ - public abstract MailAddress getReplyTo() throws MessagingException; + MailAddress getReplyTo() throws MessagingException; /** * Gets the <code>replyTo</code> property, built dynamically using the @@ -225,7 +225,7 @@ public abstract class RedirectNotify extends GenericMailet { * <code>SpecialAddress.UNALTERED</code> if applicable with null and * <code>SpecialAddress.SENDER</code> with the original mail sender */ - protected abstract MailAddress getReplyTo(Mail originalMail) throws MessagingException; + MailAddress getReplyTo(Mail originalMail) throws MessagingException; /** * Gets the <code>reversePath</code> property. Returns the reverse-path of @@ -237,7 +237,7 @@ public abstract class RedirectNotify extends GenericMailet { * <code>SpecialAddress.UNALTERED</code> or <code>null</code> if * missing */ - protected abstract MailAddress getReversePath() throws MessagingException; + MailAddress getReversePath() throws MessagingException; /** * Gets the <code>reversePath</code> property, built dynamically using the @@ -250,7 +250,7 @@ public abstract class RedirectNotify extends GenericMailet { * but not replacing <code>SpecialAddress.NULL</code> that will be * handled by {@link #setReversePath} */ - protected abstract MailAddress getReversePath(Mail originalMail) throws MessagingException; + MailAddress getReversePath(Mail originalMail) throws MessagingException; /** * Gets the <code>sender</code> property. Returns the new sender as a @@ -261,7 +261,7 @@ public abstract class RedirectNotify extends GenericMailet { * <code>SpecialAddress.UNALTERED</code> or <code>null</code> if * missing */ - public abstract MailAddress getSender() throws MessagingException; + MailAddress getSender() throws MessagingException; /** * Gets the <code>sender</code> property, built dynamically using the @@ -271,36 +271,14 @@ public abstract class RedirectNotify extends GenericMailet { * <code>SpecialAddress.UNALTERED</code> and * <code>SpecialAddress.SENDER</code> if applicable with null */ - protected abstract Optional<MailAddress> getSender(Mail originalMail) throws MessagingException; + Optional<MailAddress> getSender(Mail originalMail) throws MessagingException; /** * Builds the subject of <i>newMail</i> appending the subject of * <i>originalMail</i> to <i>subjectPrefix</i>. Is a "setX(Mail, Tx, Mail)" * method. */ - protected abstract Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException; - - /** - * Mailet initialization routine. Will setup static values for each "x" - * initialization parameter in config.xml, using getX(), if - * {@link #isStatic()} returns true. - */ - @Override - public void init() throws MessagingException { - if (getInitParameters().isDebug()) { - log("Initializing"); - } - - // check that all init parameters have been declared in - // allowedInitParameters - checkInitParameters(getAllowedInitParameters()); - - if (getInitParameters().isStatic()) { - if (getInitParameters().isDebug()) { - log(getInitParameters().asString()); - } - } - } + Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException; /** * Service does the hard work,and redirects the originalMail in the form @@ -310,7 +288,7 @@ public abstract class RedirectNotify extends GenericMailet { * @throws MessagingException if a problem arises formulating the redirected mail */ @Override - public abstract void service(Mail originalMail) throws MessagingException; + void service(Mail originalMail) throws MessagingException; - protected abstract MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException; + MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException; } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java index 707925d..dc4912d 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java @@ -27,11 +27,11 @@ import javax.mail.internet.InternetAddress; import javax.mail.internet.ParseException; import org.apache.james.transport.mailets.redirect.AddressExtractor; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.redirect.SpecialAddress; import org.apache.james.transport.mailets.redirect.SpecialAddressKind; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; -import org.apache.mailet.base.GenericMailet; import org.apache.mailet.base.RFC2822Headers; import com.google.common.base.Strings; @@ -41,14 +41,14 @@ import com.google.common.collect.ImmutableSet; public class SpecialAddressesUtils { - public static SpecialAddressesUtils from(GenericMailet genericMailet) { - return new SpecialAddressesUtils(genericMailet); + public static SpecialAddressesUtils from(RedirectNotify mailet) { + return new SpecialAddressesUtils(mailet); } - private final GenericMailet genericMailet; + private final RedirectNotify mailet; - public SpecialAddressesUtils(GenericMailet genericMailet) { - this.genericMailet = genericMailet; + public SpecialAddressesUtils(RedirectNotify genericMailet) { + this.mailet = genericMailet; } /** @@ -123,7 +123,7 @@ public class SpecialAddressesUtils { } return getReplyTos(replyToArray); } catch (MessagingException ae) { - genericMailet.log("Unable to parse the \"REPLY_TO\" header in the original message; ignoring."); + mailet.log("Unable to parse the \"REPLY_TO\" header in the original message; ignoring."); return ImmutableSet.of(); } } @@ -142,7 +142,7 @@ public class SpecialAddressesUtils { try { builder.add(new MailAddress(replyTo)); } catch (ParseException pe) { - genericMailet.log("Unable to parse a \"REPLY_TO\" header address in the original message: " + replyTo + "; ignoring."); + mailet.log("Unable to parse a \"REPLY_TO\" header address in the original message: " + replyTo + "; ignoring."); } } return builder.build(); @@ -200,7 +200,7 @@ public class SpecialAddressesUtils { InternetAddress[] fromArray = (InternetAddress[]) mailWithReplacementAddresses.getMessage().getFrom(); builder.addAll(allOrSender(mailWithReplacementAddresses, fromArray)); } catch (MessagingException me) { - genericMailet.log("Unable to parse the \"FROM\" header in the original message; ignoring."); + mailet.log("Unable to parse the \"FROM\" header in the original message; ignoring."); } break; case REPLY_TO: @@ -208,7 +208,7 @@ public class SpecialAddressesUtils { InternetAddress[] replyToArray = (InternetAddress[]) mailWithReplacementAddresses.getMessage().getReplyTo(); builder.addAll(allOrSender(mailWithReplacementAddresses, replyToArray)); } catch (MessagingException me) { - genericMailet.log("Unable to parse the \"REPLY_TO\" header in the original message; ignoring."); + mailet.log("Unable to parse the \"REPLY_TO\" header in the original message; ignoring."); } break; case TO: @@ -247,13 +247,13 @@ public class SpecialAddressesUtils { InternetAddress[] originalToInternetAddresses = InternetAddress.parse(toHeader, false); return MailAddressUtils.from(originalToInternetAddresses); } catch (MessagingException ae) { - genericMailet.log("Unable to parse a \"TO\" header address in the original message: " + toHeader + "; ignoring."); + mailet.log("Unable to parse a \"TO\" header address in the original message: " + toHeader + "; ignoring."); } } } return ImmutableList.of(); } catch (MessagingException ae) { - genericMailet.log("Unable to parse the \"TO\" header in the original message; ignoring."); + mailet.log("Unable to parse the \"TO\" header in the original message; ignoring."); return ImmutableList.of(); } } @@ -268,7 +268,7 @@ public class SpecialAddressesUtils { } List<MailAddress> extractAddresses = AddressExtractor - .withContext(genericMailet.getMailetContext()) + .withContext(mailet.getMailetContext()) .allowedSpecials(allowedSpecials) .extract(givenAddress); return FluentIterable.from(extractAddresses).first().orNull(); http://git-wip-us.apache.org/repos/asf/james-project/blob/4e81a893/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java index 5388998..369befc 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java @@ -26,16 +26,14 @@ import java.util.Collection; import java.util.List; import java.util.Properties; -import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; +import org.apache.james.transport.mailets.redirect.RedirectNotify; import org.apache.james.transport.mailets.redirect.SpecialAddress; -import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; import org.apache.mailet.MailetContext; -import org.apache.mailet.base.GenericMailet; import org.apache.mailet.base.MailAddressFixture; import org.apache.mailet.base.RFC2822Headers; import org.apache.mailet.base.test.FakeMail; @@ -56,17 +54,10 @@ public class SpecialAddressesUtilsTest { when(mailetContext.getPostmaster()) .thenReturn(postmaster); - testee = SpecialAddressesUtils.from(new GenericMailet() { - - @Override - public MailetContext getMailetContext() { - return mailetContext; - } - - @Override - public void service(Mail mail) throws MessagingException { - } - }); + RedirectNotify mailet = mock(RedirectNotify.class); + when(mailet.getMailetContext()) + .thenReturn(mailetContext); + testee = SpecialAddressesUtils.from(mailet); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
