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