Moved DefaultBodyDescriptor to the stream package as requested by Oleg (MIME4J-157)
This reintroduce "commons-logging" dependency to the stream package, so this will need a bit more care later, however this is not a big issue, as MIME4J-158 was an ongoing effort, still.

git-svn-id: https://svn.apache.org/repos/asf/james/mime4j/branches/cycleclean@898843 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/james/mime4j/parser/MaximalBodyDescriptor.java b/core/src/main/java/org/apache/james/mime4j/parser/MaximalBodyDescriptor.java
index 8293d12..15cae3b 100644
--- a/core/src/main/java/org/apache/james/mime4j/parser/MaximalBodyDescriptor.java
+++ b/core/src/main/java/org/apache/james/mime4j/parser/MaximalBodyDescriptor.java
@@ -32,6 +32,7 @@
 import org.apache.james.mime4j.field.mimeversion.parser.MimeVersionParser;
 import org.apache.james.mime4j.field.structured.parser.StructuredFieldParser;
 import org.apache.james.mime4j.stream.BodyDescriptor;
+import org.apache.james.mime4j.stream.DefaultBodyDescriptor;
 import org.apache.james.mime4j.stream.MutableBodyDescriptor;
 import org.apache.james.mime4j.stream.RawField;
 import org.apache.james.mime4j.util.MimeUtil;
diff --git a/core/src/main/java/org/apache/james/mime4j/parser/MimeTokenStream.java b/core/src/main/java/org/apache/james/mime4j/parser/MimeTokenStream.java
index a1f8d9b..69bbd16 100644
--- a/core/src/main/java/org/apache/james/mime4j/parser/MimeTokenStream.java
+++ b/core/src/main/java/org/apache/james/mime4j/parser/MimeTokenStream.java
@@ -24,9 +24,9 @@
 import org.apache.james.mime4j.codec.DecodeMonitor;
 import org.apache.james.mime4j.stream.BasicMimeTokenStream;
 import org.apache.james.mime4j.stream.BodyDescriptor;
+import org.apache.james.mime4j.stream.DefaultBodyDescriptor;
 import org.apache.james.mime4j.stream.MimeEntityConfig;
 import org.apache.james.mime4j.stream.MutableBodyDescriptor;
-import org.apache.james.mime4j.stream.RawField;
 
 /**
  * <p>
@@ -108,40 +108,6 @@
         super(config, monitor);
     }
 
-    /** Instructs the {@code MimeTokenStream} to parse the given streams contents.
-     * If the {@code MimeTokenStream} has already been in use, resets the streams
-     * internal state.
-     */
-    public void parse(InputStream stream) {
-        doParse(stream, null);
-    }
-
-    /** Instructs the {@code MimeTokenStream} to parse the given content with 
-     * the content type. The message stream is assumed to have no message header
-     * and is expected to begin with a message body. This can be the case when 
-     * the message content is transmitted using a different transport protocol 
-     * such as HTTP.
-     * <p/>
-     * If the {@code MimeTokenStream} has already been in use, resets the streams
-     * internal state.
-     */    
-    public void parseHeadless(InputStream stream, String contentType) {
-        if (contentType == null) {
-            throw new IllegalArgumentException("Content type may not be null");
-        }
-        doParse(stream, contentType);
-    }
-
-    private void doParse(InputStream stream, String contentType) {
-        MutableBodyDescriptor newBodyDescriptor = newBodyDescriptor();
-        int start = T_START_MESSAGE;
-        if (contentType != null) {
-        	start = T_END_HEADER;
-        	newBodyDescriptor.addField(new RawField("Content-Type", contentType));
-        }
-        doParse(stream, newBodyDescriptor, start);
-    }
-
     /**
      * Creates a new instance of {@link BodyDescriptor}. Subclasses may override
      * this in order to create body descriptors, that provide more specific
diff --git a/core/src/main/java/org/apache/james/mime4j/stream/BasicMimeTokenStream.java b/core/src/main/java/org/apache/james/mime4j/stream/BasicMimeTokenStream.java
index 992d8cf..1b252e7 100644
--- a/core/src/main/java/org/apache/james/mime4j/stream/BasicMimeTokenStream.java
+++ b/core/src/main/java/org/apache/james/mime4j/stream/BasicMimeTokenStream.java
@@ -103,7 +103,46 @@
         this.monitor = monitor != null ? monitor : (config.isStrictParsing() ? DecodeMonitor.STRICT : DecodeMonitor.SILENT);
     }
 
-    public void doParse(InputStream stream,
+
+    /** Instructs the {@code MimeTokenStream} to parse the given streams contents.
+     * If the {@code MimeTokenStream} has already been in use, resets the streams
+     * internal state.
+     */
+    public void parse(InputStream stream) {
+        doParse(stream, null);
+    }
+
+    /** Instructs the {@code MimeTokenStream} to parse the given content with 
+     * the content type. The message stream is assumed to have no message header
+     * and is expected to begin with a message body. This can be the case when 
+     * the message content is transmitted using a different transport protocol 
+     * such as HTTP.
+     * <p/>
+     * If the {@code MimeTokenStream} has already been in use, resets the streams
+     * internal state.
+     */    
+    public void parseHeadless(InputStream stream, String contentType) {
+        if (contentType == null) {
+            throw new IllegalArgumentException("Content type may not be null");
+        }
+        doParse(stream, contentType);
+    }
+
+    protected void doParse(InputStream stream, String contentType) {
+        MutableBodyDescriptor newBodyDescriptor = newBodyDescriptor();
+        int start = T_START_MESSAGE;
+        if (contentType != null) {
+        	start = T_END_HEADER;
+        	newBodyDescriptor.addField(new RawField("Content-Type", contentType));
+        }
+        doParse(stream, newBodyDescriptor, start);
+    }
+
+    protected MutableBodyDescriptor newBodyDescriptor() {
+		return new DefaultBodyDescriptor(null);
+	}
+
+	public void doParse(InputStream stream,
             MutableBodyDescriptor newBodyDescriptor, int start) {
         LineNumberSource lineSource = null;
         if (config.isCountLineNumbers()) {
diff --git a/core/src/main/java/org/apache/james/mime4j/parser/DefaultBodyDescriptor.java b/core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java
similarity index 98%
rename from core/src/main/java/org/apache/james/mime4j/parser/DefaultBodyDescriptor.java
rename to core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java
index 34aef0a..2221397 100644
--- a/core/src/main/java/org/apache/james/mime4j/parser/DefaultBodyDescriptor.java
+++ b/core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java
@@ -17,16 +17,13 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mime4j.parser;
+package org.apache.james.mime4j.stream;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.james.mime4j.stream.BodyDescriptor;
-import org.apache.james.mime4j.stream.MutableBodyDescriptor;
-import org.apache.james.mime4j.stream.RawField;
 import org.apache.james.mime4j.util.MimeUtil;
 
 /**
diff --git a/core/src/main/java/org/apache/james/mime4j/stream/MimeEntityConfig.java b/core/src/main/java/org/apache/james/mime4j/stream/MimeEntityConfig.java
index 8fcac8d..b899795 100644
--- a/core/src/main/java/org/apache/james/mime4j/stream/MimeEntityConfig.java
+++ b/core/src/main/java/org/apache/james/mime4j/stream/MimeEntityConfig.java
@@ -20,7 +20,6 @@
 package org.apache.james.mime4j.stream;
 
 import org.apache.james.mime4j.MimeException;
-import org.apache.james.mime4j.parser.DefaultBodyDescriptor;
 import org.apache.james.mime4j.parser.MaximalBodyDescriptor;
 import org.apache.james.mime4j.parser.MimeStreamParser;
 import org.apache.james.mime4j.parser.MimeTokenStream;
diff --git a/core/src/test/java/org/apache/james/mime4j/parser/DefaultBodyDescriptorTest.java b/core/src/test/java/org/apache/james/mime4j/parser/DefaultBodyDescriptorTest.java
index 100268b..680daf5 100644
--- a/core/src/test/java/org/apache/james/mime4j/parser/DefaultBodyDescriptorTest.java
+++ b/core/src/test/java/org/apache/james/mime4j/parser/DefaultBodyDescriptorTest.java
@@ -19,9 +19,9 @@
 
 package org.apache.james.mime4j.parser;
 
-import org.apache.james.mime4j.parser.DefaultBodyDescriptor;
 import org.apache.james.mime4j.stream.BaseTestForBodyDescriptors;
 import org.apache.james.mime4j.stream.BodyDescriptor;
+import org.apache.james.mime4j.stream.DefaultBodyDescriptor;
 import org.apache.james.mime4j.stream.MutableBodyDescriptor;
 
 public class DefaultBodyDescriptorTest extends BaseTestForBodyDescriptors {
diff --git a/core/src/test/java/org/apache/james/mime4j/stream/MimeEntityTest.java b/core/src/test/java/org/apache/james/mime4j/stream/MimeEntityTest.java
index 38d2b55..035ecf3 100644
--- a/core/src/test/java/org/apache/james/mime4j/stream/MimeEntityTest.java
+++ b/core/src/test/java/org/apache/james/mime4j/stream/MimeEntityTest.java
@@ -29,7 +29,6 @@
 import org.apache.james.mime4j.io.MaxHeaderLimitException;
 import org.apache.james.mime4j.io.MaxLineLimitException;
 import org.apache.james.mime4j.io.LineNumberInputStream;
-import org.apache.james.mime4j.parser.DefaultBodyDescriptor;
 import org.apache.james.mime4j.stream.EntityStateMachine;
 import org.apache.james.mime4j.stream.EntityStates;
 import org.apache.james.mime4j.stream.MimeEntity;