Author: rdonkin
Date: Sun May 25 03:56:26 2008
New Revision: 659956

URL: http://svn.apache.org/viewvc?rev=659956&view=rev
Log:
Confirmed and fixed MIME4J-36 NullPointerException in Header.writeTo with 
missing Content-Type https://issues.apache.org/jira/browse/MIME4J-36.

Modified:
    james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java
    
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java
    
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/MessageCompleteMailTest.java

Modified: 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java?rev=659956&r1=659955&r2=659956&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java 
(original)
+++ 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java 
Sun May 25 03:56:26 2008
@@ -167,11 +167,16 @@
     public void writeTo(final OutputStream out, int mode) throws IOException, 
MimeException {
         Charset charset = null;
         if (mode == MessageUtils.LENIENT) {
-            ContentTypeField cf = ((ContentTypeField) 
getField(Field.CONTENT_TYPE));
-            if (cf != null && cf.getCharset() != null) {
-                charset = CharsetUtil.getCharset(cf.getCharset());
+            final ContentTypeField contentTypeField = ((ContentTypeField) 
getField(Field.CONTENT_TYPE));
+            if (contentTypeField == null) {
+                charset = MessageUtils.DEFAULT_CHARSET;
             } else {
-                charset = MessageUtils.ISO_8859_1;
+                final String contentTypeFieldCharset = 
contentTypeField.getCharset();
+                if (contentTypeField != null && contentTypeFieldCharset != 
null) {
+                    charset = CharsetUtil.getCharset(contentTypeFieldCharset);
+                } else {
+                    charset = MessageUtils.ISO_8859_1;
+                }
             }
         } else {
             charset = MessageUtils.DEFAULT_CHARSET;

Modified: 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java?rev=659956&r1=659955&r2=659956&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java 
(original)
+++ 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java 
Sun May 25 03:56:26 2008
@@ -32,6 +32,7 @@
 import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
 import org.apache.james.mime4j.field.Field;
 import org.apache.james.mime4j.field.UnstructuredField;
+import org.apache.james.mime4j.util.MessageUtils;
 import org.apache.james.mime4j.util.MimeUtil;
 
 
@@ -103,6 +104,24 @@
         }
     }
     
+    /**
+     * Writes out the content of this message..
+     * @param out not null
+     * @param mode header out validation mode [EMAIL PROTECTED] MessageUtils}
+     * @throws MimeException 
+     * @see 
org.apache.james.mime4j.message.Entity#writeTo(java.io.OutputStream)
+     */
+    public void writeTo(OutputStream out, int mode) throws IOException, 
MimeException {
+        getHeader().writeTo(out, mode);
+
+        Body body = getBody();
+        if (body instanceof Multipart) {
+            Multipart mp = (Multipart) body;
+            mp.writeTo(out);
+        } else {
+            body.writeTo(out);
+        }
+    }
     
     private class MessageBuilder implements ContentHandler {
         private Stack stack = new Stack();

Modified: 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/MessageCompleteMailTest.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/MessageCompleteMailTest.java?rev=659956&r1=659955&r2=659956&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/MessageCompleteMailTest.java
 (original)
+++ 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/MessageCompleteMailTest.java
 Sun May 25 03:56:26 2008
@@ -20,10 +20,10 @@
 
 import java.io.ByteArrayInputStream;
 
-import org.apache.james.mime4j.ExampleMail;
-
 import junit.framework.TestCase;
 
+import org.apache.james.mime4j.ExampleMail;
+
 public class MessageCompleteMailTest extends TestCase {
 
     protected void setUp() throws Exception {
@@ -47,7 +47,7 @@
         Multipart part = (Multipart)message.getBody();
         assertEquals("mixed", part.getSubType());
     }
-    
+
     private Message createMessage(byte[] octets) throws Exception {
         ByteArrayInputStream in = new ByteArrayInputStream(octets);
         Message message = new Message(in);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to