MAILET-115 Redirect & Notify mailets should be responsible of subject modification
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/03b26599 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/03b26599 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/03b26599 Branch: refs/heads/master Commit: 03b26599a2f3e1ff18409dd6e65643b1b09c7bd8 Parents: 7e5c303 Author: Antoine Duprat <[email protected]> Authored: Tue Nov 15 15:01:16 2016 +0100 Committer: Benoit Tellier <[email protected]> Committed: Wed Jan 11 10:03:30 2017 +0700 ---------------------------------------------------------------------- .../org/apache/james/transport/mailets/Bounce.java | 13 ++++++++----- .../org/apache/james/transport/mailets/DSNBounce.java | 14 +++++++++----- .../org/apache/james/transport/mailets/Forward.java | 13 +++++++------ .../james/transport/mailets/NotifyPostmaster.java | 11 ++++++----- .../apache/james/transport/mailets/NotifySender.java | 12 +++++++----- .../org/apache/james/transport/mailets/Redirect.java | 11 ++++++----- .../org/apache/james/transport/mailets/Resend.java | 12 +++++++----- .../transport/mailets/redirect/AbstractRedirect.java | 8 ++++++-- 8 files changed, 56 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/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 6f35339..e78873d 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 @@ -23,7 +23,6 @@ import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; import org.apache.james.transport.mailets.redirect.AbstractRedirect; import org.apache.james.transport.mailets.redirect.InitParameters; @@ -37,6 +36,7 @@ import org.apache.james.transport.util.SpecialAddressesUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; /** @@ -178,10 +178,8 @@ public class Bounce extends AbstractRedirect { } @Override - protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { - MimeMessage message = originalMail.getMessage(); - new MimeMessageModifier(message) - .replaceSubject(new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix)); + protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + return new MimeMessageUtils(originalMail.getMessage()).subjectWithPrefix(subjectPrefix); } @Override @@ -204,4 +202,9 @@ public class Bounce extends AbstractRedirect { originalMail.setState(Mail.GHOST); } } + + @Override + protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + return new MimeMessageModifier(originalMail.getMessage()); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/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 3dc1ed8..d505874 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 @@ -49,6 +49,7 @@ import org.apache.mailet.base.DateFormats; import org.apache.mailet.base.RFC2822Headers; import org.apache.mailet.base.mail.MimeMultipartReport; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; /** @@ -169,10 +170,8 @@ public class DSNBounce extends AbstractRedirect { } @Override - protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { - MimeMessage message = originalMail.getMessage(); - new MimeMessageModifier(message) - .replaceSubject(new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix)); + protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + return new MimeMessageUtils(originalMail.getMessage()).subjectWithPrefix(subjectPrefix); } @Override @@ -204,7 +203,7 @@ public class DSNBounce extends AbstractRedirect { // Set additional headers setRecipients(newMail, getRecipients(originalMail), originalMail); setTo(newMail, getTo(originalMail), originalMail); - setSubjectPrefix(newMail, getInitParameters().getSubjectPrefix(), originalMail); + getMimeMessageModifier(newMail, originalMail).replaceSubject(getSubjectPrefix(newMail, getInitParameters().getSubjectPrefix(), originalMail)); newMail.getMessage().setHeader(RFC2822Headers.DATE, getDateHeader(originalMail)); setReplyTo(newMail, getReplyTo(originalMail), originalMail); setReversePath(newMail, getReversePath(originalMail), originalMail); @@ -383,4 +382,9 @@ public class DSNBounce extends AbstractRedirect { part.setDisposition("Attachment"); return part; } + + @Override + protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + return new MimeMessageModifier(originalMail.getMessage()); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/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 88d5fa9..76c4a03 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 @@ -24,7 +24,6 @@ import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; import org.apache.james.transport.mailets.redirect.AbstractRedirect; import org.apache.james.transport.mailets.redirect.AddressExtractor; @@ -32,7 +31,6 @@ import org.apache.james.transport.mailets.redirect.InitParameters; import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters; import org.apache.james.transport.mailets.redirect.TypeCode; import org.apache.james.transport.mailets.utils.MimeMessageModifier; -import org.apache.james.transport.mailets.utils.MimeMessageUtils; import org.apache.james.transport.util.RecipientsUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; @@ -182,9 +180,12 @@ public class Forward extends AbstractRedirect { } @Override - protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { - MimeMessage message = newMail.getMessage(); - new MimeMessageModifier(message) - .replaceSubject(new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, originalMail, getInitParameters().getSubject())); + protected Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { + return Optional.absent(); + } + + @Override + protected MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { + return new MimeMessageModifier(newMail.getMessage()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/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 b7b04b2..6c54b94 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 @@ -23,7 +23,6 @@ import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; import org.apache.james.transport.mailets.redirect.AbstractRedirect; import org.apache.james.transport.mailets.redirect.AddressExtractor; @@ -195,10 +194,12 @@ public class NotifyPostmaster extends AbstractRedirect { } @Override - protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { - MimeMessage message = originalMail.getMessage(); - new MimeMessageModifier(message) - .replaceSubject(new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix)); + protected 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 { + return new MimeMessageModifier(originalMail.getMessage()); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/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 66b9c5e..fa92a1f 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 @@ -23,7 +23,6 @@ import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; import org.apache.james.transport.mailets.redirect.AbstractRedirect; import org.apache.james.transport.mailets.redirect.AddressExtractor; @@ -195,9 +194,12 @@ public class NotifySender extends AbstractRedirect { } @Override - protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { - MimeMessage message = originalMail.getMessage(); - new MimeMessageModifier(message) - .replaceSubject(new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix)); + protected 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 { + return new MimeMessageModifier(originalMail.getMessage()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/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 c0e1e28..cf86f9b 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 @@ -23,7 +23,6 @@ import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; import org.apache.james.transport.mailets.redirect.AbstractRedirect; import org.apache.james.transport.mailets.redirect.AddressExtractor; @@ -415,10 +414,12 @@ public class Redirect extends AbstractRedirect { } @Override - protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { - MimeMessage message = newMail.getMessage(); - new MimeMessageModifier(message) - .replaceSubject(new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, originalMail, getInitParameters().getSubject())); + protected 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 { + return new MimeMessageModifier(newMail.getMessage()); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/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 a4701d1..72b8d12 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 @@ -23,7 +23,6 @@ import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; import org.apache.james.transport.mailets.redirect.AbstractRedirect; import org.apache.james.transport.mailets.redirect.AddressExtractor; @@ -37,6 +36,7 @@ import org.apache.james.transport.util.SpecialAddressesUtils; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; +import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; @@ -377,10 +377,12 @@ public class Resend extends AbstractRedirect { } @Override - protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException { - MimeMessage message = newMail.getMessage(); - new MimeMessageModifier(message) - .replaceSubject(new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, originalMail, getInitParameters().getSubject())); + protected 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 { + return new MimeMessageModifier(newMail.getMessage()); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03b26599/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java index 5a2cf43..eb44d13 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java @@ -39,6 +39,7 @@ import org.apache.james.core.MailImpl; import org.apache.james.core.MimeMessageUtil; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.transport.mailets.Redirect; +import org.apache.james.transport.mailets.utils.MimeMessageModifier; import org.apache.james.transport.util.MailAddressUtils; import org.apache.james.transport.util.SpecialAddressesUtils; import org.apache.mailet.Mail; @@ -47,6 +48,7 @@ import org.apache.mailet.base.DateFormats; import org.apache.mailet.base.GenericMailet; import org.apache.mailet.base.RFC2822Headers; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; /** @@ -417,7 +419,7 @@ public abstract class AbstractRedirect extends GenericMailet { * <i>originalMail</i> to <i>subjectPrefix</i>. Is a "setX(Mail, Tx, Mail)" * method. */ - protected abstract void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException; + protected abstract Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException; /** * Sets the "In-Reply-To:" header of <i>newMail</i> to the "Message-Id:" of @@ -517,7 +519,7 @@ public abstract class AbstractRedirect extends GenericMailet { setTo(newMail, getTo(originalMail), originalMail); - setSubjectPrefix(newMail, getInitParameters().getSubjectPrefix(), originalMail); + getMimeMessageModifier(newMail, originalMail).replaceSubject(getSubjectPrefix(newMail, getInitParameters().getSubjectPrefix(), originalMail)); if (newMail.getMessage().getHeader(RFC2822Headers.DATE) == null) { newMail.getMessage().setHeader(RFC2822Headers.DATE, DateFormats.RFC822_DATE_FORMAT.format(new Date())); @@ -555,6 +557,8 @@ public abstract class AbstractRedirect extends GenericMailet { } } + protected abstract MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException; + private void setRemoteAddr(MailImpl newMail) { try { newMail.setRemoteAddr(dns.getLocalHost().getHostAddress()); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
