Merge pull request #40 from chibenwa/MIME4J-299

MIME4J-299 Access to the Header map
diff --git a/dom/src/main/java/org/apache/james/mime4j/dom/Header.java b/dom/src/main/java/org/apache/james/mime4j/dom/Header.java
index f28863d..707012b 100644
--- a/dom/src/main/java/org/apache/james/mime4j/dom/Header.java
+++ b/dom/src/main/java/org/apache/james/mime4j/dom/Header.java
@@ -21,6 +21,7 @@
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.james.mime4j.stream.Field;
 
@@ -45,6 +46,15 @@
     List<Field> getFields();
 
     /**
+     * Gets the fields of this header. The returned map will not be
+     * modifiable. For each header name, values are ordered by which
+     * they appear in the underlying entity.
+     *
+     * @return the map of <code>Field</code> objects indexed by names.
+     */
+    Map<String, List<Field>> getFieldsAsMap();
+
+    /**
      * Gets a <code>Field</code> given a field name. If there are multiple
      * such fields defined in this header the first one will be returned.
      *
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 6b121ed..63ac5af 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
@@ -88,6 +88,18 @@
     }
 
     /**
+     * Gets the fields of this header. The returned map will not be
+     * modifiable. For each header name, values are ordered by which
+     * they appear in the underlying entity.
+     *
+     * @return the map of <code>Field</code> objects indexed by names.
+     */
+    @Override
+    public Map<String, List<Field>> getFieldsAsMap() {
+        return Collections.unmodifiableMap(fieldMap);
+    }
+
+    /**
      * Gets a <code>Field</code> given a field name. If there are multiple
      * such fields defined in this header the first one will be returned.
      *