aboutsummaryrefslogtreecommitdiffstats
path: root/src/scratchpad
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2015-08-05 15:58:43 +0000
committerNick Burch <nick@apache.org>2015-08-05 15:58:43 +0000
commit735760f21e91a0e40efe7bff30477099b7d31de0 (patch)
tree4fc61560a81e45e88ed845f0f3c01f9cbe48b28d /src/scratchpad
parentc90272d65ecb7167f9ed0dd271a9ce6f26692293 (diff)
downloadpoi-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.java11
-rw-r--r--src/scratchpad/testcases/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java19
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"))