TempFileTextBody.java revision a07f2ae0b18964aa15e218e8b6be8be24e5c9f46
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
20package org.apache.james.mime4j.message;
21
22import java.io.IOException;
23import java.io.InputStream;
24import java.io.InputStreamReader;
25import java.io.OutputStream;
26import java.io.Reader;
27import java.io.UnsupportedEncodingException;
28
29import org.apache.commons.io.IOUtils;
30//BEGIN android-changed: Stubbing out logging
31import org.apache.james.mime4j.Log;
32import org.apache.james.mime4j.LogFactory;
33//END android-changed
34import org.apache.james.mime4j.util.CharsetUtil;
35import org.apache.james.mime4j.util.TempFile;
36import org.apache.james.mime4j.util.TempPath;
37import 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 */
46class 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