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]

Reply via email to