Package com.opensymphony.module.sitemesh.filter

# Class RoutablePrintWriter

java.lang.Object
java.io.Writer
java.io.PrintWriter
com.opensymphony.module.sitemesh.filter.RoutablePrintWriter

All Implemented Interfaces:
  `Closeable`, `Flushable`, `Appendable`, `AutoCloseable`

public class RoutablePrintWriter extends 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

Nested Classes
Modifier and Type
Class
Description
`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

Fields
Modifier and Type
Field
Description
`private PrintWriter`
`destination`
`private RoutablePrintWriter.DestinationFactory`
`factory`

### Fields inherited from class java.io.PrintWriter

`out`

### Fields inherited from class java.io.Writer

`lock`

## Constructor Summary

Constructors
Constructor
Description
`RoutablePrintWriter(RoutablePrintWriter.DestinationFactory factory)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`checkError()`
`void`
`close()`
`void`
`flush()`
`private 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(Object obj)`
`void`
`print(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(Object x)`
`void`
`println(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(String s)`
`void`
`write(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.io.Writer

`nullWriter`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### destination

private PrintWriter destination

### factory

private RoutablePrintWriter.DestinationFactory factory

## Constructor Details

### RoutablePrintWriter

public RoutablePrintWriter(RoutablePrintWriter.DestinationFactory factory)

## Method Details

### getDestination

private PrintWriter getDestination()

### updateDestination

public void updateDestination(RoutablePrintWriter.DestinationFactory factory)

### close

public void close()

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `PrintWriter`

### println

public void println(Object x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(String x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(char[] x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(double x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(float x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(long x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(int x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(char x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println(boolean x)

Overrides:
  `println` in class `PrintWriter`

### println

public void println()

Overrides:
  `println` in class `PrintWriter`

### print

public void print(Object obj)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(String s)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(char[] s)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(double d)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(float f)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(long l)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(int i)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(char c)

Overrides:
  `print` in class `PrintWriter`

### print

public void print(boolean b)

Overrides:
  `print` in class `PrintWriter`

### write

public void write(String s)

Overrides:
  `write` in class `PrintWriter`

### write

public void write(String s, int off, int len)

Overrides:
  `write` in class `PrintWriter`

### write

public void write(char[] buf)

Overrides:
  `write` in class `PrintWriter`

### write

public void write(char[] buf, int off, int len)

Overrides:
  `write` in class `PrintWriter`

### write

public void write(int c)

Overrides:
  `write` in class `PrintWriter`

### checkError

public boolean checkError()

Overrides:
  `checkError` in class `PrintWriter`

### flush

public void flush()

Specified by:
  `flush` in interface `Flushable`
Overrides:
  `flush` in class `PrintWriter`