JAMES-2363 LogMessage should not fail on text / empty messages
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/02f126a6 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/02f126a6 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/02f126a6 Branch: refs/heads/master Commit: 02f126a6da9e13174e4fcc78314480c82e2330f0 Parents: bb6d6d0 Author: benwa <[email protected]> Authored: Tue Mar 27 16:05:42 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Mar 29 16:43:04 2018 +0700 ---------------------------------------------------------------------- .../james/transport/mailets/LogMessage.java | 12 ++++++++-- .../james/transport/mailets/LogMessageTest.java | 25 +++++++------------- 2 files changed, 18 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/02f126a6/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 1ae9eb5..0707359 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 @@ -117,12 +117,20 @@ public class LogMessage extends GenericMailet { private void logBody(MimeMessage message) throws MessagingException, IOException { if (body && logger.isInfoEnabled()) { - InputStream inputStream = ByteStreams.limit(message.getRawInputStream(), lengthToLog(message)); + InputStream inputStream = ByteStreams.limit(message.getDataHandler().getInputStream(), lengthToLog(message)); logger.info(IOUtils.toString(inputStream, StandardCharsets.UTF_8)); } } private int lengthToLog(MimeMessage message) throws MessagingException { - return bodyMax > 0 ? bodyMax : message.getSize(); + return bodyMax > 0 ? bodyMax : messageSizeOrUnlimited(message); + } + + private int messageSizeOrUnlimited(MimeMessage message) throws MessagingException { + int computedSize = message.getSize(); + if (computedSize > 0) { + return computedSize; + } + return Integer.MAX_VALUE; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/02f126a6/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java index 033231e..963d3e3 100644 --- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java +++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java @@ -21,17 +21,14 @@ package org.apache.james.transport.mailets; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import java.util.Properties; - import javax.mail.MessagingException; -import javax.mail.Session; import javax.mail.internet.MimeMessage; import org.apache.james.core.builder.MimeMessageBuilder; @@ -77,27 +74,21 @@ class LogMessageTest { } @Test - void serviceShouldFailWhenMailHasNoStream() throws Exception { + public void serviceShouldNotFailWhenTextContent() throws Exception { FakeMailetConfig mailetConfig = FakeMailetConfig.builder() .mailetName("LogContext") .mailetContext(mailContext) .build(); mailet.init(mailetConfig); - MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties())); - message.addHeader("Date", "Tue, 16 Jan 2018 10:23:03 +0100"); - message.setSubject("subject"); - message.setText("This is a fake mail"); - mailet.service(FakeMail.builder() - .mimeMessage(message) - .build()); + .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() + .addHeader("Date", "Tue, 16 Jan 2018 10:23:03 +0100") + .setSubject("subject") + .setText("This is a fake mail")) + .build()); - verify(logger).info("Logging mail {}", (Object) null); - verify(logger, times(2)).isInfoEnabled(); - verify(logger).info("\n"); - verify(logger).info("Subject: subject\n"); - verify(logger).error(eq("Error logging message."), any(MessagingException.class)); + verify(logger, times(0)).error(anyString(), any(MessagingException.class)); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
