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
This commit is contained in:
Nick Burch 2010-06-14 13:47:22 +00:00
parent 36c5190f57
commit 64cfb8b399
4 changed files with 44 additions and 1 deletions

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">

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 {

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);
}
}

Binary file not shown.