# 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`