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