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
@ -51,6 +51,8 @@ public class MAPIMessage extends POIDocument {
|
|||||||
private RecipientChunks recipientChunks;
|
private RecipientChunks recipientChunks;
|
||||||
private AttachmentChunks[] attachmentChunks;
|
private AttachmentChunks[] attachmentChunks;
|
||||||
|
|
||||||
|
private boolean returnNullOnMissingChunk = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for creating new files.
|
* Constructor for creating new files.
|
||||||
*
|
*
|
||||||
@ -125,8 +127,12 @@ public class MAPIMessage extends POIDocument {
|
|||||||
*/
|
*/
|
||||||
public String getStringFromChunk(StringChunk chunk) throws ChunkNotFoundException {
|
public String getStringFromChunk(StringChunk chunk) throws ChunkNotFoundException {
|
||||||
if(chunk == null) {
|
if(chunk == null) {
|
||||||
|
if(returnNullOnMissingChunk) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
throw new ChunkNotFoundException();
|
throw new ChunkNotFoundException();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return chunk.getValue();
|
return chunk.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,6 +236,8 @@ public class MAPIMessage extends POIDocument {
|
|||||||
if(mainChunks.submissionChunk != null) {
|
if(mainChunks.submissionChunk != null) {
|
||||||
return mainChunks.submissionChunk.getAcceptedAtTime();
|
return mainChunks.submissionChunk.getAcceptedAtTime();
|
||||||
}
|
}
|
||||||
|
if(returnNullOnMissingChunk)
|
||||||
|
return null;
|
||||||
throw new ChunkNotFoundException();
|
throw new ChunkNotFoundException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,4 +276,25 @@ public class MAPIMessage extends POIDocument {
|
|||||||
public void write(OutputStream out) throws IOException {
|
public void write(OutputStream out) throws IOException {
|
||||||
throw new UnsupportedOperationException("Writing isn't yet supported for HSMF, sorry");
|
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 junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.POIDataSamples;
|
import org.apache.poi.POIDataSamples;
|
||||||
|
import org.apache.poi.hsmf.exceptions.ChunkNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests to verify that we can perform basic opperations on
|
* 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(0, outlook30.getAttachmentFiles().length);
|
||||||
assertEquals(2, attachments.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