# Class Filter.Chain

java.lang.Object
com.sun.net.httpserver.Filter.Chain

Enclosing class:
  `Filter`

public static class Filter.Chain extends Object
A chain of filters associated with a `HttpServer`. Each filter in the chain is given one of these so it can invoke the next filter in the chain.

Since:
  1.6

## Constructor Summary

Constructors
Constructor
Description
`Chain(List<Filter> filters, HttpHandler handler)`
Creates a `Chain` instance with given filters and handler.

## Method Summary

Modifier and Type
Method
Description
`void`
`doFilter(HttpExchange exchange)`
Calls the next filter in the chain, or else the users exchange handler, if this is the final filter in the chain.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### Chain

public Chain(List<Filter> filters, HttpHandler handler)
Creates a `Chain` instance with given filters and handler.

Parameters:
  `filters` - the filters that make up the `Chain`
  `handler` - the `HttpHandler` that will be invoked after the final `Filter` has finished

## Method Details

### doFilter

public void doFilter(HttpExchange exchange) throws IOException
Calls the next filter in the chain, or else the users exchange handler, if this is the final filter in the chain. The `Filter` may decide to terminate the chain, by not calling this method. In this case, the filter must send the response to the request, because the application's exchange handler will not be invoked.

Parameters:
  `exchange` - the `HttpExchange`
Throws:
  `IOException` - if an I/O error occurs
  `NullPointerException` - if exchange is `null`