diff options
author | Nick Burch <nick@apache.org> | 2015-08-05 15:58:43 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2015-08-05 15:58:43 +0000 |
commit | 735760f21e91a0e40efe7bff30477099b7d31de0 (patch) | |
tree | 4fc61560a81e45e88ed845f0f3c01f9cbe48b28d /src/scratchpad | |
parent | c90272d65ecb7167f9ed0dd271a9ce6f26692293 (diff) | |
download | poi-735760f21e91a0e40efe7bff30477099b7d31de0.tar.gz poi-735760f21e91a0e40efe7bff30477099b7d31de0.zip |
NPE fix for text extraction from MSG files with only a short name
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1694255 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/scratchpad')
-rw-r--r-- | src/scratchpad/src/org/apache/poi/hsmf/extractor/OutlookTextExtactor.java | 11 | ||||
-rw-r--r-- | src/scratchpad/testcases/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java | 19 |
2 files changed, 27 insertions, 3 deletions
diff --git a/src/scratchpad/src/org/apache/poi/hsmf/extractor/OutlookTextExtactor.java b/src/scratchpad/src/org/apache/poi/hsmf/extractor/OutlookTextExtactor.java index 4ad8b37c15..4cdaf16f82 100644 --- a/src/scratchpad/src/org/apache/poi/hsmf/extractor/OutlookTextExtactor.java +++ b/src/scratchpad/src/org/apache/poi/hsmf/extractor/OutlookTextExtactor.java @@ -25,6 +25,7 @@ import java.util.TimeZone; import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.hsmf.MAPIMessage; import org.apache.poi.hsmf.datatypes.AttachmentChunks; +import org.apache.poi.hsmf.datatypes.StringChunk; import org.apache.poi.hsmf.exceptions.ChunkNotFoundException; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; @@ -65,6 +66,7 @@ public class OutlookTextExtactor extends POIOLE2TextExtractor { new NPOIFSFileSystem(new File(filename)) ); System.out.println( extractor.getText() ); + extractor.close(); } } @@ -146,12 +148,15 @@ public class OutlookTextExtactor extends POIOLE2TextExtractor { // Display attachment names // To get the attachments, use ExtractorFactory for(AttachmentChunks att : msg.getAttachmentFiles()) { - String ats = att.attachLongFileName.getValue(); + StringChunk name = att.attachLongFileName; + if (name == null) name = att.attachFileName; + String attName = name.getValue(); + if(att.attachMimeTag != null && att.attachMimeTag.getValue() != null) { - ats = att.attachMimeTag.getValue() + " = " + ats; + attName = att.attachMimeTag.getValue() + " = " + attName; } - s.append("Attachment: " + ats + "\n"); + s.append("Attachment: " + attName + "\n"); } try { diff --git a/src/scratchpad/testcases/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java b/src/scratchpad/testcases/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java index adbb966a84..5550adbb61 100644 --- a/src/scratchpad/testcases/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java +++ b/src/scratchpad/testcases/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java @@ -209,6 +209,25 @@ public final class TestOutlookTextExtractor extends POITestCase { ext.close(); } + public void testWithAttachedMessage() throws Exception { + POIFSFileSystem simple = new POIFSFileSystem( + new FileInputStream(samples.getFile("58214_with_attachment.msg")) + ); + MAPIMessage msg = new MAPIMessage(simple); + OutlookTextExtactor ext = new OutlookTextExtactor(msg); + String text = ext.getText(); + + // Check we got bits from the main message + assertContains(text, "Master mail"); + assertContains(text, "ante in lacinia euismod"); + + // But not the attached message + assertNotContained(text, "Test mail attachment"); + assertNotContained(text, "Lorem ipsum dolor sit"); + + ext.close(); + } + public void testEncodings() throws Exception { POIFSFileSystem simple = new POIFSFileSystem( new FileInputStream(samples.getFile("chinese-traditional.msg")) |