JAMES-2305 Update to javax.mail 1.6.0

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

Branch: refs/heads/master
Commit: f9b08643ba301517c21f420d8acc1f28c86d5fc0
Parents: c3a109a
Author: benwa <btell...@linagora.com>
Authored: Mon Jan 15 15:52:38 2018 +0700
Committer: benwa <btell...@linagora.com>
Committed: Mon Jan 22 07:47:52 2018 +0700

----------------------------------------------------------------------
 .../ai/classic/BayesianAnalysisFeeder.java      |   5 +-
 .../james/transport/mailets/AbstractSign.java   |   6 +-
 .../james/transport/mailets/LogMessage.java     |   3 +-
 .../mailets/utils/MimeMessageUtils.java         |   7 +-
 .../james/transport/matchers/RelayLimit.java    |   2 +-
 .../james/transport/mailets/AddFooterTest.java  |  96 +--
 .../mailets/utils/MimeMessageUtilsTest.java     |   4 +-
 pom.xml                                         |   2 +-
 .../core/MimeMessageCopyOnWriteProxy.java       |  13 +-
 .../james/server/core/MimeMessageUtil.java      |   5 +-
 .../james/server/core/MimeMessageWrapper.java   |  14 +-
 .../james/server/core/MimeMessageTest.java      |  12 +-
 .../server/core/MimeMessageWrapperTest.java     |   6 +-
 .../mailets/BayesianAnalysisFeeder.java         |   1 -
 .../mailets/jsieve/SieveMailAdapter.java        |   4 +-
 .../mailets/jsieve/VacationAction.java          |   4 +-
 .../redirect/MailMessageAlteringUtils.java      |   1 -
 .../samples/mailets/InstrumentationMailet.java  |   2 -
 .../james/fetchmail/MessageProcessor.java       |   3 -
 .../mailet/TextCalendarBodyToAttachment.java    |   4 +-
 .../smtpserver/SpamAssassinHandlerTest.java     |  10 +-
 .../james/smtpserver/URIRBLHandlerTest.java     |  33 +-
 .../java/org/apache/james/smtpserver/Util.java  |  42 +-
 .../james/smtpserver/mock/MockMimeMessage.java  | 591 -------------------
 24 files changed, 83 insertions(+), 787 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysisFeeder.java
----------------------------------------------------------------------
diff --git 
a/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysisFeeder.java
 
b/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysisFeeder.java
index 44f413e..6cb386b 100644
--- 
a/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysisFeeder.java
+++ 
b/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysisFeeder.java
@@ -325,11 +325,10 @@ public class BayesianAnalysisFeeder extends GenericMailet 
{
     }
 
     private void clearAllHeaders(MimeMessage message) throws 
javax.mail.MessagingException {
-        @SuppressWarnings("rawtypes")
-        Enumeration headers = message.getAllHeaders();
+        Enumeration<Header> headers = message.getAllHeaders();
 
         while (headers.hasMoreElements()) {
-            Header header = (Header) headers.nextElement();
+            Header header = headers.nextElement();
             try {
                 message.removeHeader(header.getName());
             } catch (javax.mail.MessagingException me) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
----------------------------------------------------------------------
diff --git 
a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
 
b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
index 4676ff5..ab83934 100644
--- 
a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
+++ 
b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
@@ -488,10 +488,9 @@ public abstract class AbstractSign extends GenericMailet {
             
             MimeMessage newMessage = new 
MimeMessage(Session.getDefaultInstance(System.getProperties(),
             null));
-            @SuppressWarnings("unchecked")
             Enumeration<String> headerEnum = 
originalMessage.getAllHeaderLines();
             while (headerEnum.hasMoreElements()) {
-                newMessage.addHeaderLine((String) headerEnum.nextElement());
+                newMessage.addHeaderLine(headerEnum.nextElement());
             }
             
             newMessage.setSender(new 
InternetAddress(getKeyHolder().getSignerAddress(), getSignerName()));
@@ -669,11 +668,10 @@ public abstract class AbstractSign extends GenericMailet {
      * @return The string containing the headers.
      */
     protected final String getMessageHeaders(MimeMessage message) throws 
MessagingException {
-        @SuppressWarnings("unchecked")
         Enumeration<String> heads = message.getAllHeaderLines();
         StringBuilder headBuffer = new StringBuilder(1024);
         while (heads.hasMoreElements()) {
-            headBuffer.append(heads.nextElement().toString()).append("\r\n");
+            headBuffer.append(heads.nextElement()).append("\r\n");
         }
         return headBuffer.toString();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
index 8f2e209..c24e6ac 100644
--- 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
+++ 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
@@ -25,7 +25,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
-import java.util.Enumeration;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
@@ -111,7 +110,7 @@ public class LogMessage extends GenericMailet {
     private void logHeaders(MimeMessage message) throws MessagingException {
         if (headers && logger.isInfoEnabled()) {
             logger.info("\n");
-            for (String header : Collections.list((Enumeration<String>) 
message.getAllHeaderLines())) {
+            for (String header : 
Collections.list(message.getAllHeaderLines())) {
                 logger.info(header + "\n");
             }
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/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
index bdd5518..288e20e 100644
--- 
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
@@ -21,6 +21,7 @@ package org.apache.james.transport.mailets.utils;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Optional;
+
 import javax.mail.Header;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
@@ -77,7 +78,6 @@ public class MimeMessageUtils {
      * headers
      */
     public String getMessageHeaders() throws MessagingException {
-        @SuppressWarnings("unchecked")
         Enumeration<String> heads = message.getAllHeaderLines();
         StringBuilder headBuffer = new StringBuilder(1024);
         while (heads.hasMoreElements()) {
@@ -88,10 +88,9 @@ public class MimeMessageUtils {
 
     public List<Header> toHeaderList() throws MessagingException {
         ImmutableList.Builder<Header> headers = ImmutableList.builder();
-        @SuppressWarnings("unchecked")
         Enumeration<Header> allHeaders = message.getAllHeaders();
-        for (Enumeration<Header> e = allHeaders; e.hasMoreElements();) {
-            headers.add(e.nextElement());
+        while (allHeaders.hasMoreElements()) {
+            headers.add(allHeaders.nextElement());
         }
         return headers.build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/mailet/standard/src/main/java/org/apache/james/transport/matchers/RelayLimit.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/main/java/org/apache/james/transport/matchers/RelayLimit.java
 
b/mailet/standard/src/main/java/org/apache/james/transport/matchers/RelayLimit.java
index 1ee931d..9bbade4 100644
--- 
a/mailet/standard/src/main/java/org/apache/james/transport/matchers/RelayLimit.java
+++ 
b/mailet/standard/src/main/java/org/apache/james/transport/matchers/RelayLimit.java
@@ -49,7 +49,7 @@ public class RelayLimit extends GenericMatcher {
     public Collection<MailAddress> match(Mail mail) throws 
javax.mail.MessagingException {
         MimeMessage mm = mail.getMessage();
         int count = 0;
-        for (@SuppressWarnings("unchecked") Enumeration<Header> e = 
mm.getAllHeaders(); e.hasMoreElements();) {
+        for (Enumeration<Header> e = mm.getAllHeaders(); e.hasMoreElements();) 
{
             Header hdr = e.nextElement();
             if (hdr.getName().equals(RFC2822Headers.RECEIVED)) {
                 count++;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/mailet/standard/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
----------------------------------------------------------------------
diff --git 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
index 14588f7..9949b48 100644
--- 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
+++ 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
@@ -51,6 +51,7 @@ import com.google.common.collect.Sets;
 @RunWith(Parameterized.class)
 public class AddFooterTest {
 
+    private static final String MY_FOOTER = "my footer";
     @Rule public ExpectedException exception = ExpectedException.none();
     
     private final String javaCharset;
@@ -94,7 +95,7 @@ public class AddFooterTest {
     public void shouldAddFooterWhenQuotedPrintableTextPlainMessage() throws 
MessagingException, IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -107,20 +108,19 @@ public class AddFooterTest {
                 "Test=E0 and one =A4",
                 "");
 
-        String expectedFooter = "------ my footer =E0/=A4 ------";
+        String expectedFooter = "------ " + MY_FOOTER + " =E0/=A4 ------";
 
         Mail mail = FakeMail.fromMime(quotedPrintableTextPlainMessage, 
javaCharset, javaMailCharset);
         mailet.service(mail);
 
-        assertThat(MailUtil.toString(mail, 
javaCharset)).isEqualTo(quotedPrintableTextPlainMessage + expectedFooter);
-
+        assertThat(MailUtil.toString(mail, 
javaCharset)).endsWith(expectedFooter);
     }
 
     @Test
     public void shouldEnsureCarriageReturnWhenAddFooterWithTextPlainMessage() 
throws MessagingException, IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -132,28 +132,20 @@ public class AddFooterTest {
                 "",
                 "Test=E0 and one =A4");
 
-        String expected = Joiner.on("\r\n").join(
-                "Subject: test",
-                "Content-Type: text/plain; charset=ISO-8859-15",
-                "MIME-Version: 1.0",
-                "Content-Transfer-Encoding: quoted-printable",
-                "",
-                "Test=E0 and one =A4",
-                "------ my footer =E0/=A4 ------");
+        String expectedFooter = "------ " + MY_FOOTER + " =E0/=A4 ------";
         
 
         Mail mail = FakeMail.fromMime(quotedPrintableTextPlainMessage, 
javaCharset, javaMailCharset);
         mailet.service(mail);
 
-        assertThat(MailUtil.toString(mail, javaCharset)).isEqualTo(expected);
-
+        assertThat(MailUtil.toString(mail, javaCharset)).endsWith("\r\n" + 
expectedFooter);
     }
     
     @Test
     public void shouldNotAddFooterWhenUnsupportedEncoding() throws 
MessagingException, IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -169,14 +161,14 @@ public class AddFooterTest {
         Mail mail = FakeMail.fromMime(quotedPrintableTextPlainMessage, 
javaCharset, javaMailCharset);
         mailet.service(mail);
 
-        assertThat(MailUtil.toString(mail, 
javaCharset)).isEqualTo(quotedPrintableTextPlainMessage);
+        assertThat(MailUtil.toString(mail, 
javaCharset)).doesNotContain(MY_FOOTER);
     }
 
     @Test
     public void shouldNotAddFooterWhenUnsupportedTextContentType() throws 
MessagingException, IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -203,7 +195,7 @@ public class AddFooterTest {
     public void shouldNotAddFooterWhenNestedUnsupportedMultipart() throws 
MessagingException, IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -239,7 +231,7 @@ public class AddFooterTest {
     public void shouldAddFooterWhenMultipartRelatedHtmlMessage() throws 
MessagingException, IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -279,12 +271,12 @@ public class AddFooterTest {
                 "--------------050206010102010306090507--",
                 "");
 
-        String expectedFooter = "<br />------ my footer =E0/=A4 ------";
+        String expectedFooter = "<br />------ " + MY_FOOTER + " =E0/=A4 
------";
 
         Mail mail = FakeMail.fromMime(htmlMultipartRelatedMessagePart1 + 
htmlMultipartRelatedMessagePart2, javaCharset, javaMailCharset);
         mailet.service(mail);
 
-        assertThat(MailUtil.toString(mail, 
javaCharset)).isEqualTo(htmlMultipartRelatedMessagePart1 + expectedFooter + 
htmlMultipartRelatedMessagePart2);
+        assertThat(MailUtil.toString(mail, 
javaCharset)).contains(expectedFooter);
     }
     
     @Test
@@ -292,7 +284,7 @@ public class AddFooterTest {
             IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -320,31 +312,8 @@ public class AddFooterTest {
         
         Mail mail = FakeMail.fromMime(multipartAlternativeMessage, 
javaCharset, javaMailCharset);
         mailet.service(mail);
-
-        String expected = Joiner.on("\r\n").join(
-                "Subject: test",
-                "Content-Type: multipart/alternative;",
-                "    boundary=\"--==--\"",
-                "MIME-Version: 1.0",
-                "",
-                "----==--",
-                "Content-Type: text/plain;",
-                "    charset=\"ISO-8859-15\"",
-                "Content-Transfer-Encoding: quoted-printable",
-                "",
-                "Test=E0 and @=80",
-                "------ my footer =E0/=A4 ------",
-                "----==--",
-                "Content-Type: text/html;",
-                "    charset=\"CP1252\"",
-                "Content-Transfer-Encoding: quoted-printable",
-                "",
-                "<html><body>test =80 ss<br />------ my footer =E0/=80 
------</body></html>",
-                "----==----",
-                ""
-                );
         
-        assertThat(MailUtil.toString(mail, javaCharset)).isEqualTo(expected);
+        assertThat(MailUtil.toString(mail, javaCharset)).matches("(.|\n|\r)*" 
+ MY_FOOTER + "(.|\n|\r)*" + MY_FOOTER + "(.|\n|\r)*");
     }
 
     @Test
@@ -352,7 +321,7 @@ public class AddFooterTest {
             IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -370,18 +339,8 @@ public class AddFooterTest {
         Mail mail = FakeMail.fromMime(htmlMessage, javaCharset, 
javaMailCharset);
         mailet.service(mail);
 
-        String expected = Joiner.on("\r\n").join(
-                "Subject: test",
-                "MIME-Version: 1.0",
-                "Content-Type: text/html;",
-                "    charset=\"CP1252\"",
-                "Content-Transfer-Encoding: quoted-printable",
-                "",
-                "<html><body>test =80 ss<br />------ my footer =E0/=80 
------</bOdY></html>",
-                ""
-                );
-        
-        assertThat(MailUtil.toString(mail, javaCharset)).isEqualTo(expected);
+        String htmlContent = "<html><body>test =80 ss<br />------ " + 
MY_FOOTER + " =E0/=80 ------</bOdY></html>";
+        assertThat(MailUtil.toString(mail, javaCharset)).contains(htmlContent);
     }
 
     @Test
@@ -389,7 +348,7 @@ public class AddFooterTest {
             IOException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         
@@ -407,18 +366,9 @@ public class AddFooterTest {
         Mail mail = FakeMail.fromMime(htmlMessage, javaCharset, 
javaMailCharset);
         mailet.service(mail);
 
-        String expected = Joiner.on("\r\n").join(
-                "Subject: test",
-                "MIME-Version: 1.0",
-                "Content-Type: text/html;",
-                "    charset=\"CP1252\"",
-                "Content-Transfer-Encoding: quoted-printable",
-                "",
-                "<html><body>test =80 ss",
-                "<br />------ my footer =E0/=80 ------"
-                );
+        String expectedFooter = "<br />------ " + MY_FOOTER + " =E0/=80 
------";
         
-        assertThat(MailUtil.toString(mail, javaCharset)).isEqualTo(expected);
+        assertThat(MailUtil.toString(mail, 
javaCharset)).endsWith(expectedFooter);
     }
     
     @SuppressWarnings("unchecked")
@@ -426,7 +376,7 @@ public class AddFooterTest {
     public void shouldThrowMessagingExceptionWhenIOExceptionReadingMessage() 
throws MessagingException {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .mailetName("Test")
-                .setProperty("text", "------ my footer à/€ ------")
+                .setProperty("text", "------ " + MY_FOOTER + " à/€ ------")
                 .build();
         mailet.init(mailetConfig);
         

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/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
index 8130c3b..de3f003 100644
--- 
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
@@ -159,7 +159,7 @@ public class MimeMessageUtilsTest {
                 .build())
                 .toHeaderList())
             .extracting("name")
-            .containsOnly("Message-Id", "MIME-Version");
+            .contains("Message-Id", "MIME-Version");
     }
 
     @Test
@@ -171,6 +171,6 @@ public class MimeMessageUtilsTest {
                 .build())
                 .toHeaderList())
             .extracting("name")
-            .containsOnly("Message-Id", "MIME-Version", headerName);
+            .containsOnly("Message-Id", "MIME-Version", headerName, "Date");
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ebe228a..d91877c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1552,7 +1552,7 @@
             <dependency>
                 <groupId>com.sun.mail</groupId>
                 <artifactId>javax.mail</artifactId>
-                <version>1.5.4</version>
+                <version>1.6.0</version>
                 <exclusions>
                     <exclusion>
                         <groupId>javax.activation</groupId>

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxy.java
----------------------------------------------------------------------
diff --git 
a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxy.java
 
b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxy.java
index 9832659..3a8ede4 100644
--- 
a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxy.java
+++ 
b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxy.java
@@ -30,6 +30,7 @@ import javax.mail.Address;
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 import javax.mail.Folder;
+import javax.mail.Header;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
@@ -284,37 +285,31 @@ public class MimeMessageCopyOnWriteProxy extends 
MimeMessage implements Disposab
         return getWrappedMessage().getHeader(name, delimiter);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
-    public Enumeration<String> getAllHeaders() throws MessagingException {
+    public Enumeration<Header> getAllHeaders() throws MessagingException {
         return getWrappedMessage().getAllHeaders();
     }
 
-    @SuppressWarnings("unchecked")
     @Override
-    public Enumeration<String> getMatchingHeaders(String[] names) throws 
MessagingException {
+    public Enumeration<Header> getMatchingHeaders(String[] names) throws 
MessagingException {
         return getWrappedMessage().getMatchingHeaders(names);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
-    public Enumeration<String> getNonMatchingHeaders(String[] names) throws 
MessagingException {
+    public Enumeration<Header> getNonMatchingHeaders(String[] names) throws 
MessagingException {
         return getWrappedMessage().getNonMatchingHeaders(names);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public Enumeration<String> getAllHeaderLines() throws MessagingException {
         return getWrappedMessage().getAllHeaderLines();
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public Enumeration<String> getMatchingHeaderLines(String[] names) throws 
MessagingException {
         return getWrappedMessage().getMatchingHeaderLines(names);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public Enumeration<String> getNonMatchingHeaderLines(String[] names) 
throws MessagingException {
         return getWrappedMessage().getNonMatchingHeaderLines(names);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageUtil.java
----------------------------------------------------------------------
diff --git 
a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageUtil.java
 
b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageUtil.java
index 698ad5d..26be958 100644
--- 
a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageUtil.java
+++ 
b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageUtil.java
@@ -181,7 +181,6 @@ public class MimeMessageUtil {
      */
     private static void writeHeadersTo(MimeMessage message, OutputStream 
headerOs, String[] ignoreList) throws MessagingException {
         // Write the headers (minus ignored ones)
-        @SuppressWarnings("unchecked")
         Enumeration<String> headers = 
message.getNonMatchingHeaderLines(ignoreList);
         writeHeadersTo(headers, headerOs);
     }
@@ -284,13 +283,13 @@ public class MimeMessageUtil {
         // messages each time).
         size = message.getSize();
         if (size != -1) {
-            Enumeration<?> e = message.getAllHeaderLines();
+            Enumeration<String> e = message.getAllHeaderLines();
             if (e.hasMoreElements()) {
                 size += 2;
             }
             while (e.hasMoreElements()) {
                 // add 2 bytes for the CRLF
-                size += ((String) e.nextElement()).length() + 2;
+                size += e.nextElement().length() + 2;
             }
         }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java
----------------------------------------------------------------------
diff --git 
a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java
 
b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java
index d61b98e..ba59a60 100644
--- 
a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java
+++ 
b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java
@@ -31,6 +31,7 @@ import java.util.Enumeration;
 import java.util.UUID;
 
 import javax.activation.DataHandler;
+import javax.mail.Header;
 import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.internet.InternetHeaders;
@@ -316,7 +317,6 @@ public class MimeMessageWrapper extends MimeMessage 
implements Disposable {
                     }
                     myHeaders = headers;
                 }
-                @SuppressWarnings("unchecked")
                 Enumeration<String> filteredHeaders = 
myHeaders.getNonMatchingHeaderLines(ignoreList);
                 IOUtils.copy(new InternetHeadersInputStream(filteredHeaders), 
headerOs);
                 IOUtils.copy(in, bodyOs);
@@ -453,34 +453,30 @@ public class MimeMessageWrapper extends MimeMessage 
implements Disposable {
         return headers.getHeader(name, delimiter);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
-    public Enumeration<String> getAllHeaders() throws MessagingException {
+    public Enumeration<Header> getAllHeaders() throws MessagingException {
         if (headers == null) {
             loadHeaders();
         }
         return headers.getAllHeaders();
     }
 
-    @SuppressWarnings("unchecked")
     @Override
-    public Enumeration<String> getMatchingHeaders(String[] names) throws 
MessagingException {
+    public Enumeration<Header> getMatchingHeaders(String[] names) throws 
MessagingException {
         if (headers == null) {
             loadHeaders();
         }
         return headers.getMatchingHeaders(names);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
-    public Enumeration<String> getNonMatchingHeaders(String[] names) throws 
MessagingException {
+    public Enumeration<Header> getNonMatchingHeaders(String[] names) throws 
MessagingException {
         if (headers == null) {
             loadHeaders();
         }
         return headers.getNonMatchingHeaders(names);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public Enumeration<String> getAllHeaderLines() throws MessagingException {
         if (headers == null) {
@@ -489,7 +485,6 @@ public class MimeMessageWrapper extends MimeMessage 
implements Disposable {
         return headers.getAllHeaderLines();
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public Enumeration<String> getMatchingHeaderLines(String[] names) throws 
MessagingException {
         if (headers == null) {
@@ -498,7 +493,6 @@ public class MimeMessageWrapper extends MimeMessage 
implements Disposable {
         return headers.getMatchingHeaderLines(names);
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public Enumeration<String> getNonMatchingHeaderLines(String[] names) 
throws MessagingException {
         if (headers == null) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
 
b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
index a7a7cb1..2c73e85 100644
--- 
a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
+++ 
b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
@@ -47,6 +47,7 @@ public class MimeMessageTest {
 
     protected MimeMessage getSimpleMessage() throws Exception {
         MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        mmCreated.addHeader("Date", "Tue, 16 Jan 2018 09:56:01 +0700 (ICT)");
         mmCreated.setSubject("test");
         mmCreated.setText("test body");
         mmCreated.saveChanges();
@@ -56,6 +57,7 @@ public class MimeMessageTest {
     protected String getSimpleMessageCleanedSource() {
         return "Subject: test\r\n"
                 + "MIME-Version: 1.0\r\n"
+                + "Date: Tue, 16 Jan 2018 09:56:01 +0700 (ICT)\r\n"
                 + "Content-Type: text/plain; charset=us-ascii\r\n"
                 + "Content-Transfer-Encoding: 7bit\r\n"
                 + "\r\n"
@@ -64,6 +66,7 @@ public class MimeMessageTest {
 
     protected MimeMessage getMessageWithBadReturnPath() throws Exception {
         MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
+        mmCreated.addHeader("Date", "Tue, 16 Jan 2018 09:56:01 +0700 (ICT)");
         mmCreated.setSubject("test");
         mmCreated.setHeader(RFC2822Headers.RETURN_PATH, 
"<mybadret...@example.com>");
         mmCreated.setText("test body");
@@ -75,6 +78,7 @@ public class MimeMessageTest {
         return "Subject: test\r\n"
                 + "Return-Path: <mybadret...@example.com>\r\n"
                 + "MIME-Version: 1.0\r\n"
+                + "Date: Tue, 16 Jan 2018 09:56:01 +0700 (ICT)\r\n"
                 + "Content-Type: text/plain; charset=us-ascii\r\n"
                 + "Content-Transfer-Encoding: 7bit\r\n"
                 + "\r\n"
@@ -98,6 +102,7 @@ public class MimeMessageTest {
     protected MimeMessage getMultipartMessage() throws Exception {
         MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
         mmCreated.setSubject("test");
+        mmCreated.addHeader("Date", "Tue, 16 Jan 2018 09:56:01 +0700 (ICT)");
         MimeMultipart mm = new MimeMultipart("alternative");
         mm.addBodyPart(new MimeBodyPart(new InternetHeaders(new 
ByteArrayInputStream("X-header: test1\r\nContent-Type: text/plain; 
charset=Cp1252\r\n"
                 .getBytes())), "first part òàù".getBytes()));
@@ -109,7 +114,8 @@ public class MimeMessageTest {
     }
 
     protected String getMultipartMessageSource() {
-        return "Subject: test\r\n"
+        return "Date: Tue, 16 Jan 2018 09:56:01 +0700 (ICT)\r\n"
+                + "Subject: test\r\n"
                 + "MIME-Version: 1.0\r\n"
                 + "Content-Type: multipart/alternative; \r\n"
                 + "\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
@@ -132,6 +138,7 @@ public class MimeMessageTest {
     protected String getMultipartMessageExpected1() {
         return "Subject: test\r\n"
                 + "MIME-Version: 1.0\r\n"
+                + "Date: Tue, 16 Jan 2018 09:56:01 +0700 (ICT)\r\n"
                 + "Content-Type: multipart/alternative; \r\n"
                 + "\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
                 + "\r\n"
@@ -153,6 +160,7 @@ public class MimeMessageTest {
     protected String getMultipartMessageExpected2() {
         return "Subject: test\r\n"
                 + "MIME-Version: 1.0\r\n"
+                + "Date: Tue, 16 Jan 2018 09:56:01 +0700 (ICT)\r\n"
                 + "Content-Type: multipart/alternative; \r\n"
                 + "\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
                 + "\r\n"
@@ -178,6 +186,7 @@ public class MimeMessageTest {
     protected String getMultipartMessageExpected3() {
         return "Subject: test\r\n"
                 + "MIME-Version: 1.0\r\n"
+                + "Date: Tue, 16 Jan 2018 09:56:01 +0700 (ICT)\r\n"
                 + "Content-Type: binary/octet-stream\r\n"
                 + "Content-Transfer-Encoding: quoted-printable\r\n"
                 + "\r\n"
@@ -414,7 +423,6 @@ public class MimeMessageTest {
     public void testHeaderOrder() throws Exception {
         MimeMessage message = getSimpleMessage();
         message.setHeader(RFC2822Headers.RETURN_PATH, "<t...@test.de>");
-        @SuppressWarnings("unchecked")
         Enumeration<String> h = message.getAllHeaderLines();
 
         assertEquals(h.nextElement(), "Return-Path: <t...@test.de>");

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
 
b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
index 3a1ac42..0385a1b 100644
--- 
a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
+++ 
b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
@@ -187,14 +187,12 @@ public class MimeMessageWrapperTest extends 
MimeMessageFromStreamTest {
     public void testReplaceReturnPathOnBadMessage() throws Exception {
         MimeMessage message = getMessageWithBadReturnPath();
         message.setHeader(RFC2822Headers.RETURN_PATH, "<t...@test.de>");
-        @SuppressWarnings("unchecked")
         Enumeration<String> e = message.getMatchingHeaderLines(new 
String[]{"Return-Path"});
         assertEquals("Return-Path: <t...@test.de>", e.nextElement());
         assertFalse(e.hasMoreElements());
-        @SuppressWarnings("unchecked")
         Enumeration<String> h = message.getAllHeaderLines();
         assertEquals("Return-Path: <t...@test.de>", h.nextElement());
-        assertFalse(h.nextElement().toString().startsWith("Return-Path:"));
+        assertFalse(h.nextElement().startsWith("Return-Path:"));
         LifecycleUtil.dispose(message);
     }
 
@@ -203,12 +201,10 @@ public class MimeMessageWrapperTest extends 
MimeMessageFromStreamTest {
         MimeMessage message = getMessageWithBadReturnPath();
         message.addHeader(RFC2822Headers.RETURN_PATH, "<t...@test.de>");
         // test that we have now 2 return-paths
-        @SuppressWarnings("unchecked")
         Enumeration<String> e = message.getMatchingHeaderLines(new 
String[]{"Return-Path"});
         assertEquals("Return-Path: <t...@test.de>", e.nextElement());
         assertEquals("Return-Path: <mybadret...@example.com>", 
e.nextElement());
         // test that return-path is the first line
-        @SuppressWarnings("unchecked")
         Enumeration<String> h = message.getAllHeaderLines();
         assertEquals("Return-Path: <t...@test.de>", h.nextElement());
         LifecycleUtil.dispose(message);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysisFeeder.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysisFeeder.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysisFeeder.java
index 795269d..0447333 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysisFeeder.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysisFeeder.java
@@ -329,7 +329,6 @@ public class BayesianAnalysisFeeder extends GenericMailet {
     }
 
     private void clearAllHeaders(MimeMessage message) throws 
javax.mail.MessagingException {
-        @SuppressWarnings("unchecked")
         Enumeration<Header> headers = message.getAllHeaders();
 
         while (headers.hasMoreElements()) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
index 178ad49..0d082a8 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
@@ -186,9 +186,9 @@ public class SieveMailAdapter implements MailAdapter, 
EnvelopeAccessors, ActionC
     public List<String> getHeaderNames() throws SieveMailException {
         Set<String> headerNames = new HashSet<>();
         try {
-            Enumeration<?> allHeaders = getMessage().getAllHeaders();
+            Enumeration<Header> allHeaders = getMessage().getAllHeaders();
             while (allHeaders.hasMoreElements()) {
-                headerNames.add(((Header) allHeaders.nextElement()).getName());
+                headerNames.add(allHeaders.nextElement().getName());
             }
             return new ArrayList<>(headerNames);
         } catch (MessagingException ex) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
index 3f651aa..7fe9f3a 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
@@ -86,9 +86,9 @@ public class VacationAction implements MailAction {
     }
 
     private boolean isMailingList(Mail mail) throws MessagingException {
-        Enumeration<?> enumeration = mail.getMessage().getAllHeaderLines();
+        Enumeration<String> enumeration = 
mail.getMessage().getAllHeaderLines();
         while (enumeration.hasMoreElements()) {
-            String headerName = (String) enumeration.nextElement();
+            String headerName = enumeration.nextElement();
             if (headerName.startsWith("List-")) {
                 return true;
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailMessageAlteringUtils.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailMessageAlteringUtils.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailMessageAlteringUtils.java
index 23df7b2..c998e2c 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailMessageAlteringUtils.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailMessageAlteringUtils.java
@@ -243,7 +243,6 @@ public class MailMessageAlteringUtils {
     }
 
     private void copyRelevantHeaders(MimeMessage originalMessage, MimeMessage 
newMessage) throws MessagingException {
-        @SuppressWarnings("unchecked")
         Enumeration<String> headerEnum = 
originalMessage.getMatchingHeaderLines(
                 new String[] { RFC2822Headers.DATE, RFC2822Headers.FROM, 
RFC2822Headers.REPLY_TO, RFC2822Headers.TO, 
                         RFC2822Headers.SUBJECT, RFC2822Headers.RETURN_PATH });

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
 
b/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
index c4d890f..2b798ac 100644
--- 
a/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
+++ 
b/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
@@ -100,14 +100,12 @@ public class InstrumentationMailet implements Mailet {
             LOGGER.info("Received: " + message.getReceivedDate());
             LOGGER.info("Sent: " + message.getSentDate());
 
-            @SuppressWarnings("unchecked")
             Enumeration<String> allHeadersLines = message.getAllHeaderLines();
             while (allHeadersLines.hasMoreElements()) {
                 String header = allHeadersLines.nextElement();
                 LOGGER.info("Header Line:= " + header);
             }
 
-            @SuppressWarnings("unchecked")
             Enumeration<Header> allHeadersEnumeration = 
message.getAllHeaders();
             while (allHeadersEnumeration.hasMoreElements()) {
                 Header header = allHeadersEnumeration.nextElement();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
 
b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
index b9ad415..1e33fc1 100644
--- 
a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
+++ 
b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
@@ -572,7 +572,6 @@ public class MessageProcessor extends ProcessorAbstract {
         MimeMessage messageOut = new MimeMessage(getSession());
 
         // Propogate the headers and subject
-        @SuppressWarnings("unchecked")
         Enumeration<String> headersInEnum = getMessageIn().getAllHeaderLines();
         while (headersInEnum.hasMoreElements()) {
             messageOut.addHeaderLine(headersInEnum.nextElement());
@@ -875,7 +874,6 @@ public class MessageProcessor extends ProcessorAbstract {
      * @return boolean
      */
     protected boolean isBouncing() throws MessagingException {
-        @SuppressWarnings("unchecked")
         Enumeration<String> enumeration = 
getMessageIn().getMatchingHeaderLines(new String[]{"X-fetched-from"});
         int count = 0;
         while (enumeration.hasMoreElements()) {
@@ -940,7 +938,6 @@ public class MessageProcessor extends ProcessorAbstract {
             }
         } else {
             try {
-                @SuppressWarnings("unchecked")
                 Enumeration<String> enumeration = 
msg.getMatchingHeaderLines(new String[]{"Received"});
                 while (enumeration.hasMoreElements()) {
                     String received = enumeration.nextElement();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachment.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachment.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachment.java
index d474568..7e9b065 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachment.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachment.java
@@ -20,7 +20,6 @@
 package org.apache.james.jmap.mailet;
 
 import java.util.Collections;
-import java.util.Enumeration;
 import java.util.List;
 
 import javax.mail.Header;
@@ -83,9 +82,8 @@ public class TextCalendarBodyToAttachment extends 
GenericMailet {
         mimeMessage.saveChanges();
     }
 
-    @SuppressWarnings("unchecked")
     private List<Header> getContentHeadersFromMimeMessage(MimeMessage 
mimeMessage) throws MessagingException {
-        return Collections.list((Enumeration<Header>) 
mimeMessage.getAllHeaders())
+        return Collections.list(mimeMessage.getAllHeaders())
             .stream()
             .filter(header -> 
header.getName().startsWith(CONTENT_HEADER_PREFIX))
             .collect(Guavate.toImmutableList());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
index cc26723..6207043 100644
--- 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
+++ 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
@@ -27,12 +27,12 @@ import java.util.HashMap;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
 import org.apache.james.smtpserver.fastfail.SpamAssassinHandler;
-import org.apache.james.smtpserver.mock.MockMimeMessage;
 import org.apache.james.smtpserver.mock.mailet.MockMail;
 import org.apache.james.util.scanner.SpamAssassinInvoker;
 import org.apache.james.utils.MockSpamd;
@@ -103,11 +103,9 @@ public class SpamAssassinHandlerTest {
     }
 
     public MimeMessage setupMockedMimeMessage(String text) throws 
MessagingException {
-        MimeMessage message = new MimeMessage(new MockMimeMessage());
-        message.setText(text);
-        message.saveChanges();
-
-        return message;
+        return MimeMessageBuilder.mimeMessageBuilder()
+            .setText(text)
+            .build();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
index 7d138f9..dca95e4 100644
--- 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
+++ 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/URIRBLHandlerTest.java
@@ -28,13 +28,10 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 
-import javax.mail.BodyPart;
 import javax.mail.MessagingException;
-import javax.mail.Multipart;
-import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.mock.MockDNSService;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -42,7 +39,6 @@ import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
 import org.apache.james.smtpserver.fastfail.URIRBLHandler;
-import org.apache.james.smtpserver.mock.MockMimeMessage;
 import org.apache.james.smtpserver.mock.mailet.MockMail;
 import org.apache.mailet.Mail;
 import org.junit.Test;
@@ -111,28 +107,17 @@ public class URIRBLHandlerTest {
     }
 
     public MimeMessage setupMockedMimeMessage(String text) throws 
MessagingException {
-        MimeMessage message = new MimeMessage(new MockMimeMessage());
-        message.setText(text);
-        message.saveChanges();
-
-        return message;
+        return MimeMessageBuilder.mimeMessageBuilder()
+            .setText(text)
+            .build();
     }
 
     public MimeMessage setupMockedMimeMessageMP(String text) throws 
MessagingException {
-        MimeMessage message = new MimeMessage(new MockMimeMessage());
-
-        // Create the message part
-        BodyPart messageBodyPart = new MimeBodyPart();
-
-        // Fill the message
-        messageBodyPart.setText(text);
-
-        Multipart multipart = new MimeMultipart();
-        multipart.addBodyPart(messageBodyPart);
-        message.setContent(multipart);
-        message.saveChanges();
-
-        return message;
+        return MimeMessageBuilder.mimeMessageBuilder()
+            .setMultipartWithBodyParts(
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data(text))
+            .build();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/Util.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/Util.java
 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/Util.java
index 2569678..e9f95ca 100644
--- 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/Util.java
+++ 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/Util.java
@@ -22,12 +22,11 @@ import java.util.Arrays;
 import java.util.Random;
 
 import javax.mail.MessagingException;
-import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.ParseException;
 
 import org.apache.james.core.MailAddress;
-import org.apache.james.smtpserver.mock.MockMimeMessage;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.smtpserver.mock.mailet.MockMail;
 
 /**
@@ -46,38 +45,15 @@ public class Util {
         return mockedMail;
     }
 
-    public static MockMimeMessage createMimeMessage() throws 
MessagingException {
-        return createMimeMessage(null, null);
-    }
-
-    public static MockMimeMessage createMimeMessageWithSubject(String subject) 
throws MessagingException {
-        return createMimeMessage(null, null, subject, 0);
-    }
-
-    public static MockMimeMessage createMimeMessage(String subject, int 
number) throws MessagingException {
-        return createMimeMessage(null, null, subject, number);
-    }
-
-    public static MockMimeMessage createMimeMessage(String headerName, String 
headerValue) throws MessagingException {
-        return createMimeMessage(headerName, headerValue, "testmail", 0);
-    }
-
-    public static MockMimeMessage createMimeMessage(String headerName, String 
headerValue, String subject, int number)
-            throws MessagingException {
+    public static MimeMessage createMimeMessage(String headerName, String 
headerValue) throws MessagingException {
         String sender = "t...@james.apache.org";
         String rcpt = "te...@james.apache.org";
-
-        MockMimeMessage mockedMimeMessage = new MockMimeMessage(number);
-        mockedMimeMessage.setFrom(new InternetAddress(sender));
-        mockedMimeMessage.setRecipients(MimeMessage.RecipientType.TO, rcpt);
-        if (headerName != null) {
-            mockedMimeMessage.setHeader(headerName, headerValue);
-        }
-        if (subject != null) {
-            mockedMimeMessage.setSubject(subject);
-        }
-        mockedMimeMessage.setText("testtext");
-        mockedMimeMessage.saveChanges();
-        return mockedMimeMessage;
+        return MimeMessageBuilder.mimeMessageBuilder()
+            .addHeader(headerName, headerValue)
+            .setSubject("testmail")
+            .setText("testtext")
+            .addToRecipient(rcpt)
+            .addFrom(sender)
+            .build();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f9b08643/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/MockMimeMessage.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/MockMimeMessage.java
 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/MockMimeMessage.java
deleted file mode 100644
index fe68393..0000000
--- 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/MockMimeMessage.java
+++ /dev/null
@@ -1,591 +0,0 @@
-/****************************************************************
- * 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.smtpserver.mock;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-
-import javax.activation.DataHandler;
-import javax.mail.Address;
-import javax.mail.Flags;
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Multipart;
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.InternetHeaders;
-import javax.mail.internet.MimeMessage;
-import javax.mail.search.SearchTerm;
-
-import com.github.steveash.guavate.Guavate;
-
-public class MockMimeMessage extends MimeMessage {
-
-    private final List<Address> fromAddresses = new ArrayList<>();
-    private Address senderAddress;
-    private final List<Address> toRecepients = new ArrayList<>();
-    private final List<Address> ccRecepients = new ArrayList<>();
-    private final List<Address> bccRecepients = new ArrayList<>();
-    private final List<Address> replyToAddresses = new ArrayList<>();
-    private String subject;
-    private int messageNumber;
-    private boolean isExpunged;
-    private Object content;
-    private Date sentDate;
-    private String[] contentLanguage;
-    private String fileName;
-    private DataHandler dataHandler;
-    private final HashMap<String, String> contentHeaders = new HashMap<>();
-    private final Flags setFlags = new Flags();
-    private boolean doMatch;
-
-    public MockMimeMessage() {
-        super((Session) null);
-    }
-
-    public MockMimeMessage(int messageNumber) {
-        super((Session) null);
-        this.messageNumber = messageNumber;
-    }
-
-    public MockMimeMessage(MimeMessage mimeMessage) throws MessagingException {
-        super(mimeMessage); // trivial implementation
-    }
-
-    @Override
-    public Address[] getFrom() throws MessagingException {
-        return fromAddresses.toArray(new Address[0]);
-    }
-
-    @Override
-    public void setFrom(Address address) throws MessagingException {
-        fromAddresses.clear();
-        fromAddresses.add(address);
-    }
-
-    @Override
-    public void setFrom() throws MessagingException {
-        fromAddresses.clear();
-        fromAddresses.add(InternetAddress.getLocalAddress(null));
-    }
-
-    @Override
-    public void addFrom(Address[] addresses) throws MessagingException {
-        fromAddresses.addAll(Arrays.asList(addresses));
-    }
-
-    @Override
-    public Address getSender() throws MessagingException {
-        return senderAddress;
-    }
-
-    @Override
-    public void setSender(Address address) throws MessagingException {
-        senderAddress = address;
-    }
-
-    @Override
-    public Address[] getRecipients(Message.RecipientType recipientType) throws 
MessagingException {
-        List<Address> recipientsList = getRecipientsList(recipientType);
-        return recipientsList.toArray(new Address[0]);
-    }
-
-    private List<Address> getRecipientsList(Message.RecipientType 
recipientType) {
-        if (Message.RecipientType.TO.equals(recipientType)) {
-            return toRecepients;
-        }
-        if (Message.RecipientType.CC.equals(recipientType)) {
-            return ccRecepients;
-        }
-        if (Message.RecipientType.BCC.equals(recipientType)) {
-            return bccRecepients;
-        }
-        return null;
-    }
-
-    @Override
-    public Address[] getAllRecipients() throws MessagingException {
-        List<Address> allRecipients = new ArrayList<>();
-        allRecipients.addAll(toRecepients);
-        allRecipients.addAll(ccRecepients);
-        allRecipients.addAll(bccRecepients);
-        return allRecipients.toArray(new Address[0]);
-    }
-
-    @Override
-    public void setRecipients(Message.RecipientType recipientType, Address[] 
addresses) throws MessagingException {
-        getRecipientsList(recipientType).addAll(Arrays.asList(addresses));
-    }
-
-    @Override
-    public void setRecipients(Message.RecipientType recipientType, String 
recipient) throws MessagingException {
-        setRecipients(recipientType, InternetAddress.parse(recipient));
-    }
-
-    @Override
-    public void addRecipients(Message.RecipientType recipientType, Address[] 
addresses) throws MessagingException {
-        getRecipientsList(recipientType).addAll(Arrays.asList(addresses));
-    }
-
-    @Override
-    public void addRecipients(Message.RecipientType recipientType, String 
recipient) throws MessagingException {
-        addRecipients(recipientType, InternetAddress.parse(recipient));
-    }
-
-    @Override
-    public Address[] getReplyTo() throws MessagingException {
-        return replyToAddresses.toArray(new Address[0]);
-    }
-
-    @Override
-    public void setReplyTo(Address[] addresses) throws MessagingException {
-        replyToAddresses.addAll(Arrays.asList(addresses));
-    }
-
-    @Override
-    public String getSubject() throws MessagingException {
-        return subject;
-    }
-
-    @Override
-    public void setSubject(String subject) throws MessagingException {
-        this.subject = subject;
-    }
-
-    @Override
-    public void setSubject(String subject, String charset) throws 
MessagingException {
-        if (subject == null) {
-            this.subject = null;
-            return;
-        }
-        try {
-            this.subject = new String(subject.getBytes(charset));
-        } catch (UnsupportedEncodingException e) {
-            throw new MessagingException("setting subject failed", e);
-        }
-    }
-
-    @Override
-    public Date getSentDate() throws MessagingException {
-        return sentDate;
-    }
-
-    @Override
-    public void setSentDate(Date date) throws MessagingException {
-        sentDate = date;
-    }
-
-    @Override
-    public Date getReceivedDate() throws MessagingException {
-        return null; // trivial implementation
-    }
-
-    @Override
-    public int getSize() throws MessagingException {
-        return -1; // trivial implementation
-    }
-
-    @Override
-    public int getLineCount() throws MessagingException {
-        return -1; // trivial implementation
-    }
-
-    @Override
-    public String getContentType() throws MessagingException {
-        return getHeader("Content-Type", null);
-    }
-
-    @Override
-    public boolean isMimeType(String mimeType) throws MessagingException {
-        return mimeType.startsWith(getContentType());
-    }
-
-    @Override
-    public String getDisposition() throws MessagingException {
-        return getHeader("Content-Disposition", null);
-    }
-
-    @Override
-    public void setDisposition(String disposition) throws MessagingException {
-        setHeader("Content-Disposition", disposition);
-    }
-
-    @Override
-    public String getEncoding() throws MessagingException {
-        return getHeader("Content-Transfer-Encoding", null);
-    }
-
-    @Override
-    public String getContentID() throws MessagingException {
-        return getHeader("Content-ID", null);
-    }
-
-    @Override
-    public void setContentID(String contentID) throws MessagingException {
-        setHeader("Content-ID", contentID);
-    }
-
-    @Override
-    public String getContentMD5() throws MessagingException {
-        return getHeader("Content-MD5", null);
-    }
-
-    @Override
-    public void setContentMD5(String value) throws MessagingException {
-        setHeader("Content-MD5", value);
-    }
-
-    @Override
-    public String getDescription() throws MessagingException {
-        return getHeader("Content-Description", null);
-    }
-
-    @Override
-    public void setDescription(String description) throws MessagingException {
-        setHeader("Content-Description", description);
-    }
-
-    @Override
-    public void setDescription(String description, String charset) throws 
MessagingException {
-        try {
-            setDescription(new String(description.getBytes(charset)));
-        } catch (UnsupportedEncodingException e) {
-            throw new MessagingException("setting description failed", e);
-        }
-    }
-
-    @Override
-    public String[] getContentLanguage() throws MessagingException {
-        return contentLanguage;
-    }
-
-    @Override
-    public void setContentLanguage(String[] contentLanguage) throws 
MessagingException {
-        this.contentLanguage = contentLanguage;
-    }
-
-    @Override
-    public String getMessageID() throws MessagingException {
-        return "ID-" + messageNumber; // trivial implementation
-    }
-
-    @Override
-    public String getFileName() throws MessagingException {
-        return fileName;
-    }
-
-    @Override
-    public void setFileName(String fileName) throws MessagingException {
-        this.fileName = fileName;
-    }
-
-    @Override
-    public InputStream getInputStream() throws IOException, MessagingException 
{
-        return null; // trivial implementation
-    }
-
-    @Override
-    protected InputStream getContentStream() throws MessagingException {
-        return null; // trivial implementation
-    }
-
-    @Override
-    public InputStream getRawInputStream() throws MessagingException {
-        if (content instanceof String) {
-            return new ByteArrayInputStream(content.toString().getBytes());
-        }
-        throw new UnsupportedOperationException("Unimplementated method");
-    }
-
-    @Override
-    public synchronized DataHandler getDataHandler() throws MessagingException 
{
-        return dataHandler;
-    }
-
-    @Override
-    public synchronized void setDataHandler(DataHandler dataHandler) throws 
MessagingException {
-        this.dataHandler = dataHandler;
-    }
-
-    @Override
-    public Object getContent() throws IOException, MessagingException {
-        return content;
-    }
-
-    @Override
-    public void setContent(Object object, String mimeType) throws 
MessagingException {
-        content = object; // trivial implementation
-    }
-
-    @Override
-    public void setText(String string) throws MessagingException {
-        setContent(string, "text/plain");
-    }
-
-    @Override
-    public void setText(String string, String charset) throws 
MessagingException {
-        try {
-            setContent(new String(string.getBytes(charset)), "text/plain");
-        } catch (UnsupportedEncodingException e) {
-            throw new MessagingException("setting text content failed", e);
-        }
-    }
-
-    @Override
-    public void setContent(Multipart multipart) throws MessagingException {
-        content = multipart;
-    }
-
-    @Override
-    public Message reply(boolean b) throws MessagingException {
-        return new MockMimeMessage(this); // trivial implementation
-    }
-
-    @Override
-    public void writeTo(OutputStream outputStream) throws IOException, 
MessagingException {
-        // trivial implementation
-    }
-
-    @Override
-    public void writeTo(OutputStream outputStream, String[] strings) throws 
IOException, MessagingException {
-        // trivial implementation
-    }
-
-    @Override
-    public String[] getHeader(String name) throws MessagingException {
-        String value = (String) contentHeaders.get(name);
-        if (value == null) {
-            return null;
-        }
-        return new String[]{value};
-    }
-
-    @Override
-    public String getHeader(String name, String delimiter) throws 
MessagingException {
-        String[] header = getHeader(name);
-        if (header == null || header.length == 0) {
-            return null;
-        }
-        return header[0];
-    }
-
-    @Override
-    public void setHeader(String name, String value) throws MessagingException 
{
-        addHeader(name, value);
-    }
-
-    @Override
-    public void addHeader(String name, String value) throws MessagingException 
{
-        contentHeaders.put(name, value);
-    }
-
-    @Override
-    public void removeHeader(String name) throws MessagingException {
-        contentHeaders.remove(name);
-    }
-
-    @Override
-    public Enumeration<String> getAllHeaders() throws MessagingException {
-        return Collections.enumeration(contentHeaders.values());
-    }
-
-    @Override
-    public Enumeration<String> getMatchingHeaders(String[] names) throws 
MessagingException {
-        ArrayList<String> matchingHeaders = new ArrayList<>();
-        for (String name : names) {
-            String value = getHeader(name, null);
-            if (value == null) {
-                continue;
-            }
-            matchingHeaders.add(value);
-        }
-        return Collections.enumeration(matchingHeaders);
-    }
-
-    @Override
-    public Enumeration<String> getNonMatchingHeaders(String[] names) throws 
MessagingException {
-        List<String> existingHeaders = Arrays.asList(names);
-
-        ArrayList<String> nonMatchingHeaders = new ArrayList<>();
-
-        for (String name : contentHeaders.keySet()) {
-            if (existingHeaders.contains(name)) {
-                continue;
-            }
-            String value = getHeader(name, null);
-            if (value == null) {
-                continue;
-            }
-            nonMatchingHeaders.add(value);
-        }
-        return Collections.enumeration(nonMatchingHeaders);
-    }
-
-    @Override
-    public void addHeaderLine(String headerLine) throws MessagingException {
-        int separatorIndex = headerLine.indexOf(":");
-        if (separatorIndex < 0) {
-            throw new MessagingException("header line does not conform to 
standard");
-        }
-
-        addHeader(headerLine.substring(0, separatorIndex), 
headerLine.substring(separatorIndex, headerLine.length()));
-    }
-
-    @Override
-    public Enumeration<String> getAllHeaderLines() throws MessagingException {
-        return Collections.enumeration(getHeadersAsStrings(contentHeaders));
-    }
-
-    private List<String> getHeadersAsStrings(HashMap<String, String> 
contentHeaders) {
-        return contentHeaders.entrySet()
-            .stream()
-            .map(entry -> entry.getKey() + ":" + entry.getValue())
-            .collect(Guavate.toImmutableList());
-    }
-
-    @Override
-    public Enumeration<String> getMatchingHeaderLines(String[] names) throws 
MessagingException {
-        ArrayList<String> matchingHeaders = new ArrayList<>();
-        for (String name : names) {
-            String value = getHeader(name, null);
-            if (value == null) {
-                continue;
-            }
-            matchingHeaders.add(name + ":" + value);
-        }
-        return Collections.enumeration(matchingHeaders);
-    }
-
-    @Override
-    public Enumeration<String> getNonMatchingHeaderLines(String[] names) 
throws MessagingException {
-        List<String> existingHeaders = names != null ? Arrays.asList(names) : 
null;
-
-        ArrayList<String> nonMatchingHeaders = new ArrayList<>();
-
-        for (String name : contentHeaders.keySet()) {
-            if (existingHeaders != null && existingHeaders.contains(name)) {
-                continue;
-            }
-            String value = getHeader(name, null);
-            if (value == null) {
-                continue;
-            }
-            nonMatchingHeaders.add(name + ":" + value);
-        }
-        return Collections.enumeration(nonMatchingHeaders);
-    }
-
-    @Override
-    public synchronized Flags getFlags() throws MessagingException {
-        return new Flags(setFlags);
-    }
-
-    @Override
-    public synchronized boolean isSet(Flags.Flag flag) throws 
MessagingException {
-        return setFlags.contains(flag);
-    }
-
-    @Override
-    public synchronized void setFlags(Flags flags, boolean set) throws 
MessagingException {
-        if (set) {
-            setFlags.add(flags);
-        } else {
-            setFlags.remove(flags);
-        }
-    }
-
-    @Override
-    public void saveChanges() throws MessagingException {
-        // trivial implementation
-    }
-
-    @Override
-    protected void updateHeaders() throws MessagingException {
-        // trivial implementation
-    }
-
-    @Override
-    protected InternetHeaders createInternetHeaders(InputStream inputStream) 
throws MessagingException {
-        return new InternetHeaders();
-    }
-
-    @Override
-    public void setRecipient(Message.RecipientType recipientType, Address 
address) throws MessagingException {
-        setRecipients(recipientType, new Address[]{address});
-    }
-
-    @Override
-    public void addRecipient(Message.RecipientType recipientType, Address 
address) throws MessagingException {
-        setRecipients(recipientType, new Address[]{address});
-    }
-
-    @Override
-    public void setFlag(Flags.Flag flag, boolean set) throws 
MessagingException {
-        if (set) {
-            setFlags.add(flag);
-        } else {
-            setFlags.remove(flag);
-        }
-    }
-
-    @Override
-    public int getMessageNumber() {
-        return messageNumber;
-    }
-
-    @Override
-    protected void setMessageNumber(int i) {
-        messageNumber = i;
-    }
-
-    @Override
-    public Folder getFolder() {
-        return null;
-    }
-
-    @Override
-    public boolean isExpunged() {
-        return isExpunged;
-    }
-
-    @Override
-    protected void setExpunged(boolean b) {
-        isExpunged = b;
-    }
-
-    public void setShouldMatch(boolean doMatch) {
-        this.doMatch = doMatch;
-    }
-
-    @Override
-    public boolean match(SearchTerm searchTerm) throws MessagingException {
-        return doMatch;
-    }
-}


---------------------------------------------------------------------
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