From 412d05e36a5584050ddab8cf86ba875cba650e9d Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Mon, 6 Jun 2016 08:35:01 +0000 Subject: [PATCH] Merged 5.2.N (5.2.1) to HEAD (5.2) 126063 aleahu: Merged 5.1.N (5.1.2) to 5.2.N (5.2.1) 126025 aleahu: Merged 5.0.N (5.0.4) to 5.1.N (5.1.2) 125910 rmunteanu: MNT-15553 : Inconsistent search result with .eml files. - Fix transformation for eml files containing nested alternative parts. - Added test. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@127840 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/quick/quick.nested.alternative.eml | 41 +++++++++++++++++++ .../content/transform/EMLTransformer.java | 10 ++++- .../content/transform/EMLTransformerTest.java | 24 ++++++++++- 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 config/quick/quick.nested.alternative.eml diff --git a/config/quick/quick.nested.alternative.eml b/config/quick/quick.nested.alternative.eml new file mode 100644 index 0000000000..9bb54098a8 --- /dev/null +++ b/config/quick/quick.nested.alternative.eml @@ -0,0 +1,41 @@ +MIME-Version: 1.0 +Received: by 10.000.0.000 with HTTP; Thu, 16 Aug 2012 08:13:29 -0700 (PDT) +Date: Thu, 16 Aug 2012 16:13:29 +0100 +Delivered-To: jane.doe@alfresco.com +Message-ID: +Subject: Attachment test +From: +To: +Content-Type: multipart/related; + boundary="--_=_NextPart1_03fb5278-acd0-44a8-88cd-bfd1347fd423"; + type="multipart/alternative" + +This is a multi-part message in MIME format. + +----_=_NextPart1_03fb5278-acd0-44a8-88cd-bfd1347fd423 +Content-Type: multipart/alternative; boundary="--_=_NextPart0_f68fab3d-a986-41a5-9cf0-3a3aefb21362" + + +----_=_NextPart0_f68fab3d-a986-41a5-9cf0-3a3aefb21362 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: quoted-printable + +nested alternative plain text + +----_=_NextPart0_f68fab3d-a986-41a5-9cf0-3a3aefb21362 +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: quoted-printable + +
nested alternative html text
+ +----_=_NextPart0_f68fab3d-a986-41a5-9cf0-3a3aefb21362-- + +----_=_NextPart1_03fb5278-acd0-44a8-88cd-bfd1347fd423 +Content-Type: image/jpeg; name="image001.jpg" +Content-Transfer-Encoding: base64 +Content-ID: + +image + +----_=_NextPart1_03fb5278-acd0-44a8-88cd-bfd1347fd423-- + diff --git a/source/java/org/alfresco/repo/content/transform/EMLTransformer.java b/source/java/org/alfresco/repo/content/transform/EMLTransformer.java index 686962ee72..51332e7aea 100644 --- a/source/java/org/alfresco/repo/content/transform/EMLTransformer.java +++ b/source/java/org/alfresco/repo/content/transform/EMLTransformer.java @@ -169,8 +169,16 @@ public class EMLTransformer extends AbstractContentTransformer2 partToUse = part; break; } - else if (part.getContentType().contains(MimetypeMap.MIMETYPE_HTML)){ + else if (part.getContentType().contains(MimetypeMap.MIMETYPE_HTML)) + { partToUse = part; + } + else if (part.getContentType().contains(MimetypeMap.MIMETYPE_MULTIPART_ALTERNATIVE)) + { + if (part.getContent() instanceof Multipart) + { + processAlternativeMultipart((Multipart) part.getContent(), sb); + } } } if (partToUse != null) diff --git a/source/test-java/org/alfresco/repo/content/transform/EMLTransformerTest.java b/source/test-java/org/alfresco/repo/content/transform/EMLTransformerTest.java index 939a1758d9..552725f463 100644 --- a/source/test-java/org/alfresco/repo/content/transform/EMLTransformerTest.java +++ b/source/test-java/org/alfresco/repo/content/transform/EMLTransformerTest.java @@ -53,6 +53,8 @@ public class EMLTransformerTest extends AbstractContentTransformerTest private static final String QUICK_EML_ALTERNATIVE_CONTENT = "alternative plain text"; + private static final String QUICK_EML_NESTED_ALTERNATIVE_CONTENT = "nested alternative plain text"; + private static final String HTML_SPACE_SPECIAL_CHAR = " "; private EMLTransformer transformer; @@ -162,13 +164,33 @@ public class EMLTransformerTest extends AbstractContentTransformerTest assertTrue(contentStr.contains(QUICK_EML_ALTERNATIVE_CONTENT)); } + /** + * Test transforming a valid eml with nested mimetype multipart/alternative to text + */ + public void testRFC822NestedAlternativeToText() throws Exception + { + File emlSourceFile = loadQuickTestFile("nested.alternative.eml"); + File txtTargetFile = TempFileProvider.createTempFile("test5", ".txt"); + ContentReader reader = new FileContentReader(emlSourceFile); + reader.setMimetype(MimetypeMap.MIMETYPE_RFC822); + ContentWriter writer = new FileContentWriter(txtTargetFile); + writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); + + transformer.transform(reader, writer); + + ContentReader reader2 = new FileContentReader(txtTargetFile); + reader2.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); + String contentStr = reader2.getContentString(); + assertTrue(contentStr.contains(QUICK_EML_NESTED_ALTERNATIVE_CONTENT)); + } + /** * Test transforming a valid eml with a html part containing html special characters to text */ public void testHtmlSpecialCharsToText() throws Exception { File emlSourceFile = loadQuickTestFile("htmlChars.eml"); - File txtTargetFile = TempFileProvider.createTempFile("test5", ".txt"); + File txtTargetFile = TempFileProvider.createTempFile("test6", ".txt"); ContentReader reader = new FileContentReader(emlSourceFile); reader.setMimetype(MimetypeMap.MIMETYPE_RFC822); ContentWriter writer = new FileContentWriter(txtTargetFile);