1 /* 2 * This file is part of *** M y C o R e *** 3 * See http://www.mycore.de/ for details. 4 * 5 * MyCoRe is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * MyCoRe is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with MyCoRe. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 package org.mycore.common.content.streams; 20 21 import java.io.FilterInputStream; 22 import java.io.IOException; 23 import java.io.InputStream; 24 25 /** 26 * A FilterInputStream that wraps any InputStream to prevent close() is called. 27 * Sometimes, third party code or code you can not change closes an InputStream after 28 * it returned -1 on read(). But when using ZipInputStream, this is unwanted, because 29 * a ZipInputStream may contain other entries that have to be read and invoked code 30 * must be prevented from calling close(). With this class, a ZipInputStream or any other 31 * stream can be wrapped to regain control of closing. 32 * 33 * @author Frank L\u00FCtzenkirchen 34 */ 35 public class MCRNotClosingInputStream extends FilterInputStream { 36 37 public MCRNotClosingInputStream(InputStream in) { 38 super(in); 39 } 40 41 /** 42 * Does nothing. When you want to really close the stream, call reallyClose(). 43 */ 44 public void close() throws IOException { 45 } 46 47 /** 48 * Really closes the stream. 49 */ 50 public void reallyClose() throws IOException { 51 super.close(); 52 } 53 }