Author: norman
Date: Mon Nov  8 14:35:53 2010
New Revision: 1032585

URL: http://svn.apache.org/viewvc?rev=1032585&view=rev
Log:
Reuse code of MimeMessageInputStream in MimeMessageWrapper

Modified:
    
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStream.java
    
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java

Modified: 
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStream.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStream.java?rev=1032585&r1=1032584&r2=1032585&view=diff
==============================================================================
--- 
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStream.java
 (original)
+++ 
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStream.java
 Mon Nov  8 14:35:53 2010
@@ -36,17 +36,25 @@ import org.apache.james.util.stream.Comb
 public class MimeMessageInputStream extends InputStream {
     private InputStream in;
 
+    /**
+     * Provide an {...@link InputStream} over a {...@link MimeMessage}. 
+     * 
+     * @param message the message to wrap
+     * @param tryCast try to cast the {...@link MimeMessage} to {...@link 
MimeMessageCopyOnWriteProxy} / {...@link MimeMessageWrapper} to do some 
optimized processing
+     *                if possible
+     * @throws MessagingException
+     */
     @SuppressWarnings("unchecked")
-    public MimeMessageInputStream(MimeMessage message) throws 
MessagingException {
+    public MimeMessageInputStream(MimeMessage message, boolean tryCast) throws 
MessagingException {
         MimeMessage m = message;
        
         // check if we need to use the wrapped message
-        if (m instanceof MimeMessageCopyOnWriteProxy) {
+        if (tryCast && m instanceof MimeMessageCopyOnWriteProxy) {
             m = ((MimeMessageCopyOnWriteProxy) m).getWrappedMessage();
         }
 
         // check if we can use optimized operations
-        if (m instanceof MimeMessageWrapper) {
+        if (tryCast && m instanceof MimeMessageWrapper) {
             in = ((MimeMessageWrapper) m).getMessageInputStream();
         } else {
             try {
@@ -67,6 +75,15 @@ public class MimeMessageInputStream exte
 
     }
 
+    /**
+     * Use true as tryCast parameter
+     * 
+     * {...@link #MimeMessageInputStream(MimeMessage, boolean)}
+     */
+    public MimeMessageInputStream(MimeMessage message) throws 
MessagingException {
+        this(message, true);
+    }
+    
     @Override
     public int read() throws IOException {
         return in.read();

Modified: 
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java?rev=1032585&r1=1032584&r2=1032585&view=diff
==============================================================================
--- 
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java
 (original)
+++ 
james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java
 Mon Nov  8 14:35:53 2010
@@ -40,7 +40,6 @@ import javax.mail.util.SharedByteArrayIn
 import org.apache.commons.io.IOUtils;
 import org.apache.james.lifecycle.Disposable;
 import org.apache.james.lifecycle.LifecycleUtil;
-import org.apache.james.util.stream.CombinedInputStream;
 
 /**
  * This object wraps a MimeMessage, only loading the underlying MimeMessage
@@ -575,7 +574,7 @@ public class MimeMessageWrapper
                 throw new MessagingException("Unable to get inputstream", e);
             }
         } else {
-            return new CombinedInputStream(new InputStream[] { new 
InternetHeadersInputStream(getAllHeaderLines()), getRawInputStream()});
+            return new MimeMessageInputStream(this, false);
         }
     }
     



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to