MIME4J-307 AbstractHeader::getField (with cast) should handle missing header (#59)
diff --git a/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java b/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java
index c83de6f..7b1af55 100644
--- a/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java
+++ b/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java
@@ -125,6 +125,9 @@
*/
public <F extends Field> F getField(final String name, final Class<F> clazz) {
List<Field> l = fieldMap.get(name.toLowerCase(Locale.US));
+ if (l == null) {
+ return null;
+ }
for (int i = 0; i < l.size(); i++) {
Field field = l.get(i);
if (clazz.isInstance(field)) {
diff --git a/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java b/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java
index ce4de42..3a1a2e2 100644
--- a/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java
+++ b/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java
@@ -32,6 +32,7 @@
import org.apache.james.mime4j.dom.address.MailboxList;
import org.apache.james.mime4j.dom.field.ContentTypeField;
import org.apache.james.mime4j.dom.field.FieldName;
+import org.apache.james.mime4j.dom.field.MailboxField;
import org.apache.james.mime4j.field.DefaultFieldParser;
import org.apache.james.mime4j.field.Fields;
import org.apache.james.mime4j.field.address.DefaultAddressParser;
@@ -432,4 +433,17 @@
Assert.assertSame(original.getBody().getClass(), builder.getBody().getClass());
}
+ @Test
+ public void getFieldShouldReturnNullOnMissingHeader() throws Exception {
+ Message original = Message.Builder.of()
+ .generateMessageId("hostname")
+ .setSubject("testing ...")
+ .setFrom("batman@localhost", "superman@localhost")
+ .setTo("\"Big momma\" <big_momma@localhost>")
+ .setBody("Yo, big momma!", Charsets.UTF_8)
+ .build();
+
+ Assert.assertNull(original.getHeader().getField("Sender", MailboxField.class));
+ }
+
}