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.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      */
     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      */
     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      */
     74     public void setParent(Entity parent) {
     75         this.parent = parent;
     76     }
     77 
     78     /**
     79      * @see org.apache.james.mime4j.message.BinaryBody#getInputStream()
     80      */
     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      */
     88     public void writeTo(OutputStream out) throws IOException {
     89 	IOUtils.copy(getInputStream(),out);
     90     }
     91 }
     92