001 package railo.commons.io; 002 003 import java.io.IOException; 004 import java.io.Writer; 005 006 public class ForkWriter extends Writer { 007 008 private final Writer w1; 009 private final Writer w2; 010 011 public ForkWriter(Writer w1, Writer w2) { 012 this.w1=w1; 013 this.w2=w2; 014 } 015 016 @Override 017 public Writer append(char c) throws IOException { 018 try { 019 w1.write(c); 020 } 021 finally { 022 w2.write(c); 023 } 024 return this; 025 } 026 027 @Override 028 public Writer append(CharSequence csq, int start, int end) throws IOException { 029 try { 030 w1.write(csq.toString(), start, end); 031 } 032 finally { 033 w2.write(csq.toString(), start, end); 034 } 035 return this; 036 } 037 038 @Override 039 public Writer append(CharSequence csq) throws IOException { 040 try { 041 w1.write(csq.toString()); 042 } 043 finally { 044 w2.write(csq.toString()); 045 } 046 return this; 047 } 048 049 @Override 050 public void write(char[] cbuf) throws IOException { 051 try { 052 w1.write(cbuf); 053 } 054 finally { 055 w2.write(cbuf); 056 } 057 } 058 059 @Override 060 public void write(int c) throws IOException { 061 try { 062 w1.write(c); 063 } 064 finally { 065 w2.write(c); 066 } 067 } 068 069 @Override 070 public void write(String str, int off, int len) throws IOException { 071 try { 072 w1.write(str, off, len); 073 } 074 finally { 075 w2.write(str, off, len); 076 } 077 } 078 079 @Override 080 public void write(String str) throws IOException { 081 try { 082 w1.write(str); 083 } 084 finally { 085 w2.write(str); 086 } 087 } 088 089 @Override 090 public void close() throws IOException { 091 try { 092 w1.close(); 093 } 094 finally { 095 w2.close(); 096 } 097 } 098 099 @Override 100 public void flush() throws IOException { 101 102 try { 103 w1.flush(); 104 } 105 finally { 106 w2.flush(); 107 } 108 } 109 110 @Override 111 public void write(char[] cbuf, int off, int len) throws IOException { 112 113 try { 114 w1.write(cbuf, off, len); 115 } 116 finally { 117 w2.write(cbuf, off, len); 118 } 119 } 120 121 }