• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.OutputStream;
25 
26 import org.apache.commons.io.IOUtils;
27 //BEGIN android-changed: Stubbing out logging
28 import org.apache.james.mime4j.Log;
29 import org.apache.james.mime4j.LogFactory;
30 //END android-changed
31 import org.apache.james.mime4j.util.TempFile;
32 import org.apache.james.mime4j.util.TempPath;
33 import org.apache.james.mime4j.util.TempStorage;
34 
35 
36 /**
37  * Binary body backed by a {@link org.apache.james.mime4j.util.TempFile}.
38  *
39  *
40  * @version $Id: TempFileBinaryBody.java,v 1.2 2004/10/02 12:41:11 ntherning Exp $
41  */
42 class TempFileBinaryBody extends AbstractBody implements BinaryBody {
43     private static Log log = LogFactory.getLog(TempFileBinaryBody.class);
44 
45     private Entity parent = null;
46     private TempFile tempFile = null;
47 
48     /**
49      * Use the given InputStream to build the TemporyFileBinaryBody
50      *
51      * @param is the InputStream to use as source
52      * @throws IOException
53      */
TempFileBinaryBody(InputStream is)54     public TempFileBinaryBody(InputStream is) throws IOException {
55 
56         TempPath tempPath = TempStorage.getInstance().getRootTempPath();
57         tempFile = tempPath.createTempFile("attachment", ".bin");
58 
59         OutputStream out = tempFile.getOutputStream();
60         IOUtils.copy(is, out);
61         out.close();
62     }
63 
64     /**
65      * @see org.apache.james.mime4j.message.AbstractBody#getParent()
66      */
getParent()67     public Entity getParent() {
68         return parent;
69     }
70 
71     /**
72      * @see org.apache.james.mime4j.message.AbstractBody#setParent(org.apache.james.mime4j.message.Entity)
73      */
setParent(Entity parent)74     public void setParent(Entity parent) {
75         this.parent = parent;
76     }
77 
78     /**
79      * @see org.apache.james.mime4j.message.BinaryBody#getInputStream()
80      */
getInputStream()81     public InputStream getInputStream() throws IOException {
82         return tempFile.getInputStream();
83     }
84 
85     /**
86      * @see org.apache.james.mime4j.message.Body#writeTo(java.io.OutputStream)
87      */
writeTo(OutputStream out)88     public void writeTo(OutputStream out) throws IOException {
89 	IOUtils.copy(getInputStream(),out);
90     }
91 }
92