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 bt...@apache.org on 2017/04/05 01:52:21 UTC
[2/2] james-project git commit: JAMES-1985 Allow JMAP text display of
messages with only inlined text without CID
JAMES-1985 Allow JMAP text display of messages with only inlined text without CID
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d118b167
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d118b167
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d118b167
Branch: refs/heads/master
Commit: d118b167ab5bbd56fa7d447223401d42f5b12acc
Parents: e202cfc
Author: benwa <bt...@linagora.com>
Authored: Tue Apr 4 10:18:00 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Apr 5 08:51:22 2017 +0700
----------------------------------------------------------------------
.../jmap/model/MessageContentExtractor.java | 11 +++++++---
.../jmap/model/MessageContentExtractorTest.java | 22 ++++++++++++++++++++
2 files changed, 30 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/d118b167/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageContentExtractor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageContentExtractor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageContentExtractor.java
index 08e9dc4..306f8c3 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageContentExtractor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageContentExtractor.java
@@ -107,12 +107,17 @@ public class MessageContentExtractor {
}
private MessageContent retrieveFirstReadablePart(Multipart multipart) throws IOException {
+ return retrieveFirstReadablePartMatching(multipart, this::isNotAttachment)
+ .orElseGet(() -> retrieveFirstReadablePartMatching(multipart, this::isInlinedWithoutCid)
+ .orElse(MessageContent.empty()));
+ }
+
+ private Optional<MessageContent> retrieveFirstReadablePartMatching(Multipart multipart, Predicate<Entity> predicate) {
return multipart.getBodyParts()
.stream()
- .filter(this::isNotAttachment)
+ .filter(predicate)
.flatMap(Throwing.function(this::extractContentIfReadable).sneakyThrow())
- .findFirst()
- .orElse(MessageContent.empty());
+ .findFirst();
}
private Stream<MessageContent> extractContentIfReadable(Entity entity) throws IOException {
http://git-wip-us.apache.org/repos/asf/james-project/blob/d118b167/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageContentExtractorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageContentExtractorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageContentExtractorTest.java
index 0182e63..f40b94f 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageContentExtractorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageContentExtractorTest.java
@@ -180,6 +180,28 @@ public class MessageContentExtractorTest {
}
@Test
+ public void extractShouldReturnInlinedTextBodyWithoutCIDWhenNoOtherValidParts() throws IOException {
+ String textBody = "body 1";
+ Multipart multipart = MultipartBuilder.create("report")
+ .addBodyPart(BodyPartBuilder.create()
+ .setBody(textBody, "plain", Charsets.UTF_8)
+ .setContentDisposition("inline")
+ .build())
+ .addBodyPart(BodyPartBuilder.create()
+ .setBody("body 2", "rfc822-headers", Charsets.UTF_8)
+ .setContentDisposition("inline")
+ .build())
+ .build();
+ Message message = MessageBuilder.create()
+ .setBody(multipart)
+ .build();
+
+ MessageContent actual = testee.extract(message);
+
+ assertThat(actual.getTextBody()).contains(textBody);
+ }
+
+ @Test
public void extractShouldReturnEmptyWhenMultipartMixedAndFirstPartIsATextAttachment() throws IOException {
Multipart multipart = MultipartBuilder.create("mixed")
.addBodyPart(textAttachment)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org