You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2016/11/18 08:48:12 UTC
[1/2] james-project git commit: JAMES-1861 Don't fail with mail with
lines with more than 1000 characters (which is the default mime4j
configuration)
Repository: james-project
Updated Branches:
refs/heads/master ff5743731 -> 73a7c4682
JAMES-1861 Don't fail with mail with lines with more than 1000 characters (which is the default mime4j configuration)
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/71c05bde
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/71c05bde
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/71c05bde
Branch: refs/heads/master
Commit: 71c05bdec6d2073314fb06305c682faa8c46b0eb
Parents: 17c79db
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Nov 16 17:57:16 2016 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Thu Nov 17 14:29:47 2016 +0100
----------------------------------------------------------------------
.../cucumber/GetMessagesMethodStepdefs.java | 5 +++++
.../test/resources/cucumber/GetMessages.feature | 7 +++++++
.../src/test/resources/eml/longLine.eml | 1 +
.../apache/james/jmap/model/MessageFactory.java | 8 +++++++-
.../james/jmap/model/MessageFactoryTest.java | 21 ++++++++++++++++++++
5 files changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/71c05bde/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index 5bbc254..39dc1a3 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -150,6 +150,11 @@ public class GetMessagesMethodStepdefs {
appendMessage("eml/multipartRelated.eml");
}
+ @Given("^the user has a message in \"([^\"]*)\" mailbox beginning by a long line$")
+ public void appendMessageBeginningByALongLine(String mailbox) throws Throwable {
+ appendMessage("eml/longLine.eml");
+ }
+
private void appendMessage(String emlFileName) throws Exception {
ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
mainStepdefs.jmapServer.serverProbe().appendMessage(userStepdefs.lastConnectedUser,
http://git-wip-us.apache.org/repos/asf/james-project/blob/71c05bde/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
index 377a306..23615aa 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
@@ -207,3 +207,10 @@ Feature: GetMessages method
And the list should contain 1 message
And the textBody of the message is "Hello text body\n"
And the htmlBody of the message is "<html>Hello html body</html>\n"
+
+Scenario: Retrieving message with more than 1000 char by line should return message when exists
+ Given the user has a message in "inbox" mailbox beginning by a long line
+ When the user ask for messages "["username@domain.tld|inbox|1"]"
+ Then no error is returned
+ And the list should contain 1 message
+ And the id of the message is "username@domain.tld|inbox|1"
http://git-wip-us.apache.org/repos/asf/james-project/blob/71c05bde/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/eml/longLine.eml
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/eml/longLine.eml b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/eml/longLine.eml
new file mode 100644
index 0000000..84b285e
--- /dev/null
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/eml/longLine.eml
@@ -0,0 +1 @@
+0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
7890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
http://git-wip-us.apache.org/repos/asf/james-project/blob/71c05bde/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
index ec12e59..d63fa4c 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
@@ -47,6 +47,7 @@ import org.apache.james.mime4j.dom.address.Mailbox;
import org.apache.james.mime4j.dom.address.MailboxList;
import org.apache.james.mime4j.message.MessageBuilder;
import org.apache.james.mime4j.stream.Field;
+import org.apache.james.mime4j.stream.MimeConfig;
import com.github.steveash.guavate.Guavate;
import com.google.common.base.Preconditions;
@@ -57,6 +58,8 @@ import com.google.common.collect.Multimaps;
public class MessageFactory {
+ private static final int NO_LINE_LENGTH_LIMIT_PARSING = -1;
+
public static final ZoneId UTC_ZONE_ID = ZoneId.of("Z");
private final MessagePreviewGenerator messagePreview;
@@ -100,7 +103,10 @@ public class MessageFactory {
private org.apache.james.mime4j.dom.Message parse(MetaDataWithContent message) throws MailboxException {
try {
- return MessageBuilder.read(message.getContent())
+ return MessageBuilder
+ .create()
+ .use(MimeConfig.custom().setMaxLineLen(NO_LINE_LENGTH_LIMIT_PARSING).build())
+ .parse(message.getContent())
.setDate(message.getInternalDate(), TimeZone.getTimeZone(UTC_ZONE_ID))
.build();
} catch (IOException e) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/71c05bde/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
index c9a7b26..33e2d76 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
@@ -30,6 +30,7 @@ import javax.mail.Flags;
import javax.mail.Flags.Flag;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.james.jmap.model.MessageFactory.MetaDataWithContent;
import org.apache.james.jmap.utils.HtmlTextExtractor;
import org.apache.james.mailbox.MessageUid;
@@ -292,4 +293,24 @@ public class MessageFactoryTest {
assertThat(testee.getCc()).contains(usercc);
assertThat(testee.getBcc()).contains(userbcc);
}
+
+ @Test
+ public void mailWithBigLinesShouldBeLoadedIntoMessage() throws Exception {
+ MetaDataWithContent testMail = MetaDataWithContent.builder()
+ .uid(MessageUid.of(2))
+ .flags(new Flags(Flag.SEEN))
+ .size(1010)
+ .internalDate(INTERNAL_DATE)
+ .content(new ByteArrayInputStream((StringUtils.repeat("0123456789", 101).getBytes(Charsets.UTF_8))))
+ .attachments(ImmutableList.of())
+ .mailboxId(MAILBOX_ID)
+ .messageId(MessageId.of("test|test|2"))
+ .build();
+
+ Message testee = messageFactory.fromMetaDataWithContent(testMail);
+ assertThat(testee)
+ .extracting(Message::getPreview, Message::getSize, Message::getSubject, Message::getHeaders, Message::getDate)
+ .containsExactly("(Empty)", 1010L, "", ImmutableMap.of("Date", "Tue, 14 Jul 2015 12:30:42 +0000", "MIME-Version", "1.0"), ZONED_DATE);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/2] james-project git commit: Merge remote-tracking branch
'rouazana/JAMES-1861'
Posted by ad...@apache.org.
Merge remote-tracking branch 'rouazana/JAMES-1861'
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/73a7c468
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/73a7c468
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/73a7c468
Branch: refs/heads/master
Commit: 73a7c4682f81eca1bbaab5820c72eff85ad25ff4
Parents: ff57437 71c05bd
Author: Antoine Duprat <ad...@apache.org>
Authored: Fri Nov 18 09:47:50 2016 +0100
Committer: Antoine Duprat <ad...@apache.org>
Committed: Fri Nov 18 09:47:50 2016 +0100
----------------------------------------------------------------------
.../cucumber/GetMessagesMethodStepdefs.java | 5 +++++
.../test/resources/cucumber/GetMessages.feature | 7 +++++++
.../src/test/resources/eml/longLine.eml | 1 +
.../apache/james/jmap/model/MessageFactory.java | 8 +++++++-
.../james/jmap/model/MessageFactoryTest.java | 21 ++++++++++++++++++++
5 files changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org