You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mime4j-dev@james.apache.org by ol...@apache.org on 2011/01/26 23:38:39 UTC

svn commit: r1063904 [1/2] - in /james/mime4j/trunk: ./ benchmark/src/main/java/org/apache/james/mime4j/ core/src/main/java/org/apache/james/mime4j/parser/ dom/src/main/java/org/apache/james/mime4j/dom/ dom/src/main/java/org/apache/james/mime4j/field/ ...

Author: olegk
Date: Wed Jan 26 22:38:38 2011
New Revision: 1063904

URL: http://svn.apache.org/viewvc?rev=1063904&view=rev
Log:
Message builder / formatter API refactoring (merged from refactoring branch)

Added:
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageFormatter.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/MessageFormatter.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageServiceFactory.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/MessageServiceFactory.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/ParseParams.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/ParseParams.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/ServiceLoaderException.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/ServiceLoaderException.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageFormatterImpl.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageFormatterImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageServiceFactoryImpl.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageServiceFactoryImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java
    james/mime4j/trunk/dom/src/main/resources/META-INF/services/org.apache.james.mime4j.dom.MessageServiceFactory
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/main/resources/META-INF/services/org.apache.james.mime4j.dom.MessageServiceFactory
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageServiceFactoryTest.java
      - copied unchanged from r1063861, james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageServiceFactoryTest.java
Removed:
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilderFactory.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderFactoryImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageWriter.java
    james/mime4j/trunk/dom/src/main/resources/META-INF/services/org.apache.james.mime4j.dom.MessageBuilderFactory
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageBuilderFactoryTest.java
Modified:
    james/mime4j/trunk/   (props changed)
    james/mime4j/trunk/benchmark/src/main/java/org/apache/james/mime4j/LongMultipartReadBench.java
    james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Message.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/ServiceLoader.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AddressListFieldImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxFieldImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxListFieldImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressBuilder.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressFormatter.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageCompleteMailTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageHeadlessParserTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MultipartFormTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
    james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/address/AddressTest.java
    james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java
    james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java
    james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/transform/TransformMessage.java
    james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/tree/MessageTree.java

Propchange: james/mime4j/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 26 22:38:38 2011
@@ -1 +1 @@
-/james/mime4j/branches/dom-api-refactoring:1058069-1060896
+/james/mime4j/branches/dom-api-refactoring:1058069-1063861

Modified: james/mime4j/trunk/benchmark/src/main/java/org/apache/james/mime4j/LongMultipartReadBench.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/benchmark/src/main/java/org/apache/james/mime4j/LongMultipartReadBench.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/benchmark/src/main/java/org/apache/james/mime4j/LongMultipartReadBench.java (original)
+++ james/mime4j/trunk/benchmark/src/main/java/org/apache/james/mime4j/LongMultipartReadBench.java Wed Jan 26 22:38:38 2011
@@ -171,7 +171,7 @@ public class LongMultipartReadBench {
             DefaultStorageProvider.setInstance(new MemoryStorageProvider());
 
             for (int i = 0; i < repetitions; i++) {
-                MimeBuilder.parse(new ByteArrayInputStream(content));
+                MimeBuilder.DEFAULT.parse(new ByteArrayInputStream(content));
             }
         }
     }

Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java Wed Jan 26 22:38:38 2011
@@ -192,32 +192,33 @@ public class MimeStreamParser {
     }
     
     /**
-     * Enables or disables raw mode. In raw mode all future entities 
-     * (messages or body parts) in the stream will be reported to the
+     * Enables raw mode. In raw mode all future entities (messages 
+     * or body parts) in the stream will be reported to the
      * {@link ContentHandler#raw(InputStream)} handler method only.
      * The stream will contain the entire unparsed entity contents 
      * including header fields and whatever is in the body.
-     * 
-     * @param raw <code>true</code> enables raw mode, <code>false</code>
-     *        disables it.
      */
-    public void setRaw(boolean raw) {
+    public void setRaw() {
         mimeTokenStream.setRecursionMode(MimeTokenStream.M_RAW);
     }
     
     /**
-     * Enables or disables flat mode. In flat mode rfc822 parts are not
-     * recursively parsed and multipart content is handled as a single
-     * "simple" stream.
-     * 
-     * @param raw <code>true</code> enables raw mode, <code>false</code>
-     *        disables it.
+     * Enables flat mode. In flat mode rfc822 parts are not recursively 
+     * parsed and multipart content is handled as a single "simple" stream.
      */
-    public void setFlat(boolean flat) {
+    public void setFlat() {
         mimeTokenStream.setRecursionMode(MimeTokenStream.M_FLAT);
     }
     
     /**
+     * Enables recursive mode. In tihs mode rfc822 parts are recursively 
+     * parsed.
+     */
+    public void setRecurse() {
+        mimeTokenStream.setRecursionMode(MimeTokenStream.M_RECURSE);
+    }
+
+    /**
      * Finishes the parsing and stops reading lines.
      * NOTE: No more lines will be parsed but the parser
      * will still call 

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Message.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Message.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Message.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Message.java Wed Jan 26 22:38:38 2011
@@ -19,8 +19,6 @@
 
 package org.apache.james.mime4j.dom;
 
-import java.io.IOException;
-import java.io.OutputStream;
 import java.util.Collection;
 import java.util.Date;
 import java.util.TimeZone;
@@ -33,16 +31,6 @@ import org.apache.james.mime4j.dom.addre
 public interface Message extends Entity, Body {
 
     /**
-     * Write the content to the given output stream.
-     * 
-     * @param out
-     *            the output stream to write to.
-     * @throws IOException
-     *             in case of an I/O error
-     */
-    void writeTo(OutputStream out) throws IOException;
-
-    /**
      * Returns the value of the <i>Message-ID</i> header field of this message
      * or <code>null</code> if it is not present.
      * 

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java Wed Jan 26 22:38:38 2011
@@ -28,19 +28,15 @@ import org.apache.james.mime4j.codec.Dec
 /**
  * Defines the API to obtain Message instances from a mime stream.
  */
-public abstract class MessageBuilder {
+public interface MessageBuilder {
     
-    public abstract Message newMessage();
+    Message newMessage();
+          
+    Message newMessage(Message source);
+          
+    Message parse(InputStream source) throws MimeException, IOException;
+          
+    Message parse(InputStream source, 
+            ParseParams params, DecodeMonitor decodeMonitor) throws MimeException, IOException;
 
-    public abstract Message newMessage(Message source);
-
-    public abstract Message parse(InputStream source) throws MimeException, IOException;
-
-    public abstract void setDecodeMonitor(
-            DecodeMonitor decodeMonitor);
-
-    public abstract void setContentDecoding(boolean contentDecoding);
-    
-    public abstract void setFlatMode();
-
-}
+}
\ No newline at end of file

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/ServiceLoader.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/ServiceLoader.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/ServiceLoader.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/ServiceLoader.java Wed Jan 26 22:38:38 2011
@@ -20,6 +20,7 @@ package org.apache.james.mime4j.dom;
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
 import java.util.Enumeration;
@@ -40,56 +41,50 @@ class ServiceLoader {
     static <T> T load(Class<T> spiClass) {
         String spiResURI = "META-INF/services/" + spiClass.getName();
         ClassLoader classLoader = spiClass.getClassLoader();
-        Enumeration<URL> resources;
         try {
-            resources = classLoader.getResources(spiResURI);
-        } catch (IOException e) {
-            return null;
-        }
-
-        while (resources.hasMoreElements()) {
-            URL resource = resources.nextElement();
-            BufferedReader reader = null;
-            try {
-                reader = new BufferedReader(new InputStreamReader(resource
-                        .openStream()));
-                String line;
-                while ((line = reader.readLine()) != null) {
-                    line = line.trim();
-                    int cmtIdx = line.indexOf('#');
-                    if (cmtIdx != -1) {
-                        line = line.substring(0, cmtIdx);
+             Enumeration<URL> resources = classLoader.getResources(spiResURI);
+             while (resources.hasMoreElements()) {
+                 URL resource = resources.nextElement();
+                 InputStream instream = resource.openStream();
+                 try {
+                     BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
+                     String line;
+                     while ((line = reader.readLine()) != null) {
                         line = line.trim();
-                    }
-
-                    if (line.length() == 0) {
-                        continue;
-                    }
+                         int cmtIdx = line.indexOf('#');
+                         if (cmtIdx != -1) {
+                             line = line.substring(0, cmtIdx);
+                             line = line.trim();
+                         }
+
+                         if (line.length() == 0) {
+                             continue;
+                         }
 
-                    Class<?> implClass;
-                    try {
-                        implClass = classLoader.loadClass(line);
-                        
+                         Class<?> implClass = classLoader.loadClass(line);
                         if (spiClass.isAssignableFrom(implClass)) {
                             Object impl = implClass.newInstance();
                             return spiClass.cast(impl);
                         }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-            } finally {
-                if (reader != null) {
-                    try {
-                        reader.close();
-                    } catch (IOException e) {
                     }
+                     reader.close();
+                 } finally {
+                     instream.close();
                 }
             }
+             return null;
+         } catch (IOException ex) {
+             throw new ServiceLoaderException(ex);
+         } catch (ClassNotFoundException ex) {
+             throw new ServiceLoaderException("Unknown SPI class '" 
+                     + spiClass.getName() + "'", ex);
+         } catch (IllegalAccessException ex) {
+             // Not visible
+             return null;
+         } catch (InstantiationException ex) {
+             throw new ServiceLoaderException("SPI class '" 
+                     + spiClass.getName() + "' cannot be instantiated", ex);
         }
-
-        return null;
     }
+
 }
\ No newline at end of file

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AddressListFieldImpl.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AddressListFieldImpl.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AddressListFieldImpl.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AddressListFieldImpl.java Wed Jan 26 22:38:38 2011
@@ -64,7 +64,7 @@ public class AddressListFieldImpl extend
         String body = getBody();
 
         try {
-            addressList = AddressBuilder.parseAddressList(body, monitor);
+            addressList = AddressBuilder.DEFAULT.parseAddressList(body, monitor);
         } catch (ParseException e) {
             parseException = e;
         }

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java Wed Jan 26 22:38:38 2011
@@ -635,7 +635,7 @@ public class Fields {
             if (sb.length() > 0) {
                 sb.append(", ");
             }
-            AddressFormatter.encode(sb, address);
+            AddressFormatter.DEFAULT.encode(sb, address);
         }
         return sb.toString();
     }

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxFieldImpl.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxFieldImpl.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxFieldImpl.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxFieldImpl.java Wed Jan 26 22:38:38 2011
@@ -64,7 +64,7 @@ public class MailboxFieldImpl extends Ab
         String body = getBody();
 
         try {
-            MailboxList mailboxList = AddressBuilder.parseAddressList(body, monitor).flatten();
+            MailboxList mailboxList = AddressBuilder.DEFAULT.parseAddressList(body, monitor).flatten();
             if (mailboxList.size() > 0) {
                 mailbox = mailboxList.get(0);
             }

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxListFieldImpl.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxListFieldImpl.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxListFieldImpl.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/MailboxListFieldImpl.java Wed Jan 26 22:38:38 2011
@@ -63,7 +63,7 @@ public class MailboxListFieldImpl extend
         String body = getBody();
 
         try {
-            mailboxList = AddressBuilder.parseAddressList(body, monitor).flatten();
+            mailboxList = AddressBuilder.DEFAULT.parseAddressList(body, monitor).flatten();
         } catch (ParseException e) {
             parseException = e;
         }

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressBuilder.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressBuilder.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressBuilder.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressBuilder.java Wed Jan 26 22:38:38 2011
@@ -31,6 +31,12 @@ import org.apache.james.mime4j.field.add
 
 public class AddressBuilder {
 
+    public static final AddressBuilder DEFAULT = new AddressBuilder();
+    
+    protected AddressBuilder() {
+        super();
+    }
+    
     /**
      * Parses the specified raw string into an address.
      * 
@@ -40,13 +46,13 @@ public class AddressBuilder {
      * @return an <code>Address</code> object for the specified string.
      * @throws ParseException if the raw string does not represent a single address.
      */
-    public static Address parseAddress(String rawAddressString, DecodeMonitor monitor) throws ParseException {
+    public Address parseAddress(String rawAddressString, DecodeMonitor monitor) throws ParseException {
         AddressListParser parser = new AddressListParser(new StringReader(
                 rawAddressString));
         return Builder.getInstance().buildAddress(parser.parseAddress(), monitor);
     }
 
-    public static Address parseAddress(String rawAddressString) throws ParseException {
+    public Address parseAddress(String rawAddressString) throws ParseException {
         return parseAddress(rawAddressString, DecodeMonitor.STRICT);
     }
 
@@ -57,14 +63,14 @@ public class AddressBuilder {
      * The string MUST be unfolded already.
      * @param monitor the DecodeMonitor to be used while parsing/decoding
      */
-    public static AddressList parseAddressList(String rawAddressList, DecodeMonitor monitor)
+    public AddressList parseAddressList(String rawAddressList, DecodeMonitor monitor)
             throws ParseException {
         AddressListParser parser = new AddressListParser(new StringReader(
                 rawAddressList));
         return Builder.getInstance().buildAddressList(parser.parseAddressList(), monitor);
     }
 
-    public static AddressList parseAddressList(String rawAddressList) throws ParseException {
+    public AddressList parseAddressList(String rawAddressList) throws ParseException {
         return parseAddressList(rawAddressList, DecodeMonitor.STRICT);
     }
 
@@ -79,13 +85,13 @@ public class AddressBuilder {
      *             if the raw string does not represent a single mailbox
      *             address.
      */
-    public static Mailbox parseMailbox(String rawMailboxString, DecodeMonitor monitor) throws ParseException {
+    public Mailbox parseMailbox(String rawMailboxString, DecodeMonitor monitor) throws ParseException {
         AddressListParser parser = new AddressListParser(new StringReader(
                 rawMailboxString));
         return Builder.getInstance().buildMailbox(parser.parseMailbox(), monitor);
     }
 
-    public static Mailbox parseMailbox(String rawMailboxString) throws ParseException {
+    public Mailbox parseMailbox(String rawMailboxString) throws ParseException {
         return parseMailbox(rawMailboxString, DecodeMonitor.STRICT);
     }
 
@@ -98,7 +104,7 @@ public class AddressBuilder {
      * @throws ParseException
      *             if the raw string does not represent a single group address.
      */
-    public static Group parseGroup(String rawGroupString, DecodeMonitor monitor) throws ParseException {
+    public Group parseGroup(String rawGroupString, DecodeMonitor monitor) throws ParseException {
         Address address = parseAddress(rawGroupString, monitor);
         if (!(address instanceof Group))
             throw new ParseException("Not a group address");
@@ -106,7 +112,7 @@ public class AddressBuilder {
         return (Group) address;
     }
 
-    public static Group parseGroup(String rawGroupString) throws ParseException {
+    public Group parseGroup(String rawGroupString) throws ParseException {
         return parseGroup(rawGroupString, DecodeMonitor.STRICT);
     }
 

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressFormatter.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressFormatter.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressFormatter.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/address/AddressFormatter.java Wed Jan 26 22:38:38 2011
@@ -26,6 +26,12 @@ import org.apache.james.mime4j.dom.addre
 
 public class AddressFormatter {
 
+    public static final AddressFormatter DEFAULT = new AddressFormatter();
+    
+    protected AddressFormatter() {
+        super();
+    }
+    
     /**
      * Formats the address as a human readable string, not including the route.
      * The resulting string is intended for display purposes only and cannot be
@@ -47,7 +53,7 @@ public class AddressFormatter {
      *            exists, <code>false</code> otherwise.
      * @return a string representation of this address intended to be displayed.
      */
-    public static void format(final StringBuilder sb, final Address address, boolean includeRoute) {
+    public void format(final StringBuilder sb, final Address address, boolean includeRoute) {
         if (address == null) {
             return;
         }
@@ -69,7 +75,7 @@ public class AddressFormatter {
      * @return a string representation of this address intended for transport
      *         purposes.
      */
-    public static void encode(final StringBuilder sb, final Address address) {
+    public void encode(final StringBuilder sb, final Address address) {
         if (address == null) {
             return;
         }
@@ -82,7 +88,7 @@ public class AddressFormatter {
         }
     }
     
-    public static void format(final StringBuilder sb, final Mailbox mailbox, boolean includeRoute) {
+    public void format(final StringBuilder sb, final Mailbox mailbox, boolean includeRoute) {
         if (sb == null) {
             throw new IllegalArgumentException("StringBuilder may not be null");
         }
@@ -112,13 +118,13 @@ public class AddressFormatter {
         }
     }
     
-    public static String format(final Mailbox mailbox, boolean includeRoute) {
+    public String format(final Mailbox mailbox, boolean includeRoute) {
         StringBuilder sb = new StringBuilder();
         format(sb, mailbox, includeRoute);
         return sb.toString();
     }
     
-    public static void encode(final StringBuilder sb, final Mailbox mailbox) {
+    public void encode(final StringBuilder sb, final Mailbox mailbox) {
         if (sb == null) {
             throw new IllegalArgumentException("StringBuilder may not be null");
         }
@@ -142,13 +148,13 @@ public class AddressFormatter {
         }
     }
     
-    public static String encode(final Mailbox mailbox) {
+    public String encode(final Mailbox mailbox) {
         StringBuilder sb = new StringBuilder();
         encode(sb, mailbox);
         return sb.toString();
     }
 
-    public static void format(final StringBuilder sb, final Group group, boolean includeRoute) {
+    public void format(final StringBuilder sb, final Group group, boolean includeRoute) {
         if (sb == null) {
             throw new IllegalArgumentException("StringBuilder may not be null");
         }
@@ -171,13 +177,13 @@ public class AddressFormatter {
         sb.append(";");
     }
     
-    public static String format(final Group group, boolean includeRoute) {
+    public String format(final Group group, boolean includeRoute) {
         StringBuilder sb = new StringBuilder();
         format(sb, group, includeRoute);
         return sb.toString();
     }
     
-    public static void encode(final StringBuilder sb, final Group group) {
+    public void encode(final StringBuilder sb, final Group group) {
         if (sb == null) {
             throw new IllegalArgumentException("StringBuilder may not be null");
         }
@@ -200,7 +206,7 @@ public class AddressFormatter {
         sb.append(';');
     }
 
-    public static String encode(final Group group) {
+    public String encode(final Group group) {
         StringBuilder sb = new StringBuilder();
         encode(sb, group);
         return sb.toString();

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java Wed Jan 26 22:38:38 2011
@@ -1,3 +1,22 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
 package org.apache.james.mime4j.message;
 
 import java.io.IOException;
@@ -7,6 +26,7 @@ import org.apache.james.mime4j.MimeExcep
 import org.apache.james.mime4j.codec.DecodeMonitor;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.mime4j.dom.MessageBuilder;
+import org.apache.james.mime4j.dom.ParseParams;
 import org.apache.james.mime4j.storage.StorageProvider;
 import org.apache.james.mime4j.stream.MimeEntityConfig;
 import org.apache.james.mime4j.stream.MutableBodyDescriptorFactory;
@@ -15,44 +35,53 @@ import org.apache.james.mime4j.stream.Mu
  * Default MessageBuilder implementation delegating Message parsing to the "legacy"
  * MessageImpl object.
  */
-public class MessageBuilderImpl extends MessageBuilder {
+public class MessageBuilderImpl implements MessageBuilder {
 
+    private MimeBuilder mimeBuilder = null;
     private StorageProvider storageProvider = null;
-    private DecodeMonitor decodeMonitor = null;
     private MimeEntityConfig mimeEntityConfig = null;
     private MutableBodyDescriptorFactory mutableBodyDescriptorFactory = null;
-    private boolean flatMode = false;
-    private boolean contentDecoding = true;
 
     public MessageBuilderImpl() {
     }
 
-    @Override
     public Message newMessage() {
         return new MessageImpl();
     }
 
-    @Override
+    private MimeBuilder getMimeBuilder() {
+        if (this.mimeBuilder != null) {
+            return this.mimeBuilder;
+        } else {
+            return MimeBuilder.DEFAULT;
+        }
+        
+    }
+    
     public Message newMessage(Message source) {
-        return MimeBuilder.copy(source);
+        return getMimeBuilder().copy(source);
     }
 
-    @Override
     public Message parse(InputStream source) throws MimeException, IOException {
-        return MimeBuilder.parse(source, 
+        return getMimeBuilder().parse(source, 
                 mimeEntityConfig, 
                 storageProvider, 
                 mutableBodyDescriptorFactory, 
-                decodeMonitor, 
-                contentDecoding, 
-                flatMode);
+                null,
+                null);
     }
-
-    @Override
-    public void setDecodeMonitor(DecodeMonitor decodeMonitor) {
-        this.decodeMonitor = decodeMonitor;
+    
+    public Message parse(
+            InputStream source, 
+            ParseParams params, DecodeMonitor decodeMonitor) throws MimeException, IOException {
+        return getMimeBuilder().parse(source, 
+                mimeEntityConfig, 
+                storageProvider, 
+                mutableBodyDescriptorFactory, 
+                params,
+                decodeMonitor);
     }
-
+    
     public void setStorageProvider(StorageProvider storageProvider) {
         this.storageProvider = storageProvider;
     }
@@ -66,14 +95,8 @@ public class MessageBuilderImpl extends 
         this.mutableBodyDescriptorFactory  = mutableBodyDescriptorFactory;
     }
 
-    @Override
-    public void setContentDecoding(boolean contentDecoding) {
-        this.contentDecoding  = contentDecoding;
-    }
-
-    @Override
-    public void setFlatMode() {
-        this.flatMode = true;
+    public void setMimeBuilder(MimeBuilder mimeBuilder) {
+        this.mimeBuilder = mimeBuilder;
     }
 
 }

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java Wed Jan 26 22:38:38 2011
@@ -19,8 +19,6 @@
 
 package org.apache.james.mime4j.message;
 
-import java.io.IOException;
-import java.io.OutputStream;
 import java.util.Collection;
 import java.util.Date;
 import java.util.Map;
@@ -53,13 +51,6 @@ public class MessageImpl extends Abstrac
     public MessageImpl() {
     }
 
-    /**
-     * @see org.apache.james.mime4j.dom.Message#writeTo(java.io.OutputStream)
-     */
-    public void writeTo(OutputStream out) throws IOException {
-        MessageWriter.DEFAULT.writeEntity(this, out);
-    }
-
     @Override
     protected String newUniqueBoundary() {
         return MimeUtil.createUniqueBoundary();

Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java Wed Jan 26 22:38:38 2011
@@ -31,6 +31,7 @@ import org.apache.james.mime4j.dom.Entit
 import org.apache.james.mime4j.dom.Header;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.mime4j.dom.Multipart;
+import org.apache.james.mime4j.dom.ParseParams;
 import org.apache.james.mime4j.dom.SingleBody;
 import org.apache.james.mime4j.dom.field.Field;
 import org.apache.james.mime4j.field.DefaultFieldParser;
@@ -45,9 +46,12 @@ import org.apache.james.mime4j.stream.Ra
 /**
  * Utility class for copying message and parsing message elements.
  */
-public final class MimeBuilder {
+public class MimeBuilder {
 
-    private MimeBuilder() {
+    public static final MimeBuilder DEFAULT = new MimeBuilder();
+    
+    protected MimeBuilder() {
+        super();
     }
 
     /**
@@ -60,7 +64,7 @@ public final class MimeBuilder {
      * @param other
      *            header to copy.
      */
-    public static Header copy(Header other) {
+    public Header copy(Header other) {
         HeaderImpl copy = new HeaderImpl();
         for (Field otherField : other.getFields()) {
             copy.addField(otherField);
@@ -85,7 +89,7 @@ public final class MimeBuilder {
      *             is neither a {@link Message}, {@link Multipart} or
      *             {@link SingleBody}.
      */
-    public static BodyPart copy(Entity other) {
+    public BodyPart copy(Entity other) {
         BodyPart copy = new BodyPart(); 
         if (other.getHeader() != null) {
             copy.setHeader(copy(other.getHeader()));
@@ -114,7 +118,7 @@ public final class MimeBuilder {
      *             is neither a {@link Message}, {@link Multipart} or
      *             {@link SingleBody}.
      */
-    public static Multipart copy(Multipart other) {
+    public Multipart copy(Multipart other) {
         MultipartImpl copy = new MultipartImpl(other.getSubType());
         for (Entity otherBodyPart : other.getBodyParts()) {
             copy.addBodyPart(copy(otherBodyPart));
@@ -147,7 +151,7 @@ public final class MimeBuilder {
      *             a {@link MessageImpl}, {@link Multipart} or {@link SingleBody}
      *             (or contains such a <code>Body</code>).
      */
-    public static Body copy(Body body) {
+    public Body copy(Body body) {
         if (body == null)
             throw new IllegalArgumentException("Body is null");
 
@@ -181,7 +185,7 @@ public final class MimeBuilder {
      *             is neither a {@link MessageImpl}, {@link Multipart} or
      *             {@link SingleBody}.
      */
-    public static Message copy(Message other) {
+    public Message copy(Message other) {
         MessageImpl copy = new MessageImpl();
         if (other.getHeader() != null) {
             copy.setHeader(copy(other.getHeader()));
@@ -200,7 +204,7 @@ public final class MimeBuilder {
      * @throws IOException on I/O errors.
      * @throws MimeIOException on MIME protocol violations.
      */
-    public static Header parse(
+    public Header parse(
             final InputStream is,
             final DecodeMonitor monitor) throws IOException, MimeIOException {
         final HeaderImpl header = new HeaderImpl();
@@ -242,21 +246,29 @@ public final class MimeBuilder {
      * @throws MimeIOException
      *             on MIME protocol violations.
      */
-    public static Message parse(
+    public Message parse(
             final InputStream is, 
             final MimeEntityConfig config,
             final StorageProvider storageProvider, 
             final MutableBodyDescriptorFactory bodyDescFactory,
-            final DecodeMonitor monitor,
-            boolean contentDecoding,
-            boolean flatMode) throws IOException, MimeIOException {
+            final ParseParams params,
+            final DecodeMonitor monitor) throws IOException, MimeIOException {
         try {
             MessageImpl message = new MessageImpl();
             DecodeMonitor mon = monitor != null ? monitor : DecodeMonitor.SILENT;
             MimeStreamParser parser = new MimeStreamParser(config, bodyDescFactory, mon);
             parser.setContentHandler(new EntityBuilder(message, storageProvider, mon));
-            parser.setContentDecoding(contentDecoding);
-            if (flatMode) parser.setFlat(true);
+            if (params != null) {
+                parser.setContentDecoding(params.isContentDecoding());
+                if (params.isFlatMode()) {
+                    parser.setFlat();
+                } else {
+                    parser.setRecurse();
+                }
+            } else {
+                parser.setContentDecoding(true);
+                parser.setRecurse();
+            }
             parser.parse(is);
             return message;
         } catch (MimeException e) {
@@ -282,16 +294,16 @@ public final class MimeBuilder {
      * @throws MimeIOException
      *             on MIME protocol violations.
      */
-    public static Message parse(
+    public Message parse(
             final InputStream is, 
             final MimeEntityConfig config,
             final StorageProvider storageProvider, 
             final MutableBodyDescriptorFactory bodyDescFactory,
             final DecodeMonitor monitor) throws IOException, MimeIOException {
-        return parse(is, config, storageProvider, bodyDescFactory, monitor, true, false);
+        return parse(is, config, storageProvider, bodyDescFactory, null, monitor);
     }
     
-    public static Message parse(
+    public Message parse(
             final InputStream is, 
             final MimeEntityConfig config,
             final StorageProvider storageProvider,
@@ -299,7 +311,7 @@ public final class MimeBuilder {
         return parse(is, config, storageProvider, bodyDescFactory, null);
     }
 
-    public static Message parse(
+    public Message parse(
             final InputStream is, 
             final MimeEntityConfig config,
             final StorageProvider storageProvider) throws IOException, MimeIOException {
@@ -317,7 +329,7 @@ public final class MimeBuilder {
      * @throws MimeIOException
      *             on MIME protocol violations.
      */
-    public static Message parse(InputStream is) throws IOException, MimeIOException {
+    public Message parse(InputStream is) throws IOException, MimeIOException {
         return parse(is, null, DefaultStorageProvider.getInstance());
     }
 
@@ -332,7 +344,7 @@ public final class MimeBuilder {
      * @throws MimeIOException
      *             on MIME protocol violations.
      */
-    public static Message parse(InputStream is, MimeEntityConfig config) throws IOException,
+    public Message parse(InputStream is, MimeEntityConfig config) throws IOException,
             MimeIOException {
         return parse(is, config, DefaultStorageProvider.getInstance());
     }

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java Wed Jan 26 22:38:38 2011
@@ -36,6 +36,7 @@ import junit.framework.TestSuite;
 import org.apache.james.mime4j.codec.CodecUtil;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.mime4j.message.MimeBuilder;
+import org.apache.james.mime4j.message.MimeWriter;
 import org.apache.james.mime4j.stream.MimeEntityConfig;
 
 /**
@@ -58,9 +59,9 @@ public class ExampleMessagesRoundtripTes
             config.setMalformedHeaderStartsBody(true);
         }
         config.setMaxLineLen(-1);
-        Message inputMessage = MimeBuilder.parse(url.openStream(), config);
+        Message inputMessage = MimeBuilder.DEFAULT.parse(url.openStream(), config);
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        inputMessage.writeTo(out);
+        MimeWriter.DEFAULT.writeMessage(inputMessage, out);
         
         String s = url.toString();
         URL msgout = new URL(s.substring(0, s.lastIndexOf('.')) + ".out");

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java Wed Jan 26 22:38:38 2011
@@ -26,7 +26,7 @@ import org.apache.james.mime4j.dom.Heade
 import org.apache.james.mime4j.dom.field.Field;
 import org.apache.james.mime4j.field.DefaultFieldParser;
 import org.apache.james.mime4j.message.HeaderImpl;
-import org.apache.james.mime4j.message.MessageWriter;
+import org.apache.james.mime4j.message.MimeWriter;
 import org.apache.james.mime4j.util.CharsetUtil;
 
 public class HeaderTest extends TestCase {
@@ -62,7 +62,7 @@ public class HeaderTest extends TestCase
         
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
         
-        MessageWriter.DEFAULT.writeHeader(header, buffer);
+        MimeWriter.DEFAULT.writeHeader(header, buffer);
         String s = buffer.toString(CharsetUtil.US_ASCII.name());
         
         assertEquals("Hello: Gr?ezi_z?m?\r\n\r\n", s);

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageCompleteMailTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageCompleteMailTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageCompleteMailTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageCompleteMailTest.java Wed Jan 26 22:38:38 2011
@@ -55,7 +55,7 @@ public class MessageCompleteMailTest ext
 
     private Message createMessage(byte[] octets) throws Exception {
         ByteArrayInputStream in = new ByteArrayInputStream(octets);
-        Message message = MimeBuilder.parse(in);
+        Message message = MimeBuilder.DEFAULT.parse(in);
         return message;
     }
 }

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageHeadlessParserTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageHeadlessParserTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageHeadlessParserTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageHeadlessParserTest.java Wed Jan 26 22:38:38 2011
@@ -44,7 +44,7 @@ public class MessageHeadlessParserTest e
 
 		MimeEntityConfig mimeEntityConfig = new MimeEntityConfig();
 		mimeEntityConfig.setMalformedHeaderStartsBody(true);
-		Message message = MimeBuilder.parse(new ByteArrayInputStream(headlessContent
+		Message message = MimeBuilder.DEFAULT.parse(new ByteArrayInputStream(headlessContent
 				.getBytes("UTF-8")), mimeEntityConfig);
 		assertEquals("text/plain", message.getMimeType());
 		assertEquals(1, message.getHeader().getFields().size());
@@ -62,7 +62,7 @@ public class MessageHeadlessParserTest e
 
 		MimeEntityConfig mimeEntityConfig = new MimeEntityConfig();
 		mimeEntityConfig.setMalformedHeaderStartsBody(true);
-		Message message = MimeBuilder.parse(new ByteArrayInputStream(headlessContent
+		Message message = MimeBuilder.DEFAULT.parse(new ByteArrayInputStream(headlessContent
 				.getBytes("UTF-8")), mimeEntityConfig);
 		assertEquals("text/plain", message.getMimeType());
 		assertEquals(0, message.getHeader().getFields().size());
@@ -89,7 +89,7 @@ public class MessageHeadlessParserTest e
 
 		MimeEntityConfig mimeEntityConfig = new MimeEntityConfig();
 		mimeEntityConfig.setHeadlessParsing(contentType);
-		Message message = MimeBuilder.parse(new ByteArrayInputStream(headlessContent
+		Message message = MimeBuilder.DEFAULT.parse(new ByteArrayInputStream(headlessContent
 				.getBytes("UTF-8")), mimeEntityConfig);
 		assertEquals("multipart/form-data", message.getMimeType());
 		assertEquals(1, message.getHeader().getFields().size());

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java Wed Jan 26 22:38:38 2011
@@ -102,7 +102,7 @@ public class MessageParserTest extends T
             config.setMalformedHeaderStartsBody(true);
         }
         config.setMaxLineLen(-1);
-        Message m = MimeBuilder.parse(url.openStream(), config);
+        Message m = MimeBuilder.DEFAULT.parse(url.openStream(), config);
         
         String s = url.toString();
         String prefix = s.substring(0, s.lastIndexOf('.'));

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java Wed Jan 26 22:38:38 2011
@@ -45,6 +45,7 @@ import org.apache.james.mime4j.message.B
 import org.apache.james.mime4j.message.HeaderImpl;
 import org.apache.james.mime4j.message.MessageImpl;
 import org.apache.james.mime4j.message.MimeBuilder;
+import org.apache.james.mime4j.message.MimeWriter;
 import org.apache.james.mime4j.message.MultipartImpl;
 
 public class MessageTest extends TestCase {
@@ -133,10 +134,10 @@ public class MessageTest extends TestCas
     public void testWriteTo() throws Exception {
         byte[] inputByte = getRawMessageAsByteArray();
 
-        Message m = MimeBuilder.parse(new ByteArrayInputStream(inputByte));
+        Message m = MimeBuilder.DEFAULT.parse(new ByteArrayInputStream(inputByte));
         ByteArrayOutputStream out = new ByteArrayOutputStream();
 
-        m.writeTo(out);
+        MimeWriter.DEFAULT.writeMessage(m, out);
 
         InputStream output = new ByteArrayInputStream(out.toByteArray());
 
@@ -155,14 +156,14 @@ public class MessageTest extends TestCas
 
         byte[] inputByte = getRawMessageAsByteArray();
 
-        Message m = MimeBuilder.parse(new ByteArrayInputStream(inputByte));
+        Message m = MimeBuilder.DEFAULT.parse(new ByteArrayInputStream(inputByte));
         m.getHeader().addField(DefaultFieldParser.parse(testheader));
 
         assertEquals("header added", m.getHeader().getField(headerName)
                 .getBody(), headerValue);
 
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        m.writeTo(out);
+        MimeWriter.DEFAULT.writeMessage(m, out);
         List<?> lines = IOUtils.readLines((new BufferedReader(
                 new InputStreamReader(new ByteArrayInputStream(out
                         .toByteArray())))));
@@ -254,7 +255,7 @@ public class MessageTest extends TestCas
     public void testSetSender() throws Exception {
         MessageImpl m = new MessageImpl();
 
-        m.setSender(AddressBuilder.parseMailbox("john.doe@example.net"));
+        m.setSender(AddressBuilder.DEFAULT.parseMailbox("john.doe@example.net"));
         assertEquals("john.doe@example.net", m.getHeader().getField("Sender")
                 .getBody());
 
@@ -276,8 +277,8 @@ public class MessageTest extends TestCas
     public void testSetFrom() throws Exception {
         MessageImpl m = new MessageImpl();
 
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("john.doe@example.net");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.net");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("john.doe@example.net");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.net");
 
         m.setFrom(mailbox1);
         assertEquals("john.doe@example.net", m.getHeader().getField("From")
@@ -310,10 +311,10 @@ public class MessageTest extends TestCas
     public void testSetTo() throws Exception {
         MessageImpl m = new MessageImpl();
 
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("john.doe@example.net");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.net");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("john.doe@example.net");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.net");
         Group group = new Group("Does", mailbox1, mailbox2);
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
 
         m.setTo(group);
         assertEquals("Does: john.doe@example.net, jane.doe@example.net;", m
@@ -348,10 +349,10 @@ public class MessageTest extends TestCas
     public void testSetCc() throws Exception {
         MessageImpl m = new MessageImpl();
 
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("john.doe@example.net");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.net");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("john.doe@example.net");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.net");
         Group group = new Group("Does", mailbox1, mailbox2);
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
 
         m.setCc(group);
         assertEquals("Does: john.doe@example.net, jane.doe@example.net;", m
@@ -386,10 +387,10 @@ public class MessageTest extends TestCas
     public void testSetBcc() throws Exception {
         MessageImpl m = new MessageImpl();
 
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("john.doe@example.net");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.net");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("john.doe@example.net");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.net");
         Group group = new Group("Does", mailbox1, mailbox2);
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
 
         m.setBcc(group);
         assertEquals("Does: john.doe@example.net, jane.doe@example.net;", m
@@ -424,10 +425,10 @@ public class MessageTest extends TestCas
     public void testSetReplyTo() throws Exception {
         MessageImpl m = new MessageImpl();
 
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("john.doe@example.net");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.net");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("john.doe@example.net");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.net");
         Group group = new Group("Does", mailbox1, mailbox2);
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
 
         m.setReplyTo(group);
         assertEquals("Does: john.doe@example.net, jane.doe@example.net;", m

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java Wed Jan 26 22:38:38 2011
@@ -24,6 +24,7 @@ import java.io.ByteArrayOutputStream;
 
 import org.apache.james.mime4j.ExampleMail;
 import org.apache.james.mime4j.message.MimeBuilder;
+import org.apache.james.mime4j.message.MimeWriter;
 
 import junit.framework.TestCase;
 
@@ -43,7 +44,7 @@ public class MessageWriteToTest extends 
         Message message = createMessage(ExampleMail.RFC822_SIMPLE_BYTES);
         assertFalse("Not multipart", message.isMultipart());
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        message.writeTo(out);
+        MimeWriter.DEFAULT.writeMessage(message, out);
         assertEquals(out.toByteArray(), ExampleMail.RFC822_SIMPLE_BYTES);
     }
     
@@ -61,7 +62,7 @@ public class MessageWriteToTest extends 
         Message message = createMessage(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_BYTES);
         assertTrue("Is multipart", message.isMultipart());
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        message.writeTo(out);
+        MimeWriter.DEFAULT.writeMessage(message, out);
         assertEquals(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_BYTES, out.toByteArray());
     }
     
@@ -69,7 +70,7 @@ public class MessageWriteToTest extends 
         Message message = createMessage(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_NOPREAMBLE_BYTES);
         assertTrue("Is multipart", message.isMultipart());
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        message.writeTo(out);
+        MimeWriter.DEFAULT.writeMessage(message, out);
         assertEquals(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_NOPREAMBLE_BYTES, out.toByteArray());
     }
     
@@ -77,13 +78,13 @@ public class MessageWriteToTest extends 
         Message message = createMessage(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_PREAMBLE_EPILOGUE_BYTES);
         assertTrue("Is multipart", message.isMultipart());
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        message.writeTo(out);
+        MimeWriter.DEFAULT.writeMessage(message, out);
         assertEquals(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_PREAMBLE_EPILOGUE_BYTES, out.toByteArray());
     }
     
     private Message createMessage(byte[] octets) throws Exception {
         ByteArrayInputStream in = new ByteArrayInputStream(octets);
-        Message message = MimeBuilder.parse(in);
+        Message message = MimeBuilder.DEFAULT.parse(in);
         return message;
     }
 }

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java Wed Jan 26 22:38:38 2011
@@ -42,7 +42,7 @@ public class MimeBuilderCopyTest extends
     public void testCopyEmptyMessage() throws Exception {
         MessageImpl original = new MessageImpl();
 
-        Message copy = MimeBuilder.copy(original);
+        Message copy = MimeBuilder.DEFAULT.copy(original);
 
         assertNull(copy.getHeader());
         assertNull(copy.getBody());
@@ -59,7 +59,7 @@ public class MimeBuilderCopyTest extends
         original.setBody(body);
         original.setParent(parent);
 
-        Message copy = MimeBuilder.copy(original);
+        Message copy = MimeBuilder.DEFAULT.copy(original);
 
         assertNotNull(copy.getHeader());
         assertNotSame(header, copy.getHeader());
@@ -75,7 +75,7 @@ public class MimeBuilderCopyTest extends
     public void testCopyEmptyBodyPart() throws Exception {
         BodyPart original = new BodyPart();
 
-        BodyPart copy = MimeBuilder.copy(original);
+        BodyPart copy = MimeBuilder.DEFAULT.copy(original);
 
         assertNull(copy.getHeader());
         assertNull(copy.getBody());
@@ -92,7 +92,7 @@ public class MimeBuilderCopyTest extends
         original.setBody(body);
         original.setParent(parent);
 
-        BodyPart copy = MimeBuilder.copy(original);
+        BodyPart copy = MimeBuilder.DEFAULT.copy(original);
 
         assertNotNull(copy.getHeader());
         assertNotSame(header, copy.getHeader());
@@ -108,7 +108,7 @@ public class MimeBuilderCopyTest extends
     public void testCopyEmptyMultipart() throws Exception {
         Multipart original = new MultipartImpl("mixed");
 
-        Multipart copy = MimeBuilder.copy(original);
+        Multipart copy = MimeBuilder.DEFAULT.copy(original);
 
         assertSame(original.getPreamble(), copy.getPreamble());
         assertSame(original.getEpilogue(), copy.getEpilogue());
@@ -127,7 +127,7 @@ public class MimeBuilderCopyTest extends
         original.setParent(parent);
         original.addBodyPart(bodyPart);
 
-        Multipart copy = MimeBuilder.copy(original);
+        Multipart copy = MimeBuilder.DEFAULT.copy(original);
 
         assertSame(original.getPreamble(), copy.getPreamble());
         assertSame(original.getEpilogue(), copy.getEpilogue());
@@ -154,7 +154,7 @@ public class MimeBuilderCopyTest extends
         original.setHeader(new HeaderImpl());
         original.setBody(multipart);
 
-        Message copy = MimeBuilder.copy(original);
+        Message copy = MimeBuilder.DEFAULT.copy(original);
 
         Multipart multipartCopy = (Multipart) copy.getBody();
         List<Entity> bodyParts = multipartCopy.getBodyParts();
@@ -180,7 +180,7 @@ public class MimeBuilderCopyTest extends
         original.addField(f2);
         original.addField(f3);
 
-        Header copy = MimeBuilder.copy(original);
+        Header copy = MimeBuilder.DEFAULT.copy(original);
 
         // copy must have same fields as original
         assertEquals(Arrays.asList(f1, f2, f3), copy.getFields());

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MultipartFormTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MultipartFormTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MultipartFormTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MultipartFormTest.java Wed Jan 26 22:38:38 2011
@@ -30,7 +30,7 @@ import org.apache.james.mime4j.message.B
 import org.apache.james.mime4j.message.BodyPart;
 import org.apache.james.mime4j.message.HeaderImpl;
 import org.apache.james.mime4j.message.MessageImpl;
-import org.apache.james.mime4j.message.MessageWriter;
+import org.apache.james.mime4j.message.MimeWriter;
 import org.apache.james.mime4j.message.MultipartImpl;
 
 public class MultipartFormTest extends TestCase {
@@ -67,7 +67,7 @@ public class MultipartFormTest extends T
         multipart.addBodyPart(p3);
         
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        MessageWriter.DEFAULT.writeMultipart(multipart, out);
+        MimeWriter.DEFAULT.writeMultipart(multipart, out);
         out.close();
         
         String expected = "--foo\r\n" +

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java Wed Jan 26 22:38:38 2011
@@ -242,14 +242,14 @@ public class FieldsTest extends TestCase
     }
 
     public void testSender() throws Exception {
-        MailboxField field = Fields.sender(AddressBuilder
+        MailboxField field = Fields.sender(AddressBuilder.DEFAULT
                 .parseMailbox("JD <jo...@acme.org>"));
         assertEquals("Sender: JD <jo...@acme.org>", decode(field));
     }
 
     public void testFrom() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("JD <jo...@acme.org>");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("JD <jo...@acme.org>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
 
         MailboxListField field = Fields.from(mailbox1);
         assertEquals("From: JD <jo...@acme.org>", decode(field));
@@ -264,9 +264,9 @@ public class FieldsTest extends TestCase
     }
 
     public void testTo() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("JD <jo...@acme.org>");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.org");
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("JD <jo...@acme.org>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.org");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
         Group group = new Group("The Does", mailbox1, mailbox2);
 
         AddressListField field = Fields.to(group);
@@ -285,9 +285,9 @@ public class FieldsTest extends TestCase
     }
 
     public void testCc() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("JD <jo...@acme.org>");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.org");
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("JD <jo...@acme.org>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.org");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
         Group group = new Group("The Does", mailbox1, mailbox2);
 
         AddressListField field = Fields.cc(group);
@@ -306,9 +306,9 @@ public class FieldsTest extends TestCase
     }
 
     public void testBcc() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("JD <jo...@acme.org>");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.org");
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("JD <jo...@acme.org>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.org");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
         Group group = new Group("The Does", mailbox1, mailbox2);
 
         AddressListField field = Fields.bcc(group);
@@ -327,9 +327,9 @@ public class FieldsTest extends TestCase
     }
 
     public void testReplyTo() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("JD <jo...@acme.org>");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.org");
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("JD <jo...@acme.org>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.org");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
         Group group = new Group("The Does", mailbox1, mailbox2);
 
         AddressListField field = Fields.replyTo(group);
@@ -348,15 +348,14 @@ public class FieldsTest extends TestCase
     }
 
     public void testMailbox() throws Exception {
-        MailboxField field = Fields.mailbox("Resent-Sender", AddressBuilder
+        MailboxField field = Fields.mailbox("Resent-Sender", AddressBuilder.DEFAULT
                 .parseMailbox("JD <jo...@acme.org>"));
-        assertEquals("Resent-Sender: JD <jo...@acme.org>", decode(field
-                ));
+        assertEquals("Resent-Sender: JD <jo...@acme.org>", decode(field));
     }
 
     public void testMailboxList() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("JD <jo...@acme.org>");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("JD <jo...@acme.org>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
 
         MailboxListField field = Fields.mailboxList("Resent-From", Arrays
                 .asList(mailbox1, mailbox2));
@@ -365,9 +364,9 @@ public class FieldsTest extends TestCase
     }
 
     public void testAddressList() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("JD <jo...@acme.org>");
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("jane.doe@example.org");
-        Mailbox mailbox3 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("JD <jo...@acme.org>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("jane.doe@example.org");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
         Group group = new Group("The Does", mailbox1, mailbox2);
 
         AddressListField field = Fields.addressList("Resent-To", Arrays.asList(

Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/address/AddressTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/address/AddressTest.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/address/AddressTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/address/AddressTest.java Wed Jan 26 22:38:38 2011
@@ -42,7 +42,8 @@ public class AddressTest extends TestCas
     }
 
     public void testParse1() throws ParseException {
-        AddressList addrList = AddressBuilder.parseAddressList("John Doe <jdoe@machine(comment).  example>");
+        AddressList addrList = AddressBuilder.DEFAULT.parseAddressList(
+                "John Doe <jdoe@machine(comment).  example>");
         assertEquals(1, addrList.size());
         Mailbox mailbox = (Mailbox)addrList.get(0);
         assertEquals("John Doe", mailbox.getName());
@@ -51,7 +52,8 @@ public class AddressTest extends TestCas
     }
 
     public void testParse2() throws ParseException {
-        AddressList addrList = AddressBuilder.parseAddressList("Mary Smith \t    \t\t  <ma...@example.net>");
+        AddressList addrList = AddressBuilder.DEFAULT.parseAddressList(
+                "Mary Smith \t    \t\t  <ma...@example.net>");
         assertEquals(1, addrList.size());
         Mailbox mailbox = (Mailbox)addrList.get(0);
         assertEquals("Mary Smith", mailbox.getName());
@@ -60,7 +62,7 @@ public class AddressTest extends TestCas
     }
 
     public void testEmptyGroup() throws ParseException {
-        AddressList addrList = AddressBuilder.parseAddressList("undisclosed-recipients:;");
+        AddressList addrList = AddressBuilder.DEFAULT.parseAddressList("undisclosed-recipients:;");
         assertEquals(1, addrList.size());
         Group group = (Group)addrList.get(0);
         assertEquals(0, group.getMailboxes().size());
@@ -68,7 +70,10 @@ public class AddressTest extends TestCas
     }
 
     public void testMessyGroupAndMailbox() throws ParseException {
-        AddressList addrList = AddressBuilder.parseAddressList("Marketing  folks :  Jane Smith < jane @ example . net >, \" Jack \\\"Jackie\\\" Jones \" < jjones@example.com > (comment(comment)); ,, (comment)  , <@example . net,@example(ignore\\)).com:(ignore)john@(ignore)example.net>");
+        AddressList addrList = AddressBuilder.DEFAULT.parseAddressList(
+                "Marketing  folks :  Jane Smith < jane @ example . net >," +
+                " \" Jack \\\"Jackie\\\" Jones \" < jjones@example.com > (comment(comment)); ,, (comment)  ," +
+                " <@example . net,@example(ignore\\)).com:(ignore)john@(ignore)example.net>");
         assertEquals(2, addrList.size());
 
         Group group = (Group)addrList.get(0);
@@ -95,12 +100,12 @@ public class AddressTest extends TestCas
     }
 
     public void testEmptyAddressList() throws ParseException {
-        assertEquals(0, AddressBuilder.parseAddressList("  \t   \t ").size());
-        assertEquals(0, AddressBuilder.parseAddressList("  \t  ,  , , ,,, , \t ").size());
+        assertEquals(0, AddressBuilder.DEFAULT.parseAddressList("  \t   \t ").size());
+        assertEquals(0, AddressBuilder.DEFAULT.parseAddressList("  \t  ,  , , ,,, , \t ").size());
     }
 
     public void testSimpleForm() throws ParseException {
-        AddressList addrList = AddressBuilder.parseAddressList("\"a b c d e f g\" (comment) @example.net");
+        AddressList addrList = AddressBuilder.DEFAULT.parseAddressList("\"a b c d e f g\" (comment) @example.net");
         assertEquals(1, addrList.size());
         Mailbox mailbox = (Mailbox)addrList.get(0);
         assertEquals("a b c d e f g", mailbox.getLocalPart());
@@ -108,7 +113,7 @@ public class AddressTest extends TestCas
     }
 
     public void testFlatten() throws ParseException {
-        AddressList addrList = AddressBuilder.parseAddressList("dev : one@example.com, two@example.com; , ,,, marketing:three@example.com ,four@example.com;, five@example.com");
+        AddressList addrList = AddressBuilder.DEFAULT.parseAddressList("dev : one@example.com, two@example.com; , ,,, marketing:three@example.com ,four@example.com;, five@example.com");
         assertEquals(3, addrList.size());
         assertEquals(5, addrList.flatten().size());
     }
@@ -125,15 +130,15 @@ public class AddressTest extends TestCas
         // there shouldn't be any aspect of the RFC that is tested here
         // but not in the other unit tests.
 
-        AddressBuilder.parseAddressList("Alfred Neuman <Ne...@BBN-TENEXA>");
-        AddressBuilder.parseAddressList("Neuman@BBN-TENEXA");
-        AddressBuilder.parseAddressList("\"George, Ted\" <Sh...@Group.Arpanet>");
-        AddressBuilder.parseAddressList("Wilt . (the Stilt) Chamberlain@NBA.US");
+        AddressBuilder.DEFAULT.parseAddressList("Alfred Neuman <Ne...@BBN-TENEXA>");
+        AddressBuilder.DEFAULT.parseAddressList("Neuman@BBN-TENEXA");
+        AddressBuilder.DEFAULT.parseAddressList("\"George, Ted\" <Sh...@Group.Arpanet>");
+        AddressBuilder.DEFAULT.parseAddressList("Wilt . (the Stilt) Chamberlain@NBA.US");
 
         // NOTE: In RFC822 8.1.5, the following example did not have "Galloping Gourmet"
         // in double-quotes.  I can only assume this was a typo, since 6.2.4 specifically
         // disallows spaces in unquoted local-part.
-        AddressBuilder.parseAddressList("     Gourmets:  Pompous Person <Wh...@Cordon-Bleu>," +
+        AddressBuilder.DEFAULT.parseAddressList("     Gourmets:  Pompous Person <Wh...@Cordon-Bleu>," +
                 "                Childs@WGBH.Boston, \"Galloping Gourmet\"@" +
                 "                ANT.Down-Under (Australian National Television)," +
                 "                Cheapie@Discount-Liquors;," +
@@ -143,7 +148,7 @@ public class AddressTest extends TestCas
         // NOTE: In RFC822 8.3.3, the following example ended with a lone ">" after
         // Tops-20-Host.  I can only assume this was a typo, since 6.1 clearly shows
         // ">" requires a matching "<".
-        AddressBuilder.parseAddressList("Important folk:" +
+        AddressBuilder.DEFAULT.parseAddressList("Important folk:" +
                 "                   Tom Softwood <Ba...@Tree.Root>," +
                 "                   \"Sam Irving\"@Other-Host;," +
                 "                 Standard Distribution:" +
@@ -152,16 +157,16 @@ public class AddressTest extends TestCas
 
         // The following are from a Usenet post by Dan J. Bernstein:
         // http://groups.google.com/groups?selm=1996Aug1418.21.01.28081%40koobera.math.uic.edu
-        AddressBuilder.parseAddressList("\":sysmail\"@  Some-Group.\t         Some-Org, Muhammed.(I am  the greatest) Ali @(the)Vegas.WBA");
-        AddressBuilder.parseAddressList("me@home.com (comment (nested (deeply\\))))");
-        AddressBuilder.parseAddressList("mailing list: me@home.com, route two <yo...@work.com>, them@play.com ;");
+        AddressBuilder.DEFAULT.parseAddressList("\":sysmail\"@  Some-Group.\t         Some-Org, Muhammed.(I am  the greatest) Ali @(the)Vegas.WBA");
+        AddressBuilder.DEFAULT.parseAddressList("me@home.com (comment (nested (deeply\\))))");
+        AddressBuilder.DEFAULT.parseAddressList("mailing list: me@home.com, route two <yo...@work.com>, them@play.com ;");
 
     }
 
     public void testLexicalError() {
         // ensure that TokenMgrError doesn't get thrown
         try {
-            AddressBuilder.parseAddressList(")");
+            AddressBuilder.DEFAULT.parseAddressList(")");
             fail("Expected parsing error");
         }
         catch (ParseException e) {
@@ -188,7 +193,7 @@ public class AddressTest extends TestCas
 
     
     public void testAddressList() throws ParseException {
-        AddressList addlist = AddressBuilder.parseAddressList("foo@example.com, bar@example.com, third@example.com");
+        AddressList addlist = AddressBuilder.DEFAULT.parseAddressList("foo@example.com, bar@example.com, third@example.com");
         List<Address> al = new ArrayList<Address>();
         al.add(addlist.get(0));
 
@@ -284,12 +289,13 @@ public class AddressTest extends TestCas
         List<Mailbox> al = new ArrayList<Mailbox>();
         al.add(new Mailbox("test", "example.com"));
         al.add(new Mailbox("Foo!", "foo", "example.com"));
-        DomainList dl = new DomainList(new ArrayList<String>(Arrays.asList(new String[] {"foo.example.com"})), true);
+        DomainList dl = new DomainList(new ArrayList<String>(
+                Arrays.asList(new String[] {"foo.example.com"})), true);
         Mailbox mailbox = new Mailbox("Foo Bar", dl, "foo2", "example.com");
         assertSame(dl, mailbox.getRoute());
         al.add(mailbox);
         Group g = new Group("group", new MailboxList(al, false));
-        String s = AddressFormatter.format(g, false);
+        String s = AddressFormatter.DEFAULT.format(g, false);
         assertEquals("group: test@example.com, Foo! <fo...@example.com>, Foo Bar <fo...@example.com>;", s);
     }
     
@@ -299,7 +305,7 @@ public class AddressTest extends TestCas
          * ParseException
          */
         try {
-            AddressBuilder.parseAddressList("\"\"bar@bar.com");
+            AddressBuilder.DEFAULT.parseAddressList("\"\"bar@bar.com");
             fail("ParseException expected");
         } catch (ParseException pe) {
         }
@@ -307,16 +313,16 @@ public class AddressTest extends TestCas
     
     public void testMailboxGetEncodedString() throws Exception {
         Mailbox m1 = new Mailbox("john.doe", "acme.org");
-        assertEquals("john.doe@acme.org", AddressFormatter.encode(m1));
+        assertEquals("john.doe@acme.org", AddressFormatter.DEFAULT.encode(m1));
         Mailbox m2 = new Mailbox("john doe", "acme.org");
-        assertEquals("\"john doe\"@acme.org", AddressFormatter.encode(m2));
+        assertEquals("\"john doe\"@acme.org", AddressFormatter.DEFAULT.encode(m2));
         Mailbox m3 = new Mailbox("John Doe", "john.doe", "acme.org");
-        assertEquals("John Doe <jo...@acme.org>", AddressFormatter.encode(m3));
+        assertEquals("John Doe <jo...@acme.org>", AddressFormatter.DEFAULT.encode(m3));
         Mailbox m4 = new Mailbox("John Doe @Home", "john.doe", "acme.org");
-        assertEquals("\"John Doe @Home\" <jo...@acme.org>", AddressFormatter.encode(m4));
+        assertEquals("\"John Doe @Home\" <jo...@acme.org>", AddressFormatter.DEFAULT.encode(m4));
         Mailbox m5 = new Mailbox("Hans M\374ller", "hans.mueller", "acme.org");
         assertEquals("=?ISO-8859-1?Q?Hans_M=FCller?= <ha...@acme.org>",
-                AddressFormatter.encode(m5));
+                AddressFormatter.DEFAULT.encode(m5));
     }
 
     public void testGroupGetEncodedString() throws Exception {
@@ -327,22 +333,22 @@ public class AddressTest extends TestCas
         Group g = new Group("group @work", new MailboxList(al, false));
         assertEquals("\"group @work\": test@example.com, "
                 + "Foo! <fo...@example.com>, =?ISO-8859-1?Q?Hans_M=FCller?="
-                + " <ha...@acme.org>;", AddressFormatter.encode(g));
+                + " <ha...@acme.org>;", AddressFormatter.DEFAULT.encode(g));
     }
 
     public void testEmptyGroupGetEncodedString() throws Exception {
         MailboxList emptyMailboxes = new MailboxList(null, true);
         Group g = new Group("Undisclosed recipients", emptyMailboxes);
-        assertEquals("Undisclosed recipients:;", AddressFormatter.encode(g));
+        assertEquals("Undisclosed recipients:;", AddressFormatter.DEFAULT.encode(g));
     }
 
     public void testParseAddress() throws Exception {
-        Address address = AddressBuilder.parseAddress("Mary Smith <ma...@example.net>");
+        Address address = AddressBuilder.DEFAULT.parseAddress("Mary Smith <ma...@example.net>");
         assertTrue(address instanceof Mailbox);
         assertEquals("Mary Smith", ((Mailbox) address).getName());
         assertEquals("mary@example.net", ((Mailbox) address).getAddress());
 
-        address = AddressBuilder.parseAddress("group: Mary Smith <ma...@example.net>;");
+        address = AddressBuilder.DEFAULT.parseAddress("group: Mary Smith <ma...@example.net>;");
         assertTrue(address instanceof Group);
         assertEquals("group", ((Group) address).getName());
         assertEquals("Mary Smith", ((Group) address).getMailboxes().get(0)
@@ -351,15 +357,15 @@ public class AddressTest extends TestCas
                 .get(0).getAddress());
 
         try {
-            AddressBuilder.parseGroup("john.doe@acme.org, jane.doe@acme.org");
+            AddressBuilder.DEFAULT.parseGroup("john.doe@acme.org, jane.doe@acme.org");
             fail();
         } catch (ParseException expected) {
         }
     }
     
     public void testParseGroup() throws Exception {
-        Group group = AddressBuilder
-                .parseGroup("group: john.doe@acme.org, Mary Smith <ma...@example.net>;");
+        Group group = AddressBuilder.DEFAULT.parseGroup(
+                "group: john.doe@acme.org, Mary Smith <ma...@example.net>;");
         assertEquals("group", group.getName());
 
         MailboxList mailboxes = group.getMailboxes();
@@ -374,41 +380,42 @@ public class AddressTest extends TestCas
         assertEquals("mary@example.net", mailbox2.getAddress());
 
         try {
-            AddressBuilder.parseGroup("john.doe@acme.org");
+            AddressBuilder.DEFAULT.parseGroup("john.doe@acme.org");
             fail();
         } catch (ParseException expected) {
         }
 
         try {
-            AddressBuilder.parseGroup("g1: john.doe@acme.org;, g2: mary@example.net;");
+            AddressBuilder.DEFAULT.parseGroup("g1: john.doe@acme.org;, g2: mary@example.net;");
             fail();
         } catch (ParseException expected) {
         }
     }
 
     public void testParseMailbox() throws Exception {
-        Mailbox mailbox1 = AddressBuilder.parseMailbox("john.doe@acme.org");
+        Mailbox mailbox1 = AddressBuilder.DEFAULT.parseMailbox("john.doe@acme.org");
         assertNull(mailbox1.getName());
         assertEquals("john.doe@acme.org", mailbox1.getAddress());
 
-        Mailbox mailbox2 = AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>");
+        Mailbox mailbox2 = AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>");
         assertEquals("Mary Smith", mailbox2.getName());
         assertEquals("mary@example.net", mailbox2.getAddress());
 
         // non-ascii should be allowed in quoted strings
-        Mailbox mailbox3 = AddressBuilder
-                .parseMailbox("\"Hans M\374ller\" <ha...@acme.org>");
+        Mailbox mailbox3 = AddressBuilder.DEFAULT.parseMailbox(
+                "\"Hans M\374ller\" <ha...@acme.org>");
         assertEquals("Hans M\374ller", mailbox3.getName());
         assertEquals("hans.mueller@acme.org", mailbox3.getAddress());
 
         try {
-            AddressBuilder.parseMailbox("g: Mary Smith <ma...@example.net>;");
+            AddressBuilder.DEFAULT.parseMailbox("g: Mary Smith <ma...@example.net>;");
             fail();
         } catch (ParseException expected) {
         }
 
         try {
-            AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>, hans.mueller@acme.org");
+            AddressBuilder.DEFAULT.parseMailbox(
+                    "Mary Smith <ma...@example.net>, hans.mueller@acme.org");
             fail();
         } catch (ParseException expected) {
         }

Modified: james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java?rev=1063904&r1=1063903&r2=1063904&view=diff
==============================================================================
--- james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java (original)
+++ james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java Wed Jan 26 22:38:38 2011
@@ -36,6 +36,7 @@ import org.apache.james.mime4j.field.add
 import org.apache.james.mime4j.message.BodyFactory;
 import org.apache.james.mime4j.message.BodyPart;
 import org.apache.james.mime4j.message.MessageImpl;
+import org.apache.james.mime4j.message.MimeWriter;
 import org.apache.james.mime4j.message.MultipartImpl;
 import org.apache.james.mime4j.storage.Storage;
 import org.apache.james.mime4j.storage.StorageOutputStream;
@@ -57,13 +58,13 @@ public class MultipartMessage {
 
         // Date and From are required fields
         message.setDate(new Date());
-        message.setFrom(AddressBuilder.parseMailbox("John Doe <jd...@machine.example>"));
+        message.setFrom(AddressBuilder.DEFAULT.parseMailbox("John Doe <jd...@machine.example>"));
 
         // Message-ID should be present
         message.createMessageId("machine.example");
 
         // set some optional fields
-        message.setTo(AddressBuilder.parseMailbox("Mary Smith <ma...@example.net>"));
+        message.setTo(AddressBuilder.DEFAULT.parseMailbox("Mary Smith <ma...@example.net>"));
         message.setSubject("An image for you");
 
         // 3) set a multipart body
@@ -88,7 +89,7 @@ public class MultipartMessage {
 
         // 4) print message to standard output
 
-        message.writeTo(System.out);
+        MimeWriter.DEFAULT.writeMessage(message, System.out);
 
         // 5) message is no longer needed and should be disposed of