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