Home | History | Annotate | Download | only in message
      1 /****************************************************************
      2  * Licensed to the Apache Software Foundation (ASF) under one   *
      3  * or more contributor license agreements.  See the NOTICE file *
      4  * distributed with this work for additional information        *
      5  * regarding copyright ownership.  The ASF licenses this file   *
      6  * to you under the Apache License, Version 2.0 (the            *
      7  * "License"); you may not use this file except in compliance   *
      8  * with the License.  You may obtain a copy of the License at   *
      9  *                                                              *
     10  *   http://www.apache.org/licenses/LICENSE-2.0                 *
     11  *                                                              *
     12  * Unless required by applicable law or agreed to in writing,   *
     13  * software distributed under the License is distributed on an  *
     14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
     15  * KIND, either express or implied.  See the License for the    *
     16  * specific language governing permissions and limitations      *
     17  * under the License.                                           *
     18  ****************************************************************/
     19 
     20 package org.apache.james.mime4j.message;
     21 
     22 import java.io.IOException;
     23 import java.io.InputStream;
     24 import java.io.InputStreamReader;
     25 import java.io.OutputStream;
     26 import java.io.Reader;
     27 import java.io.UnsupportedEncodingException;
     28 
     29 import org.apache.commons.io.IOUtils;
     30 //BEGIN android-changed: Stubbing out logging
     31 import org.apache.james.mime4j.Log;
     32 import org.apache.james.mime4j.LogFactory;
     33 //END android-changed
     34 import org.apache.james.mime4j.util.CharsetUtil;
     35 import org.apache.james.mime4j.util.TempFile;
     36 import org.apache.james.mime4j.util.TempPath;
     37 import org.apache.james.mime4j.util.TempStorage;
     38 
     39 
     40 /**
     41  * Text body backed by a {@link org.apache.james.mime4j.util.TempFile}.
     42  *
     43  *
     44  * @version $Id: TempFileTextBody.java,v 1.3 2004/10/25 07:26:46 ntherning Exp $
     45  */
     46 class TempFileTextBody extends AbstractBody implements TextBody {
     47     private static Log log = LogFactory.getLog(TempFileTextBody.class);
     48 
     49     private String mimeCharset = null;
     50     private TempFile tempFile = null;
     51 
     52     public TempFileTextBody(InputStream is) throws IOException {
     53         this(is, null);
     54     }
     55 
     56     public TempFileTextBody(InputStream is, String mimeCharset)
     57             throws IOException {
     58 
     59         this.mimeCharset = mimeCharset;
     60 
     61         TempPath tempPath = TempStorage.getInstance().getRootTempPath();
     62         tempFile = tempPath.createTempFile("attachment", ".txt");
     63 
     64         OutputStream out = tempFile.getOutputStream();
     65         IOUtils.copy(is, out);
     66         out.close();
     67     }
     68 
     69     /**
     70      * @see org.apache.james.mime4j.message.TextBody#getReader()
     71      */
     72     public Reader getReader() throws UnsupportedEncodingException, IOException {
     73         String javaCharset = null;
     74         if (mimeCharset != null) {
     75             javaCharset = CharsetUtil.toJavaCharset(mimeCharset);
     76         }
     77 
     78         if (javaCharset == null) {
     79             javaCharset = "ISO-8859-1";
     80 
     81             if (log.isWarnEnabled()) {
     82                 if (mimeCharset == null) {
     83                     log.warn("No MIME charset specified. Using " + javaCharset
     84                             + " instead.");
     85                 } else {
     86                     log.warn("MIME charset '" + mimeCharset + "' has no "
     87                             + "corresponding Java charset. Using " + javaCharset
     88                             + " instead.");
     89                 }
     90             }
     91         }
     92         /*
     93             if (log.isWarnEnabled()) {
     94                 if (mimeCharset == null) {
     95                     log.warn("No MIME charset specified. Using the "
     96                            + "platform's default charset.");
     97                 } else {
     98                     log.warn("MIME charset '" + mimeCharset + "' has no "
     99                             + "corresponding Java charset. Using the "
    100                             + "platform's default charset.");
    101                 }
    102             }
    103 
    104             return new InputStreamReader(tempFile.getInputStream());
    105         }*/
    106 
    107         return new InputStreamReader(tempFile.getInputStream(), javaCharset);
    108     }
    109 
    110 
    111     /**
    112      * @see org.apache.james.mime4j.message.Body#writeTo(java.io.OutputStream)
    113      */
    114     public void writeTo(OutputStream out) throws IOException {
    115 	IOUtils.copy(tempFile.getInputStream(), out);
    116     }
    117 }
    118