14ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/* 24ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Licensed to the Apache Software Foundation (ASF) under one or more 34ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * contributor license agreements. See the NOTICE file distributed with 44ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * this work for additional information regarding copyright ownership. 54ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * The ASF licenses this file to You under the Apache License, Version 2.0 64ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * (the "License"); you may not use this file except in compliance with 74ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * the License. You may obtain a copy of the License at 84ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 94ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Unless required by applicable law or agreed to in writing, software 124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * See the License for the specific language governing permissions and 154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * limitations under the License. 164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 174ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapackage org.apache.commons.io.input; 184ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.InputStream; 204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/** 224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Proxy stream that prevents the underlying input stream from being closed. 234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <p> 244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * This class is typically used in cases where an input stream needs to be 254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * passed to a component that wants to explicitly close the stream even if 264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * more input would still be available to other components. 274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @version $Id: CloseShieldInputStream.java 587913 2007-10-24 15:47:30Z niallp $ 294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @since Commons IO 1.4 304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapublic class CloseShieldInputStream extends ProxyInputStream { 324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Creates a proxy that shields the given input stream from being 354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * closed. 364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @param in underlying input stream 384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira public CloseShieldInputStream(InputStream in) { 404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira super(in); 414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Replaces the underlying input stream with a {@link ClosedInputStream} 454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * sentinel. The original input stream will remain open, but this proxy 464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * will appear closed. 474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira public void close() { 494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira in = new ClosedInputStream(); 504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 514ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 524ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira} 53