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]

Reply via email to