private NameIdChunks nameIdChunks;
private RecipientChunks recipientChunks;
private AttachmentChunks[] attachmentChunks;
+
+ private boolean returnNullOnMissingChunk = false;
/**
* Constructor for creating new files.
*/
public String getStringFromChunk(StringChunk chunk) throws ChunkNotFoundException {
if(chunk == null) {
- throw new ChunkNotFoundException();
+ if(returnNullOnMissingChunk) {
+ return null;
+ } else {
+ throw new ChunkNotFoundException();
+ }
}
return chunk.getValue();
}
if(mainChunks.submissionChunk != null) {
return mainChunks.submissionChunk.getAcceptedAtTime();
}
+ if(returnNullOnMissingChunk)
+ return null;
throw new ChunkNotFoundException();
}
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;
+ }
+
+
}
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
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
+ }
+ }
}