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