You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mime4j-dev@james.apache.org by ol...@apache.org on 2013/05/14 12:49:34 UTC
svn commit: r1482293 -
/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java
Author: olegk
Date: Tue May 14 10:49:34 2013
New Revision: 1482293
URL: http://svn.apache.org/r1482293
Log:
Throw checked i/o exception instead of unchecked one in case of an unsupported / invalid charset in body descriptor
Modified:
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java?rev=1482293&r1=1482292&r2=1482293&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java Tue May 14 10:49:34 2013
@@ -23,15 +23,15 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
+import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
-import java.nio.charset.IllegalCharsetNameException;
-import java.nio.charset.UnsupportedCharsetException;
import java.util.LinkedList;
import org.apache.james.mime4j.Charsets;
import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.codec.DecodeMonitor;
import org.apache.james.mime4j.io.LineNumberInputStream;
+import org.apache.james.mime4j.util.CharsetUtil;
/**
* <p>
@@ -311,19 +311,20 @@ public class MimeTokenStream {
* @see #getInputStream
* @throws IllegalStateException {@link #getState()} returns an
* invalid value
- * @throws UnsupportedCharsetException if there is no JVM support
+ * @throws UnsupportedEncodingException if there is no JVM support
* for decoding the charset
- * @throws IllegalCharsetNameException if the charset name specified
- * in the mime type is illegal
*/
- public Reader getReader() {
+ public Reader getReader() throws UnsupportedEncodingException {
final BodyDescriptor bodyDescriptor = getBodyDescriptor();
final String mimeCharset = bodyDescriptor.getCharset();
final Charset charset;
if (mimeCharset == null || "".equals(mimeCharset)) {
charset = Charsets.US_ASCII;
} else {
- charset = Charset.forName(mimeCharset);
+ charset = CharsetUtil.lookup(mimeCharset);
+ if (charset == null) {
+ throw new UnsupportedEncodingException(mimeCharset);
+ }
}
final InputStream instream = getDecodedInputStream();
return new InputStreamReader(instream, charset);