Browse Source

Better handling of Outlook messages in HSMF when there's no recipient email address

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@954476 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_7_BETA1^2
Nick Burch 14 years ago
parent
commit
64cfb8b399

+ 1
- 0
src/documentation/content/xdocs/status.xml View File

@@ -34,6 +34,7 @@

<changes>
<release version="3.7-beta2" date="2010-??-??">
<action dev="POI-DEVELOPERS" type="fix">Better handling of Outlook messages in HSMF when there's no recipient email address</action>
<action dev="POI-DEVELOPERS" type="fix">When formatting numbers with DataFormatter, handle brackets following colours</action>
</release>
<release version="3.7-beta1" date="2010-06-16">

+ 6
- 1
src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java View File

@@ -239,7 +239,11 @@ public class MAPIMessage extends POIDocument {
if(email != null) {
emails[i] = email;
} else {
throw new ChunkNotFoundException("No email address holding chunks found for the " + (i+1) + "th recipient");
if(returnNullOnMissingChunk) {
emails[i] = null;
} else {
throw new ChunkNotFoundException("No email address holding chunks found for the " + (i+1) + "th recipient");
}
}
}

@@ -393,6 +397,7 @@ public class MAPIMessage extends POIDocument {
boolean first = true;

for(String s : l) {
if(s == null) continue;
if(first) {
first = false;
} else {

+ 37
- 0
src/scratchpad/testcases/org/apache/poi/hsmf/TestBasics.java View File

@@ -33,6 +33,7 @@ public final class TestBasics extends TestCase {
private MAPIMessage quick;
private MAPIMessage outlook30;
private MAPIMessage attachments;
private MAPIMessage noRecipientAddress;

/**
* Initialize this test, load up the blank.msg mapi message.
@@ -44,6 +45,7 @@ public final class TestBasics extends TestCase {
quick = new MAPIMessage(samples.openResourceAsStream("quick.msg"));
outlook30 = new MAPIMessage(samples.openResourceAsStream("outlook_30_msg.msg"));
attachments = new MAPIMessage(samples.openResourceAsStream("attachment_test_msg.msg"));
noRecipientAddress = new MAPIMessage(samples.openResourceAsStream("no_recipient_address.msg"));
}
/**
@@ -140,4 +142,39 @@ public final class TestBasics extends TestCase {
// Good
}
}
/**
* More missing chunk testing, this time for
* missing recipient email address
*/
public void testMissingAddressChunk() throws Exception {
assertEquals(false, noRecipientAddress.isReturnNullOnMissingChunk());

try {
noRecipientAddress.getRecipientEmailAddress();
fail();
} catch(ChunkNotFoundException e) {
// Good
}
try {
noRecipientAddress.getRecipientEmailAddressList();
fail();
} catch(ChunkNotFoundException e) {
// Good
}
noRecipientAddress.setReturnNullOnMissingChunk(true);
noRecipientAddress.getRecipientEmailAddress();
noRecipientAddress.getRecipientEmailAddressList();
assertEquals("", noRecipientAddress.getRecipientEmailAddress());
assertEquals(1, noRecipientAddress.getRecipientEmailAddressList().length);
assertEquals(null, noRecipientAddress.getRecipientEmailAddressList()[0]);
// Check a few other bits too
assertEquals("Microsoft Outlook 2003 Team", noRecipientAddress.getDisplayFrom());
assertEquals("New Outlook User", noRecipientAddress.getDisplayTo());
noRecipientAddress.setReturnNullOnMissingChunk(false);
}
}

BIN
test-data/hsmf/no_recipient_address.msg View File


Loading…
Cancel
Save