14ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/****************************************************************
24ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Licensed to the Apache Software Foundation (ASF) under one   *
34ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * or more contributor license agreements.  See the NOTICE file *
44ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * distributed with this work for additional information        *
54ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * regarding copyright ownership.  The ASF licenses this file   *
64ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * to you under the Apache License, Version 2.0 (the            *
74ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * "License"); you may not use this file except in compliance   *
84ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * with the License.  You may obtain a copy of the License at   *
94ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira *                                                              *
104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira *   http://www.apache.org/licenses/LICENSE-2.0                 *
114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira *                                                              *
124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Unless required by applicable law or agreed to in writing,   *
134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * software distributed under the License is distributed on an  *
144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * KIND, either express or implied.  See the License for the    *
164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * specific language governing permissions and limitations      *
174ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * under the License.                                           *
184ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ****************************************************************/
194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapackage org.apache.james.mime4j.message;
214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.ByteArrayInputStream;
234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.ByteArrayOutputStream;
244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.IOException;
254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.InputStream;
264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.OutputStream;
274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport org.apache.commons.io.IOUtils;
294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira//BEGIN android-changed: Stubbing out logging
304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport org.apache.james.mime4j.Log;
314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport org.apache.james.mime4j.LogFactory;
324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira//END android-changed
334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport org.apache.james.mime4j.util.TempPath;
344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport org.apache.james.mime4j.util.TempStorage;
354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/**
384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Binary body backed by a {@link org.apache.james.mime4j.util.TempFile}.
394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira *
404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira *
414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @version $Id: TempFileBinaryBody.java,v 1.2 2004/10/02 12:41:11 ntherning Exp $
424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */
434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraclass MemoryBinaryBody extends AbstractBody implements BinaryBody {
444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    private static Log log = LogFactory.getLog(MemoryBinaryBody.class);
454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    private Entity parent = null;
474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    private byte[] tempFile = null;
484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    /**
504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     * Use the given InputStream to build the TemporyFileBinaryBody
514ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     *
524ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     * @param is the InputStream to use as source
534ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     * @throws IOException
544ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     */
554ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    public MemoryBinaryBody(InputStream is) throws IOException {
564ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
574ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        TempPath tempPath = TempStorage.getInstance().getRootTempPath();
584ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
594ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        ByteArrayOutputStream out = new ByteArrayOutputStream();
604ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        IOUtils.copy(is, out);
614ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        out.close();
624ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        tempFile = out.toByteArray();
634ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    }
644ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
654ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    /**
664ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     * @see org.apache.james.mime4j.message.AbstractBody#getParent()
674ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     */
684ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    public Entity getParent() {
694ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        return parent;
704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    }
714ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
724ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    /**
734ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     * @see org.apache.james.mime4j.message.AbstractBody#setParent(org.apache.james.mime4j.message.Entity)
744ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     */
754ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    public void setParent(Entity parent) {
764ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        this.parent = parent;
774ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    }
784ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
794ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    /**
804ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     * @see org.apache.james.mime4j.message.BinaryBody#getInputStream()
814ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     */
824ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    public InputStream getInputStream() throws IOException {
834ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        return new ByteArrayInputStream(tempFile);
844ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    }
854ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
864ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    /**
874ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     * @see org.apache.james.mime4j.message.Body#writeTo(java.io.OutputStream)
884ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira     */
894ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    public void writeTo(OutputStream out) throws IOException {
904ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira	IOUtils.copy(getInputStream(),out);
914ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    }
924ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira}
93