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 2007/02/23 12:44:01 UTC

svn commit: r510915 - in /james/mime4j/trunk/src/main/java/org/mime4j: message/BodyPart.java message/Header.java message/Message.java message/Multipart.java util/CharsetUtil.java

Author: norman
Date: Fri Feb 23 03:44:00 2007
New Revision: 510915

URL: http://svn.apache.org/viewvc?view=rev&rev=510915
Log:
Get sure we use the right charset for while writing to the OutputStream

Modified:
    james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java
    james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java
    james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java
    james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java
    james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java

Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java Fri Feb 23 03:44:00 2007
@@ -22,6 +22,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 
+
 /**
  * Represents a MIME body part  (see RFC 2045).
  *
@@ -35,12 +36,7 @@
      * @see org.mime4j.message.Entity#writeTo(java.io.OutputStream)
      */
     public void writeTo(OutputStream out) throws IOException {
-        String header = getHeader().toString();
-        if (header.equals("") == false) {
-
-            out.write((header + "\r\n").getBytes());
-        }
-
+        getHeader().writeTo(out);
         getBody().writeTo(out);
     }
 }

Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java Fri Feb 23 03:44:00 2007
@@ -19,8 +19,11 @@
 
 package org.mime4j.message;
 
+import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -29,7 +32,9 @@
 
 import org.mime4j.AbstractContentHandler;
 import org.mime4j.MimeStreamParser;
+import org.mime4j.field.ContentTypeField;
 import org.mime4j.field.Field;
+import org.mime4j.util.CharsetUtil;
 
 
 /**
@@ -130,6 +135,22 @@
             str.append("\r\n");
         }
         return str.toString();
+    }
+    
+    
+    /**
+     * Write the Header to the given outputStream
+     * 
+     * @param out
+     * @throws IOException
+     */
+    public void writeTo(OutputStream out) throws IOException {
+        String charString = ((ContentTypeField) getField(Field.CONTENT_TYPE)).getCharset();
+        
+        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, CharsetUtil.getCharset(charString)),8192);
+        writer.append(toString()+ "\r\n");
+        writer.flush();
+        writer.close();
     }
 
 }

Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java Fri Feb 23 03:44:00 2007
@@ -83,8 +83,7 @@
      * @see org.mime4j.message.Entity#writeTo(java.io.OutputStream)
      */
     public void writeTo(OutputStream out) throws IOException {
-        String header = getHeader().toString();
-        out.write((header + "\r\n").getBytes());
+        getHeader().writeTo(out);
 
         Body body = getBody();
         if (body instanceof Multipart) {

Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java Fri Feb 23 03:44:00 2007
@@ -19,8 +19,10 @@
 
 package org.mime4j.message;
 
+import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -28,6 +30,7 @@
 
 import org.mime4j.field.ContentTypeField;
 import org.mime4j.field.Field;
+import org.mime4j.util.CharsetUtil;
 
 /**
  * Represents a MIME multipart body (see RFC 2045).A multipart body has a 
@@ -166,15 +169,17 @@
         String boundary = getBoundary();
         List bodyParts = getBodyParts();
 
-        out.write((getPreamble() + "\r\n").getBytes());
+        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, CharsetUtil.getCharset(getCharset())),8192);
+        
+        writer.append(getPreamble() + "\r\n");
 
         for (int i = 0; i < bodyParts.size(); i++) {
-            out.write((boundary + "\r\n").getBytes());
+            writer.append(boundary + "\r\n");
             ((BodyPart) bodyParts.get(i)).writeTo(out);
         }
 
-        out.write((getEpilogue() + "\r\n").getBytes());
-        out.write((boundary + "--" + "\r\n").getBytes());
+        writer.append(getEpilogue() + "\r\n");
+        writer.append(boundary + "--" + "\r\n");
 
     }
 
@@ -188,5 +193,11 @@
         ContentTypeField cField = (ContentTypeField) e.getHeader().getField(
                 Field.CONTENT_TYPE);
         return cField.getBoundary();
+    }
+    
+    private String getCharset() {
+        Entity e = getParent();
+        String charString = ((ContentTypeField) e.getHeader().getField(Field.CONTENT_TYPE)).getCharset();
+        return charString;
     }
 }

Modified: james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java Fri Feb 23 03:44:00 2007
@@ -1118,6 +1118,17 @@
         return null;
     }
 
+    public static java.nio.charset.Charset getCharset(String charsetName) {
+        java.nio.charset.Charset c = java.nio.charset.Charset.forName(charsetName);
+        
+        if (c == null) {
+            //TODO: Check what touse as default
+            c = java.nio.charset.Charset.forName("ISO8859-1");
+            
+        }
+        return c;
+        
+    }
     /*
      * Uncomment the code below and run the main method to regenerate the
      * Javadoc table above when the known charsets change. 



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