com.opensymphony.module.sitemesh.filter
Class RoutablePrintWriter

java.lang.Object
  extended by java.io.Writer
      extended by java.io.PrintWriter
          extended by com.opensymphony.module.sitemesh.filter.RoutablePrintWriter
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable, java.lang.Appendable

public class RoutablePrintWriter
extends java.io.PrintWriter

Provides a PrintWriter that routes through to another PrintWriter, however the destination can be changed at any point. The destination can be passed in using a factory, so it will not be created until it's actually needed.

Version:
$Revision: 1.1 $
Author:
Joe Walnes

Nested Class Summary
static interface RoutablePrintWriter.DestinationFactory
          Factory to lazily instantiate the destination.
private static class RoutablePrintWriter.NullWriter
          Just to keep super constructor for PrintWriter happy - it's never actually used.
 
Field Summary
private  java.io.PrintWriter destination
           
private  RoutablePrintWriter.DestinationFactory factory
           
 
Fields inherited from class java.io.PrintWriter
out
 
Fields inherited from class java.io.Writer
lock
 
Constructor Summary
RoutablePrintWriter(RoutablePrintWriter.DestinationFactory factory)
           
 
Method Summary
 boolean checkError()
           
 void close()
           
 void flush()
           
private  java.io.PrintWriter getDestination()
           
 void print(boolean b)
           
 void print(char c)
           
 void print(char[] s)
           
 void print(double d)
           
 void print(float f)
           
 void print(int i)
           
 void print(long l)
           
 void print(java.lang.Object obj)
           
 void print(java.lang.String s)
           
 void println()
           
 void println(boolean x)
           
 void println(char x)
           
 void println(char[] x)
           
 void println(double x)
           
 void println(float x)
           
 void println(int x)
           
 void println(long x)
           
 void println(java.lang.Object x)
           
 void println(java.lang.String x)
           
 void updateDestination(RoutablePrintWriter.DestinationFactory factory)
           
 void write(char[] buf)
           
 void write(char[] buf, int off, int len)
           
 void write(int c)
           
 void write(java.lang.String s)
           
 void write(java.lang.String s, int off, int len)
           
 
Methods inherited from class java.io.PrintWriter
append, append, append, clearError, format, format, printf, printf, setError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

destination

private java.io.PrintWriter destination

factory

private RoutablePrintWriter.DestinationFactory factory
Constructor Detail

RoutablePrintWriter

public RoutablePrintWriter(RoutablePrintWriter.DestinationFactory factory)
Method Detail

getDestination

private java.io.PrintWriter getDestination()

updateDestination

public void updateDestination(RoutablePrintWriter.DestinationFactory factory)

close

public void close()
Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.PrintWriter

println

public void println(java.lang.Object x)
Overrides:
println in class java.io.PrintWriter

println

public void println(java.lang.String x)
Overrides:
println in class java.io.PrintWriter

println

public void println(char[] x)
Overrides:
println in class java.io.PrintWriter

println

public void println(double x)
Overrides:
println in class java.io.PrintWriter

println

public void println(float x)
Overrides:
println in class java.io.PrintWriter

println

public void println(long x)
Overrides:
println in class java.io.PrintWriter

println

public void println(int x)
Overrides:
println in class java.io.PrintWriter

println

public void println(char x)
Overrides:
println in class java.io.PrintWriter

println

public void println(boolean x)
Overrides:
println in class java.io.PrintWriter

println

public void println()
Overrides:
println in class java.io.PrintWriter

print

public void print(java.lang.Object obj)
Overrides:
print in class java.io.PrintWriter

print

public void print(java.lang.String s)
Overrides:
print in class java.io.PrintWriter

print

public void print(char[] s)
Overrides:
print in class java.io.PrintWriter

print

public void print(double d)
Overrides:
print in class java.io.PrintWriter

print

public void print(float f)
Overrides:
print in class java.io.PrintWriter

print

public void print(long l)
Overrides:
print in class java.io.PrintWriter

print

public void print(int i)
Overrides:
print in class java.io.PrintWriter

print

public void print(char c)
Overrides:
print in class java.io.PrintWriter

print

public void print(boolean b)
Overrides:
print in class java.io.PrintWriter

write

public void write(java.lang.String s)
Overrides:
write in class java.io.PrintWriter

write

public void write(java.lang.String s,
                  int off,
                  int len)
Overrides:
write in class java.io.PrintWriter

write

public void write(char[] buf)
Overrides:
write in class java.io.PrintWriter

write

public void write(char[] buf,
                  int off,
                  int len)
Overrides:
write in class java.io.PrintWriter

write

public void write(int c)
Overrides:
write in class java.io.PrintWriter

checkError

public boolean checkError()
Overrides:
checkError in class java.io.PrintWriter

flush

public void flush()
Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.PrintWriter

www.opensymphony.com/sitemesh/