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