## org.apache.catalina.core
Class StandardPipeline

    java.lang.Object
      org.apache.catalina.core.StandardPipeline

All Implemented Interfaces:
  Contained, Lifecycle, Pipeline

    public class StandardPipeline

extends java.lang.Object
implements Pipeline, Contained, Lifecycle

Standard implementation of a processing Pipeline that will invoke a series of Valves that have been configured to be called in order. This implementation can be used for any type of Container. IMPLEMENTATION WARNING - This implementation assumes that no calls to `addValve()` or `removeValve` are allowed while a request is currently being processed. Otherwise, the mechanism by which per-thread state is maintained will need to be modified.

Author:
  Craig R. McClanahan

Field Summary
`protected Valve` `basic` The basic Valve (if any) associated with this Pipeline.
`protected Container` `container` The Container with which this Pipeline is associated.
`protected Valve` `first` The first valve associated with this Pipeline.
`protected java.lang.String` `info` Descriptive information about this implementation.
`protected LifecycleSupport` `lifecycle` The lifecycle event support for this component.
`protected static StringManager` `sm` The string manager for this package.
`protected boolean` `started` Has this component been started yet?

Fields inherited from interface org.apache.catalina.Lifecycle
`AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, DESTROY_EVENT, INIT_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

Constructor Summary
`StandardPipeline()` Construct a new StandardPipeline instance with no associated Container.
`StandardPipeline(Container container)` Construct a new StandardPipeline instance that is associated with the specified Container.

Method Summary
`void` `addLifecycleListener(LifecycleListener listener)` Add a lifecycle event listener to this component.
`void` `addValve(Valve valve)` Add a new Valve to the end of the pipeline associated with this Container.
`LifecycleListener[]` `findLifecycleListeners()` Get the lifecycle listeners associated with this lifecycle.
`Valve` `getBasic()` Return the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any).
`Container` `getContainer()` Return the Container with which this Pipeline is associated.
`Valve` `getFirst()` Return the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any).
`java.lang.String` `getInfo()` Return descriptive information about this implementation class.
`javax.management.ObjectName[]` `getValveObjectNames()`
`Valve[]` `getValves()` Return the set of Valves in the pipeline associated with this Container, including the basic Valve (if any).
`void` `removeLifecycleListener(LifecycleListener listener)` Remove a lifecycle event listener from this component.
`void` `removeValve(Valve valve)` Remove the specified Valve from the pipeline associated with this Container, if it is found; otherwise, do nothing.
`void` `setBasic(Valve valve)` Set the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any).
`void` `setContainer(Container container)` Set the Container with which this Pipeline is associated.
`void` `start()` Prepare for active use of the public methods of this Component.
`void` `stop()` Gracefully shut down active use of the public methods of this Component.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### basic

    protected Valve basic

  The basic Valve (if any) associated with this Pipeline.

### container

    protected Container container

  The Container with which this Pipeline is associated.

### info

    protected java.lang.String info

  Descriptive information about this implementation.

### lifecycle

    protected LifecycleSupport lifecycle

  The lifecycle event support for this component.

### sm

    protected static StringManager sm

  The string manager for this package.

### started

    protected boolean started

  Has this component been started yet?

### first

    protected Valve first

  The first valve associated with this Pipeline.

Constructor Detail

### StandardPipeline

    public StandardPipeline()

  Construct a new StandardPipeline instance with no associated Container.

### StandardPipeline

    public StandardPipeline(Container container)

  Construct a new StandardPipeline instance that is associated with the specified Container.

  Parameters:
    `container` - The container we should be associated with

Method Detail

### getInfo

    public java.lang.String getInfo()

  Return descriptive information about this implementation class.

### getContainer

    public Container getContainer()

  Return the Container with which this Pipeline is associated.

  Specified by:
    `getContainer` in interface `Contained`

### setContainer

    public void setContainer(Container container)

  Set the Container with which this Pipeline is associated.

  Specified by:
    `setContainer` in interface `Contained`
  Parameters:
    `container` - The new associated container

### addLifecycleListener

    public void addLifecycleListener(LifecycleListener listener)

  Add a lifecycle event listener to this component.

  Specified by:
    `addLifecycleListener` in interface `Lifecycle`
  Parameters:
    `listener` - The listener to add

### findLifecycleListeners

    public LifecycleListener[] findLifecycleListeners()

  Get the lifecycle listeners associated with this lifecycle. If this Lifecycle has no listeners registered, a zero-length array is returned.

  Specified by:
    `findLifecycleListeners` in interface `Lifecycle`

### removeLifecycleListener

    public void removeLifecycleListener(LifecycleListener listener)

  Remove a lifecycle event listener from this component.

  Specified by:
    `removeLifecycleListener` in interface `Lifecycle`
  Parameters:
    `listener` - The listener to remove

### start

    public void start()
               throws LifecycleException

  Prepare for active use of the public methods of this Component.

  Specified by:
    `start` in interface `Lifecycle`
  Throws:
    `LifecycleException` - if this component detects a fatal error that prevents it from being started

### stop

    public void stop()
              throws LifecycleException

  Gracefully shut down active use of the public methods of this Component.

  Specified by:
    `stop` in interface `Lifecycle`
  Throws:
    `LifecycleException` - if this component detects a fatal error that needs to be reported

### getBasic

    public Valve getBasic()

  Return the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any).

  Specified by:
    `getBasic` in interface `Pipeline`

### setBasic

    public void setBasic(Valve valve)

  Set the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any). Prioer to setting the basic Valve, the Valve's `setContainer()` will be called, if it implements `Contained`, with the owning Container as an argument. The method may throw an `IllegalArgumentException` if this Valve chooses not to be associated with this Container, or `IllegalStateException` if it is already associated with a different Container.

  Specified by:
    `setBasic` in interface `Pipeline`
  Parameters:
    `valve` - Valve to be distinguished as the basic Valve

### addValve

    public void addValve(Valve valve)

  Add a new Valve to the end of the pipeline associated with this Container. Prior to adding the Valve, the Valve's `setContainer()` method will be called, if it implements `Contained`, with the owning Container as an argument. The method may throw an `IllegalArgumentException` if this Valve chooses not to be associated with this Container, or `IllegalStateException` if it is already associated with a different Container.

  Specified by:
    `addValve` in interface `Pipeline`
  Parameters:
    `valve` - Valve to be added
  Throws:
    `java.lang.IllegalArgumentException` - if this Container refused to accept the specified Valve
    `java.lang.IllegalArgumentException` - if the specifie Valve refuses to be associated with this Container
    `java.lang.IllegalStateException` - if the specified Valve is already associated with a different Container

### getValves

    public Valve[] getValves()

  Return the set of Valves in the pipeline associated with this Container, including the basic Valve (if any). If there are no such Valves, a zero-length array is returned.

  Specified by:
    `getValves` in interface `Pipeline`

### getValveObjectNames

    public javax.management.ObjectName[] getValveObjectNames()

### removeValve

    public void removeValve(Valve valve)

  Remove the specified Valve from the pipeline associated with this Container, if it is found; otherwise, do nothing. If the Valve is found and removed, the Valve's `setContainer(null)` method will be called if it implements `Contained`.

  Specified by:
    `removeValve` in interface `Pipeline`
  Parameters:
    `valve` - Valve to be removed

### getFirst

    public Valve getFirst()

  Description copied from interface: `Pipeline`

  Return the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any).

  Specified by:
    `getFirst` in interface `Pipeline`

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.