MAILET-115 Extract subject prefixing from MimeMessageModifier to 
MimeMessageUtils


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7e5c303a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7e5c303a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7e5c303a

Branch: refs/heads/master
Commit: 7e5c303a27d4ed605de673a8d80b6d44be73bc05
Parents: ab7e33b
Author: Antoine Duprat <adup...@apache.org>
Authored: Tue Nov 15 13:35:26 2016 +0100
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Wed Jan 11 10:03:30 2017 +0700

----------------------------------------------------------------------
 .../transport/mailets/AddSubjectPrefix.java     |   6 +-
 .../mailets/utils/MimeMessageModifier.java      |  45 +-----
 .../mailets/utils/MimeMessageUtils.java         |  71 ++++++++++
 .../mailets/utils/MimeMessageModifierTest.java  |  99 ++------------
 .../mailets/utils/MimeMessageUtilsTest.java     | 136 +++++++++++++++++++
 .../apache/james/transport/mailets/Bounce.java  |   6 +-
 .../james/transport/mailets/DSNBounce.java      |   5 +-
 .../apache/james/transport/mailets/Forward.java |   7 +-
 .../transport/mailets/NotifyPostmaster.java     |   6 +-
 .../james/transport/mailets/NotifySender.java   |   6 +-
 .../james/transport/mailets/Redirect.java       |   7 +-
 .../apache/james/transport/mailets/Resend.java  |   7 +-
 12 files changed, 258 insertions(+), 143 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddSubjectPrefix.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddSubjectPrefix.java
 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddSubjectPrefix.java
index b808126..7e791b0 100644
--- 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddSubjectPrefix.java
+++ 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddSubjectPrefix.java
@@ -21,8 +21,10 @@
 package org.apache.james.transport.mailets;
 
 import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
 
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
+import org.apache.james.transport.mailets.utils.MimeMessageUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.GenericMailet;
 
@@ -53,7 +55,9 @@ public class AddSubjectPrefix extends GenericMailet {
 
     @Override
     public void service(Mail mail) throws MessagingException {
-        new 
MimeMessageModifier(mail.getMessage()).addSubjectPrefix(subjectPrefix);
+        MimeMessage message = mail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
index b253621..f9ea826 100644
--- 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
+++ 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
@@ -22,13 +22,8 @@ package org.apache.james.transport.mailets.utils;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.mailet.Mail;
-
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Charsets;
-import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
-import com.google.common.base.Strings;
 
 public class MimeMessageModifier {
 
@@ -38,44 +33,10 @@ public class MimeMessageModifier {
         this.message = message;
     }
 
-    public void addSubjectPrefix(String subjectPrefix) throws 
MessagingException {
-        String newSubject = prefixSubject(message.getSubject(), subjectPrefix);
-        replaceSubject(message, newSubject);
-    }
-    
-    private void replaceSubject(MimeMessage message, String newSubject) throws 
MessagingException {
-        message.setSubject(null);
-        message.setSubject(newSubject, Charsets.UTF_8.displayName());
-    }
-
-    private static String prefixSubject(String subject, String subjectPrefix) 
throws MessagingException {
-        if (!Strings.isNullOrEmpty(subject)) {
-            return Joiner.on(' ').join(subjectPrefix, subject);
-        } else {
-            return subjectPrefix;
-        }
-    }
-
-    public void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail, String subject) throws MessagingException {
-        Optional<String> newSubject = buildNewSubject(subjectPrefix, 
originalMail.getMessage().getSubject(), subject);
+    public void replaceSubject(Optional<String> newSubject) throws 
MessagingException {
         if (newSubject.isPresent()) {
-            replaceSubject(newMail.getMessage(), newSubject.get());
+            message.setSubject(null);
+            message.setSubject(newSubject.get(), Charsets.UTF_8.displayName());
         }
     }
-
-    @VisibleForTesting Optional<String> buildNewSubject(String subjectPrefix, 
String originalSubject, String subject) throws MessagingException {
-        String nullablePrefix = Strings.emptyToNull(subjectPrefix);
-        if (nullablePrefix == null && subject == null) {
-            return Optional.absent();
-        }
-        if (nullablePrefix == null) {
-            return Optional.of(subject);
-        }
-        String chosenSubject = chooseSubject(subject, originalSubject);
-        return Optional.of(prefixSubject(chosenSubject, nullablePrefix));
-    }
-
-    private static String chooseSubject(String newSubject, String 
originalSubject) {
-        return Optional.fromNullable(newSubject).or(originalSubject);
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
new file mode 100644
index 0000000..8f93b65
--- /dev/null
+++ 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
@@ -0,0 +1,71 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.transport.mailets.utils;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.mailet.Mail;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Joiner;
+import com.google.common.base.Optional;
+import com.google.common.base.Strings;
+
+public class MimeMessageUtils {
+
+    private final MimeMessage message;
+
+    public MimeMessageUtils(MimeMessage message) {
+        this.message = message;
+    }
+
+    public Optional<String> subjectWithPrefix(String subjectPrefix) throws 
MessagingException {
+        return prefixSubject(message.getSubject(), subjectPrefix);
+    }
+
+    private Optional<String> prefixSubject(String subject, String 
subjectPrefix) throws MessagingException {
+        if (!Strings.isNullOrEmpty(subject)) {
+            return Optional.of(Joiner.on(' ').join(subjectPrefix, subject));
+        } else {
+            return Optional.of(subjectPrefix);
+        }
+    }
+
+    public Optional<String> subjectWithPrefix(String subjectPrefix, Mail 
originalMail, String subject) throws MessagingException {
+        return buildNewSubject(subjectPrefix, 
originalMail.getMessage().getSubject(), subject);
+    }
+
+    @VisibleForTesting Optional<String> buildNewSubject(String subjectPrefix, 
String originalSubject, String subject) throws MessagingException {
+        String nullablePrefix = Strings.emptyToNull(subjectPrefix);
+        if (nullablePrefix == null && subject == null) {
+            return Optional.absent();
+        }
+        if (nullablePrefix == null) {
+            return Optional.of(subject);
+        }
+        String chosenSubject = chooseSubject(subject, originalSubject);
+        return prefixSubject(chosenSubject, nullablePrefix);
+    }
+
+    private String chooseSubject(String newSubject, String originalSubject) {
+        return Optional.fromNullable(newSubject).or(originalSubject);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
index 175817a..446d8c2 100644
--- 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
+++ 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
@@ -26,7 +26,6 @@ import java.util.Properties;
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.mailet.base.test.FakeMail;
 import org.junit.Test;
 
 import com.google.common.base.Optional;
@@ -34,104 +33,24 @@ import com.google.common.base.Optional;
 public class MimeMessageModifierTest {
 
     @Test
-    public void addSubjectPrefixShouldAddPrefixToSubjectWhenSubjectIsPresent() 
throws Exception {
+    public void replaceSubjectShouldReplaceTheSubjectWhenSubjectIsPresent() 
throws Exception {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
         message.setSubject("subject");
 
-        new MimeMessageModifier(message).addSubjectPrefix("my");
+        String expectedSubject = "new subject";
+        new 
MimeMessageModifier(message).replaceSubject(Optional.of(expectedSubject));
 
-        assertThat(message.getSubject()).isEqualTo("my subject");
+        assertThat(message.getSubject()).isEqualTo(expectedSubject);
     }
 
     @Test
-    public void addSubjectPrefixShouldSetPrefixAsSubjectWhenSubjectIsAbsent() 
throws Exception {
+    public void replaceSubjectShouldNotAlterTheSubjectWhenSubjectIsAbsent() 
throws Exception {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        String expectedSubject = "subject";
+        message.setSubject(expectedSubject);
 
-        new MimeMessageModifier(message).addSubjectPrefix("my");
+        new MimeMessageModifier(message).replaceSubject(Optional.<String> 
absent());
 
-        assertThat(message.getSubject()).isEqualTo("my");
-    }
-
-    @Test
-    public void setSubjectPrefixShouldNotAlterSubjectWhenNullPrefix() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        message.setSubject("original subject");
-        FakeMail newMail = FakeMail.from(message);
-        FakeMail oldMail = FakeMail.from(message);
-        String subjectPrefix = null;
-        String subject = null;
-
-        new MimeMessageModifier(message).setSubjectPrefix(newMail, 
subjectPrefix, oldMail, subject);
-
-        assertThat(message.getSubject()).isEqualTo("original subject");
-    }
-
-    @Test
-    public void setSubjectPrefixShouldNotAlterSubjectWhenEmptyPrefix() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        message.setSubject("original subject");
-        FakeMail newMail = FakeMail.from(message);
-        FakeMail oldMail = FakeMail.from(message);
-        String subjectPrefix = "";
-        String subject = null;
-
-        new MimeMessageModifier(message).setSubjectPrefix(newMail, 
subjectPrefix, oldMail, subject);
-
-        assertThat(message.getSubject()).isEqualTo("original subject");
-    }
-
-
-    @Test
-    public void buildNewSubjectShouldPrefixOriginalSubjectWhenSubjectIsNull() 
throws Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        String prefix = "prefix";
-        String originalSubject = "original subject";
-        Optional<String> newSubject = new 
MimeMessageModifier(message).buildNewSubject(prefix, originalSubject, null);
-
-        assertThat(newSubject.get()).isEqualTo(prefix + " " + originalSubject);
-    }
-
-    @Test
-    public void buildNewSubjectShouldPrefixNewSubjectWhenSubjectIsGiven() 
throws Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        String prefix = "prefix";
-        String originalSubject = "original subject";
-        String subject = "new subject";
-        Optional<String> newSubject = new 
MimeMessageModifier(message).buildNewSubject(prefix, originalSubject, subject);
-
-        assertThat(newSubject.get()).isEqualTo(prefix + " " + subject);
-    }
-
-    @Test
-    public void buildNewSubjectShouldReplaceSubjectWhenPrefixIsNull() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        String prefix = null;
-        String originalSubject = "original subject";
-        String subject = "new subject";
-        Optional<String> newSubject = new 
MimeMessageModifier(message).buildNewSubject(prefix, originalSubject, subject);
-
-        assertThat(newSubject.get()).isEqualTo(subject);
-    }
-
-    @Test
-    public void buildNewSubjectShouldReplaceSubjectWhenPrefixIsEmpty() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        String prefix = "";
-        String originalSubject = "original subject";
-        String subject = "new subject";
-        Optional<String> newSubject = new 
MimeMessageModifier(message).buildNewSubject(prefix, originalSubject, subject);
-
-        assertThat(newSubject.get()).isEqualTo(subject);
-    }
-
-    @Test
-    public void 
buildNewSubjectShouldReplaceSubjectWithPrefixWhenSubjectIsEmpty() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        String prefix = "prefix";
-        String originalSubject = "original subject";
-        String subject = "";
-        Optional<String> newSubject = new 
MimeMessageModifier(message).buildNewSubject(prefix, originalSubject, subject);
-
-        assertThat(newSubject.get()).isEqualTo(prefix);
+        assertThat(message.getSubject()).isEqualTo(expectedSubject);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
new file mode 100644
index 0000000..1af99e6
--- /dev/null
+++ 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
@@ -0,0 +1,136 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.transport.mailets.utils;
+
+import static org.assertj.guava.api.Assertions.assertThat;
+
+import java.util.Properties;
+
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.transport.mailets.utils.MimeMessageUtils;
+import org.apache.mailet.base.test.FakeMail;
+import org.junit.Test;
+
+import com.google.common.base.Optional;
+
+public class MimeMessageUtilsTest {
+
+    @Test
+    public void 
subjectWithPrefixShouldReturnSubjectWithPrefixWhenSubjectIsPresent() throws 
Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        message.setSubject("subject");
+
+        Optional<String> subjectWithPrefix = new 
MimeMessageUtils(message).subjectWithPrefix("my");
+
+        assertThat(subjectWithPrefix).contains("my subject");
+    }
+
+    @Test
+    public void 
subjectWithPrefixShouldReturnPrefixAsSubjectWhenSubjectIsAbsent() throws 
Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+
+        Optional<String> subjectWithPrefix = new 
MimeMessageUtils(message).subjectWithPrefix("my");
+
+        assertThat(subjectWithPrefix).contains("my");
+    }
+
+    @Test
+    public void subjectWithPrefixShouldReturnAbsentWhenNullPrefix() throws 
Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        message.setSubject("original subject");
+        FakeMail oldMail = FakeMail.from(message);
+        String subjectPrefix = null;
+        String subject = null;
+
+        Optional<String> subjectWithPrefix = new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, oldMail, subject);
+
+        assertThat(subjectWithPrefix).isAbsent();
+    }
+
+    @Test
+    public void subjectWithPrefixShouldReturnAbsentWhenEmptyPrefix() throws 
Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        message.setSubject("original subject");
+        FakeMail oldMail = FakeMail.from(message);
+        String subjectPrefix = "";
+        String subject = null;
+
+        Optional<String> subjectWithPrefix = new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, oldMail, subject);
+
+        assertThat(subjectWithPrefix).isAbsent();
+    }
+
+
+    @Test
+    public void buildNewSubjectShouldPrefixOriginalSubjectWhenSubjectIsNull() 
throws Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        String prefix = "prefix";
+        String originalSubject = "original subject";
+        Optional<String> newSubject = new 
MimeMessageUtils(message).buildNewSubject(prefix, originalSubject, null);
+
+        assertThat(newSubject).contains(prefix + " " + originalSubject);
+    }
+
+    @Test
+    public void buildNewSubjectShouldPrefixNewSubjectWhenSubjectIsGiven() 
throws Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        String prefix = "prefix";
+        String originalSubject = "original subject";
+        String subject = "new subject";
+        Optional<String> newSubject = new 
MimeMessageUtils(message).buildNewSubject(prefix, originalSubject, subject);
+
+        assertThat(newSubject).contains(prefix + " " + subject);
+    }
+
+    @Test
+    public void buildNewSubjectShouldReplaceSubjectWhenPrefixIsNull() throws 
Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        String prefix = null;
+        String originalSubject = "original subject";
+        String subject = "new subject";
+        Optional<String> newSubject = new 
MimeMessageUtils(message).buildNewSubject(prefix, originalSubject, subject);
+
+        assertThat(newSubject).contains(subject);
+    }
+
+    @Test
+    public void buildNewSubjectShouldReplaceSubjectWhenPrefixIsEmpty() throws 
Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        String prefix = "";
+        String originalSubject = "original subject";
+        String subject = "new subject";
+        Optional<String> newSubject = new 
MimeMessageUtils(message).buildNewSubject(prefix, originalSubject, subject);
+
+        assertThat(newSubject).contains(subject);
+    }
+
+    @Test
+    public void 
buildNewSubjectShouldReplaceSubjectWithPrefixWhenSubjectIsEmpty() throws 
Exception {
+        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        String prefix = "prefix";
+        String originalSubject = "original subject";
+        String subject = "";
+        Optional<String> newSubject = new 
MimeMessageUtils(message).buildNewSubject(prefix, originalSubject, subject);
+
+        assertThat(newSubject).contains(prefix);
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/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 dec9c6f..6f35339 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,6 +23,7 @@ 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;
@@ -30,6 +31,7 @@ import 
org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters;
 import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 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.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
@@ -177,7 +179,9 @@ public class Bounce extends AbstractRedirect {
 
     @Override
     protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail) throws MessagingException {
-        new 
MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
+        MimeMessage message = originalMail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/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 6d64570..3dc1ed8 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
@@ -39,6 +39,7 @@ import 
org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 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.Patterns;
 import org.apache.james.transport.util.RecipientsUtils;
 import org.apache.james.transport.util.SpecialAddressesUtils;
@@ -169,7 +170,9 @@ public class DSNBounce extends AbstractRedirect {
 
     @Override
     protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail) throws MessagingException {
-        new 
MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
+        MimeMessage message = originalMail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/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 c873710..88d5fa9 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,6 +24,7 @@ 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;
@@ -31,6 +32,7 @@ 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;
@@ -181,7 +183,8 @@ public class Forward extends AbstractRedirect {
 
     @Override
     protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail) throws MessagingException {
-        new MimeMessageModifier(newMail.getMessage())
-            .setSubjectPrefix(newMail, subjectPrefix, originalMail, 
getInitParameters().getSubject());
+        MimeMessage message = newMail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, originalMail, 
getInitParameters().getSubject()));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/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 d38212a..b7b04b2 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,6 +23,7 @@ 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;
@@ -31,6 +32,7 @@ import 
org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters;
 import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 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.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
@@ -194,7 +196,9 @@ public class NotifyPostmaster extends AbstractRedirect {
 
     @Override
     protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail) throws MessagingException {
-        new 
MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
+        MimeMessage message = originalMail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/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 e72417c..66b9c5e 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,6 +23,7 @@ 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;
@@ -31,6 +32,7 @@ import 
org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters;
 import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 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.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
@@ -194,6 +196,8 @@ public class NotifySender extends AbstractRedirect {
 
     @Override
     protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail) throws MessagingException {
-        new 
MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
+        MimeMessage message = originalMail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/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 ce5e85d..c0e1e28 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,6 +23,7 @@ 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;
@@ -30,6 +31,7 @@ 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.MailAddressUtils;
 import org.apache.james.transport.util.RecipientsUtils;
 import org.apache.james.transport.util.SpecialAddressesUtils;
@@ -414,8 +416,9 @@ public class Redirect extends AbstractRedirect {
 
     @Override
     protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail) throws MessagingException {
-        new MimeMessageModifier(newMail.getMessage())
-            .setSubjectPrefix(newMail, subjectPrefix, originalMail, 
getInitParameters().getSubject());
+        MimeMessage message = newMail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, originalMail, 
getInitParameters().getSubject()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7e5c303a/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 a0893a6..a4701d1 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,12 +23,14 @@ 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;
 import org.apache.james.transport.mailets.redirect.InitParameters;
 import 
org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters;
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
+import org.apache.james.transport.mailets.utils.MimeMessageUtils;
 import org.apache.james.transport.util.MailAddressUtils;
 import org.apache.james.transport.util.RecipientsUtils;
 import org.apache.james.transport.util.SpecialAddressesUtils;
@@ -376,8 +378,9 @@ public class Resend extends AbstractRedirect {
 
     @Override
     protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail 
originalMail) throws MessagingException {
-        new MimeMessageModifier(newMail.getMessage())
-            .setSubjectPrefix(newMail, subjectPrefix, originalMail, 
getInitParameters().getSubject());
+        MimeMessage message = newMail.getMessage();
+        new MimeMessageModifier(message)
+            .replaceSubject(new 
MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, originalMail, 
getInitParameters().getSubject()));
     }
 
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to