Make it possible to return null on missing chunks, rather than the exception
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@897847 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e605489dc0
commit
5621bb0800
@ -50,6 +50,8 @@ public class MAPIMessage extends POIDocument {
|
||||
private NameIdChunks nameIdChunks;
|
||||
private RecipientChunks recipientChunks;
|
||||
private AttachmentChunks[] attachmentChunks;
|
||||
|
||||
private boolean returnNullOnMissingChunk = false;
|
||||
|
||||
/**
|
||||
* Constructor for creating new files.
|
||||
@ -125,7 +127,11 @@ public class MAPIMessage extends POIDocument {
|
||||
*/
|
||||
public String getStringFromChunk(StringChunk chunk) throws ChunkNotFoundException {
|
||||
if(chunk == null) {
|
||||
throw new ChunkNotFoundException();
|
||||
if(returnNullOnMissingChunk) {
|
||||
return null;
|
||||
} else {
|
||||
throw new ChunkNotFoundException();
|
||||
}
|
||||
}
|
||||
return chunk.getValue();
|
||||
}
|
||||
@ -230,6 +236,8 @@ public class MAPIMessage extends POIDocument {
|
||||
if(mainChunks.submissionChunk != null) {
|
||||
return mainChunks.submissionChunk.getAcceptedAtTime();
|
||||
}
|
||||
if(returnNullOnMissingChunk)
|
||||
return null;
|
||||
throw new ChunkNotFoundException();
|
||||
}
|
||||
|
||||
@ -268,4 +276,25 @@ public class MAPIMessage extends POIDocument {
|
||||
public void write(OutputStream out) throws IOException {
|
||||
throw new UnsupportedOperationException("Writing isn't yet supported for HSMF, sorry");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Will you get a null on a missing chunk, or a
|
||||
* {@link ChunkNotFoundException} (default is the
|
||||
* exception).
|
||||
*/
|
||||
public boolean isReturnNullOnMissingChunk() {
|
||||
return returnNullOnMissingChunk;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether on asking for a missing chunk,
|
||||
* you get back null or a {@link ChunkNotFoundException}
|
||||
* (default is the exception).
|
||||
*/
|
||||
public void setReturnNullOnMissingChunk(boolean returnNullOnMissingChunk) {
|
||||
this.returnNullOnMissingChunk = returnNullOnMissingChunk;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ import java.io.IOException;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.hsmf.exceptions.ChunkNotFoundException;
|
||||
|
||||
/**
|
||||
* Tests to verify that we can perform basic opperations on
|
||||
@ -74,4 +75,31 @@ public final class TestBasics extends TestCase {
|
||||
assertEquals(0, outlook30.getAttachmentFiles().length);
|
||||
assertEquals(2, attachments.getAttachmentFiles().length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test missing chunks
|
||||
*/
|
||||
public void testMissingChunks() throws Exception {
|
||||
assertEquals(false, attachments.isReturnNullOnMissingChunk());
|
||||
|
||||
try {
|
||||
attachments.getMessageDate();
|
||||
fail();
|
||||
} catch(ChunkNotFoundException e) {
|
||||
// Good
|
||||
}
|
||||
|
||||
attachments.setReturnNullOnMissingChunk(true);
|
||||
|
||||
assertEquals(null, attachments.getMessageDate());
|
||||
|
||||
attachments.setReturnNullOnMissingChunk(false);
|
||||
|
||||
try {
|
||||
attachments.getMessageDate();
|
||||
fail();
|
||||
} catch(ChunkNotFoundException e) {
|
||||
// Good
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user