MIME4J-272 Implicit DOM builder calls
diff --git a/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java b/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java
index 72abff8..3e58c26 100644
--- a/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java
@@ -23,6 +23,7 @@
 import java.io.InputStream;

 

 import org.apache.james.mime4j.MimeException;

+import org.apache.james.mime4j.message.MultipartBuilder;

 

 /**

  * An interface to build instances of {@link Message} and other DOM elements either without

@@ -39,10 +40,14 @@
 

     Multipart newMultipart(Multipart source);

 

+    Multipart newMultipart(MultipartBuilder source);

+

     Message newMessage();

 

     Message newMessage(Message source);

 

+    Message newMessage(Message.Builder source);

+

     Header parseHeader(InputStream source) throws MimeException, IOException;

 

     Message parseMessage(InputStream source) throws MimeException, IOException;

diff --git a/dom/src/main/java/org/apache/james/mime4j/internal/AbstractEntityBuilder.java b/dom/src/main/java/org/apache/james/mime4j/internal/AbstractEntityBuilder.java
index 19ea879..0ab3765 100644
--- a/dom/src/main/java/org/apache/james/mime4j/internal/AbstractEntityBuilder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/internal/AbstractEntityBuilder.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mime4j.internal;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -40,6 +41,9 @@
 import org.apache.james.mime4j.dom.field.FieldName;
 import org.apache.james.mime4j.dom.field.ParsedField;
 import org.apache.james.mime4j.field.Fields;
+import org.apache.james.mime4j.message.BodyPartBuilder;
+import org.apache.james.mime4j.message.MultipartBuilder;
+import org.apache.james.mime4j.message.SingleBodyBuilder;
 import org.apache.james.mime4j.stream.Field;
 import org.apache.james.mime4j.stream.NameValuePair;
 import org.apache.james.mime4j.util.MimeUtil;
@@ -487,6 +491,10 @@
         return this;
     }
 
+    public AbstractEntityBuilder setBody(SingleBodyBuilder body) throws IOException {
+        return this.setBody(body.build());
+    }
+
     /**
      * Sets body of this message.  Also sets the content type based on properties of
      * the given {@link org.apache.james.mime4j.dom.Body}.
@@ -546,6 +554,10 @@
         return this;
     }
 
+    public AbstractEntityBuilder setBody(Message.Builder message) {
+        return this.setBody(message.build());
+    }
+
     /**
      * Sets body of this message.  Also sets the content type based on properties of
      * the given {@link org.apache.james.mime4j.dom.Body}.
@@ -567,6 +579,10 @@
         return this;
     }
 
+    public AbstractEntityBuilder setBody(MultipartBuilder multipart) {
+        return this.setBody(multipart.build());
+    }
+
     /**
      * Returns message body.
      *
diff --git a/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java b/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java
index 9405bfd..db6cff8 100644
--- a/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java
@@ -330,4 +330,11 @@
         return mif.messageImpl();
     }
 
+    public Multipart newMultipart(MultipartBuilder source) {
+        return newMultipart(source.build());
+    }
+
+    public Message newMessage(Message.Builder source) {
+        return newMessage(source.build());
+    }
 }
diff --git a/dom/src/main/java/org/apache/james/mime4j/message/MultipartBuilder.java b/dom/src/main/java/org/apache/james/mime4j/message/MultipartBuilder.java
index baeeaf4..e33f979 100644
--- a/dom/src/main/java/org/apache/james/mime4j/message/MultipartBuilder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/message/MultipartBuilder.java
@@ -129,6 +129,10 @@
         return this;
     }
 
+    public MultipartBuilder addBodyPart(BodyPartBuilder bodyPart) {
+        return this.addBodyPart(bodyPart.build());
+    }
+
     /**
      * Inserts a body part at the specified position in the list of body parts.
      *