14fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/****************************************************************
24fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Licensed to the Apache Software Foundation (ASF) under one   *
34fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * or more contributor license agreements.  See the NOTICE file *
44fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * distributed with this work for additional information        *
54fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * regarding copyright ownership.  The ASF licenses this file   *
64fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * to you under the Apache License, Version 2.0 (the            *
74fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * "License"); you may not use this file except in compliance   *
84fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * with the License.  You may obtain a copy of the License at   *
94fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *                                                              *
104fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *   http://www.apache.org/licenses/LICENSE-2.0                 *
114fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *                                                              *
124fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Unless required by applicable law or agreed to in writing,   *
134fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * software distributed under the License is distributed on an  *
144fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
154fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * KIND, either express or implied.  See the License for the    *
164fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * specific language governing permissions and limitations      *
174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * under the License.                                           *
184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ****************************************************************/
194fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
204fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedypackage org.apache.james.mime4j.util;
214fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
224fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.BufferedInputStream;
234fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.BufferedOutputStream;
244fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.File;
254fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.FileInputStream;
264fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.FileOutputStream;
274fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.IOException;
284fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.InputStream;
294fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.io.OutputStream;
304fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport java.util.Random;
314fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
324fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy//BEGIN android-changed: Stubbing out logging
334fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport org.apache.james.mime4j.Log;
344fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyimport org.apache.james.mime4j.LogFactory;
354fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy//END android-changed
364fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
374fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/**
384fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *
394fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * @version $Id: SimpleTempStorage.java,v 1.2 2004/10/02 12:41:11 ntherning Exp $
404fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy */
414fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedypublic class SimpleTempStorage extends TempStorage {
424fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    private static Log log = LogFactory.getLog(SimpleTempStorage.class);
434fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
444fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    private TempPath rootPath = null;
454fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    private Random random = new Random();
464fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
474fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    /**
484fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy     * Creates a new <code>SimpleTempStorageManager</code> instance.
494fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy     */
504fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    public SimpleTempStorage() {
514fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        rootPath = new SimpleTempPath(System.getProperty("java.io.tmpdir"));
524fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    }
534fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
544fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    private TempPath createTempPath(TempPath parent, String prefix)
554fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            throws IOException {
564fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
574fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        if (prefix == null) {
584fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            prefix = "";
594fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
604fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
614fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        File p = null;
624fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        int count = 1000;
634fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        do {
644fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            long n = Math.abs(random.nextLong());
654fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            p = new File(parent.getAbsolutePath(), prefix + n);
664fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            count--;
674fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        } while (p.exists() && count > 0);
684fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
694fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        if (p.exists() || !p.mkdirs()) {
704fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            log.error("Unable to mkdirs on " + p.getAbsolutePath());
714fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            throw new IOException("Creating dir '"
724fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                                    + p.getAbsolutePath() + "' failed.");
734fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
744fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
754fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        return new SimpleTempPath(p);
764fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    }
774fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
784fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    private TempFile createTempFile(TempPath parent, String prefix,
794fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                                    String suffix) throws IOException {
804fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
814fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        if (prefix == null) {
824fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            prefix = "";
834fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
844fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        if (suffix == null) {
854fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            suffix = ".tmp";
864fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
874fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
884fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        File f = null;
894fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
904fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        int count = 1000;
914fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        synchronized (this) {
924fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            do {
934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                long n = Math.abs(random.nextLong());
944fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                f = new File(parent.getAbsolutePath(), prefix + n + suffix);
954fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                count--;
964fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            } while (f.exists() && count > 0);
974fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
984fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            if (f.exists()) {
994fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                throw new IOException("Creating temp file failed: "
1004fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                                         + "Unable to find unique file name");
1014fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            }
1024fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1034fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            try {
1044fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                f.createNewFile();
1054fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            } catch (IOException e) {
1064fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                throw new IOException("Creating dir '"
1074fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                                        + f.getAbsolutePath() + "' failed.");
1084fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            }
1094fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1104fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1114fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        return new SimpleTempFile(f);
1124fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    }
1134fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1144fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    /**
1154fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy     * @see org.apache.james.mime4j.util.TempStorage#getRootTempPath()
1164fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy     */
1174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    public TempPath getRootTempPath() {
1184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        return rootPath;
1194fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    }
1204fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1214fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    private class SimpleTempPath implements TempPath {
1224fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        private File path = null;
1234fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1244fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        private SimpleTempPath(String path) {
1254fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            this.path = new File(path);
1264fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1274fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1284fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        private SimpleTempPath(File path) {
1294fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            this.path = path;
1304fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1314fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1324fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1334fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempPath#createTempFile()
1344fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1354fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public TempFile createTempFile() throws IOException {
1364fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return SimpleTempStorage.this.createTempFile(this, null, null);
1374fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1384fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1394fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1404fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempPath#createTempFile(java.lang.String, java.lang.String)
1414fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1424fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public TempFile createTempFile(String prefix, String suffix)
1434fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                throws IOException {
1444fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1454fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return SimpleTempStorage.this.createTempFile(this, prefix, suffix);
1464fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1474fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1484fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1494fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempPath#createTempFile(java.lang.String, java.lang.String, boolean)
1504fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1514fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public TempFile createTempFile(String prefix, String suffix,
1524fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy                                       boolean allowInMemory)
1534fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            throws IOException {
1544fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1554fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return SimpleTempStorage.this.createTempFile(this, prefix, suffix);
1564fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1574fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1584fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1594fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempPath#getAbsolutePath()
1604fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1614fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public String getAbsolutePath() {
1624fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return path.getAbsolutePath();
1634fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1644fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1654fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1664fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * Do nothing
1674fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1684fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public void delete() {
1694fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1704fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1714fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1724fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempPath#createTempPath()
1734fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1744fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public TempPath createTempPath() throws IOException {
1754fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return SimpleTempStorage.this.createTempPath(this, null);
1764fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1774fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1784fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1794fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempPath#createTempPath(java.lang.String)
1804fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1814fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public TempPath createTempPath(String prefix) throws IOException {
1824fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return SimpleTempStorage.this.createTempPath(this, prefix);
1834fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1844fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1854fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    }
1864fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1874fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    private class SimpleTempFile implements TempFile {
1884fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        private File file = null;
1894fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1904fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        private SimpleTempFile(File file) {
1914fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            this.file = file;
1924fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            this.file.deleteOnExit();
1934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
1944fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
1954fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
1964fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempFile#getInputStream()
1974fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
1984fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public InputStream getInputStream() throws IOException {
1994fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return new BufferedInputStream(new FileInputStream(file));
2004fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
2014fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
2024fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
2034fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempFile#getOutputStream()
2044fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
2054fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public OutputStream getOutputStream() throws IOException {
2064fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return new BufferedOutputStream(new FileOutputStream(file));
2074fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
2084fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
2094fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
2104fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempFile#getAbsolutePath()
2114fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
2124fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public String getAbsolutePath() {
2134fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return file.getAbsolutePath();
2144fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
2154fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
2164fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
2174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * Do nothing
2184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
2194fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public void delete() {
2204fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            // Not implementated
2214fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
2224fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
2234fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
2244fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempFile#isInMemory()
2254fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
2264fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public boolean isInMemory() {
2274fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return false;
2284fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
2294fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
2304fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        /**
2314fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         * @see org.apache.james.mime4j.util.TempFile#length()
2324fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy         */
2334fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        public long length() {
2344fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy            return file.length();
2354fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy        }
2364fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy
2374fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy    }
2384fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy}
239