001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.io.output;
018
019 import java.io.FilterWriter;
020 import java.io.IOException;
021 import java.io.Writer;
022
023 /**
024 * A Proxy stream which acts as expected, that is it passes the method
025 * calls on to the proxied stream and doesn't change which methods are
026 * being called. It is an alternative base class to FilterWriter
027 * to increase reusability, because FilterWriter changes the
028 * methods being called, such as write(char[]) to write(char[], int, int)
029 * and write(String) to write(String, int, int).
030 *
031 * @author Stephen Colebourne
032 * @version $Id: ProxyWriter.java 610010 2008-01-08 14:50:59Z niallp $
033 */
034 public class ProxyWriter extends FilterWriter {
035
036 /**
037 * Constructs a new ProxyWriter.
038 *
039 * @param proxy the Writer to delegate to
040 */
041 public ProxyWriter(Writer proxy) {
042 super(proxy);
043 // the proxy is stored in a protected superclass variable named 'out'
044 }
045
046 /**
047 * Invokes the delegate's <code>write(int)</code> method.
048 * @param idx the character to write
049 * @throws IOException if an I/O error occurs
050 */
051 public void write(int idx) throws IOException {
052 out.write(idx);
053 }
054
055 /**
056 * Invokes the delegate's <code>write(char[])</code> method.
057 * @param chr the characters to write
058 * @throws IOException if an I/O error occurs
059 */
060 public void write(char[] chr) throws IOException {
061 out.write(chr);
062 }
063
064 /**
065 * Invokes the delegate's <code>write(char[], int, int)</code> method.
066 * @param chr the characters to write
067 * @param st The start offset
068 * @param end The number of characters to write
069 * @throws IOException if an I/O error occurs
070 */
071 public void write(char[] chr, int st, int end) throws IOException {
072 out.write(chr, st, end);
073 }
074
075 /**
076 * Invokes the delegate's <code>write(String)</code> method.
077 * @param str the string to write
078 * @throws IOException if an I/O error occurs
079 */
080 public void write(String str) throws IOException {
081 out.write(str);
082 }
083
084 /**
085 * Invokes the delegate's <code>write(String)</code> method.
086 * @param str the string to write
087 * @param st The start offset
088 * @param end The number of characters to write
089 * @throws IOException if an I/O error occurs
090 */
091 public void write(String str, int st, int end) throws IOException {
092 out.write(str, st, end);
093 }
094
095 /**
096 * Invokes the delegate's <code>flush()</code> method.
097 * @throws IOException if an I/O error occurs
098 */
099 public void flush() throws IOException {
100 out.flush();
101 }
102
103 /**
104 * Invokes the delegate's <code>close()</code> method.
105 * @throws IOException if an I/O error occurs
106 */
107 public void close() throws IOException {
108 out.close();
109 }
110
111 }