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 ba...@apache.org on 2010/06/28 22:43:32 UTC

svn commit: r958717 - in /james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j: dom/MessageBuilder.java message/MessageBuilderImpl.java message/MessageImpl.java

Author: bago
Date: Mon Jun 28 20:43:31 2010
New Revision: 958717

URL: http://svn.apache.org/viewvc?rev=958717&view=rev
Log:
Expose contentDecoding and FlatMode via MessageBuilder API (MIME4J-175)

Modified:
    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/message/MessageBuilderImpl.java
    james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java

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=958717&r1=958716&r2=958717&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 Mon Jun 28 20:43:31 2010
@@ -39,4 +39,8 @@ public abstract class MessageBuilder {
     public abstract void setDecodeMonitor(
             DecodeMonitor decodeMonitor);
 
+    public abstract void setContentDecoding(boolean contentDecoding);
+    
+    public abstract void setFlatMode();
+
 }

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=958717&r1=958716&r2=958717&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 Mon Jun 28 20:43:31 2010
@@ -21,6 +21,8 @@ public class MessageBuilderImpl extends 
     private DecodeMonitor decodeMonitor = null;
     private MimeEntityConfig mimeEntityConfig = null;
     private MutableBodyDescriptorFactory mutableBodyDescriptorFactory = null;
+    private boolean flatMode = false;
+    private boolean contentDecoding = true;
 
     public MessageBuilderImpl() {
     }
@@ -37,7 +39,7 @@ public class MessageBuilderImpl extends 
 
     @Override
     public Message parse(InputStream source) throws MimeException, IOException {
-        return new MessageImpl(source, mimeEntityConfig, storageProvider, mutableBodyDescriptorFactory, decodeMonitor);
+        return new MessageImpl(source, mimeEntityConfig, storageProvider, mutableBodyDescriptorFactory, decodeMonitor, contentDecoding, flatMode);
     }
 
     @Override
@@ -58,4 +60,14 @@ public class MessageBuilderImpl extends 
         this.mutableBodyDescriptorFactory  = mutableBodyDescriptorFactory;
     }
 
+    @Override
+    public void setContentDecoding(boolean contentDecoding) {
+        this.contentDecoding  = contentDecoding;
+    }
+
+    @Override
+    public void setFlatMode() {
+        this.flatMode = true;
+    }
+
 }

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=958717&r1=958716&r2=958717&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 Mon Jun 28 20:43:31 2010
@@ -66,8 +66,6 @@ import org.apache.james.mime4j.util.Mime
  */
 public class MessageImpl extends Message {
 
-    private DecodeMonitor monitor;
-
     /**
      * Creates a new empty <code>Message</code>.
      */
@@ -158,17 +156,47 @@ public class MessageImpl extends Message
             final StorageProvider storageProvider, 
             final MutableBodyDescriptorFactory bodyDescFactory,
             final DecodeMonitor monitor) throws IOException, MimeIOException {
+        this(is, config, storageProvider, bodyDescFactory, monitor, true, false);
+    }
+    
+    /**
+     * Parses the specified MIME message stream into a <code>Message</code>
+     * instance using given {@link MimeEntityConfig} and {@link StorageProvider}.
+     * 
+     * @param is
+     *            the stream to parse.
+     * @param config
+     *            {@link MimeEntityConfig} to use.
+     * @param storageProvider
+     *            {@link StorageProvider} to use for storing text and binary
+     *            message bodies.
+     * @param bodyDescFactory
+     *            {@link MutableBodyDescriptorFactory} to use for creating body descriptors.
+     * @throws IOException
+     *             on I/O errors.
+     * @throws MimeIOException
+     *             on MIME protocol violations.
+     */
+    public MessageImpl(
+            final InputStream is, 
+            final MimeEntityConfig config,
+            final StorageProvider storageProvider, 
+            final MutableBodyDescriptorFactory bodyDescFactory,
+            final DecodeMonitor monitor,
+            boolean contentDecoding,
+            boolean flatMode) throws IOException, MimeIOException {
         try {
-            this.monitor = monitor != null ? monitor : DecodeMonitor.SILENT;
-            MimeStreamParser parser = new MimeStreamParser(config, bodyDescFactory, this.monitor);
-            parser.setContentDecoding(true);
-            parser.setContentHandler(new EntityBuilder(this, storageProvider, this.monitor));
+            DecodeMonitor mon = monitor != null ? monitor : DecodeMonitor.SILENT;
+            MimeStreamParser parser = new MimeStreamParser(config, bodyDescFactory, mon);
+            parser.setContentHandler(new EntityBuilder(this, storageProvider, mon));
+            parser.setContentDecoding(contentDecoding);
+            if (flatMode) parser.setFlat(true);
             parser.parse(is);
         } catch (MimeException e) {
             throw new MimeIOException(e);
         }
     }
-
+    
     public MessageImpl(
             final InputStream is, 
             final MimeEntityConfig config,