You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/11/03 15:52:43 UTC

svn commit: r1030480 - /james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStream.java

Author: norman
Date: Wed Nov  3 14:52:42 2010
New Revision: 1030480

URL: http://svn.apache.org/viewvc?rev=1030480&view=rev
Log:
Fix parsing of MimeMessage instances which were not constructed via an InputStream (JAMES-1106)

Modified:
    james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStream.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=1030480&r1=1030479&r2=1030480&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 Wed Nov  3 14:52:42 2010
@@ -19,6 +19,8 @@
 
 package org.apache.james.core;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -40,14 +42,27 @@ public class MimeMessageInputStream exte
        
         // check if we need to use the wrapped message
         if (m instanceof MimeMessageCopyOnWriteProxy) {
-            m = ((MimeMessageCopyOnWriteProxy) message).getWrappedMessage();
+            m = ((MimeMessageCopyOnWriteProxy) m).getWrappedMessage();
         }
 
         // check if we can use optimized operations
         if (m instanceof MimeMessageWrapper) {
             in = ((MimeMessageWrapper) m).getMessageInputStream();
         } else {
-            in = new CombinedInputStream(new InputStream[] { new InternetHeadersInputStream(message.getAllHeaderLines()), message.getRawInputStream() });
+            try {
+                in = new CombinedInputStream(new InputStream[] { new InternetHeadersInputStream(message.getAllHeaderLines()), message.getRawInputStream() });
+            } catch (MessagingException e) {
+                // its possible that MimeMessage.getRawInputStream throws an exception when try to access the method on a self constructed MimeMessage.
+                // so try to read it in memory 
+                ByteArrayOutputStream out = new ByteArrayOutputStream();
+                try {
+                    message.writeTo(out);
+                    in = new ByteArrayInputStream(out.toByteArray());
+                } catch (IOException e1) {
+                    throw new MessagingException("Unable to read message " + message, e);
+                }
+                
+            }
         }
 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org