Class StandardPipeline
- java.lang.Object
-
- org.apache.catalina.util.LifecycleBase
-
- org.apache.catalina.core.StandardPipeline
-
public class StandardPipeline extends LifecycleBase implements Pipeline
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 toaddValve()
orremoveValve
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
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
-
Field Summary
Fields Modifier and Type Field Description 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.-
Fields inherited from interface org.apache.catalina.Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
-
-
Constructor Summary
Constructors Constructor Description 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addValve(Valve valve)
Add a new Valve to the end of the pipeline associated with this Container.protected void
destroyInternal()
Sub-classes implement this method to perform any instance destruction required.void
findNonAsyncValves(java.util.Set<java.lang.String> result)
Identifies the Valves, if any, in this Pipeline that do not support async.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()
javax.management.ObjectName[]
getValveObjectNames()
Valve[]
getValves()
Return the set of Valves in the pipeline associated with this Container, including the basic Valve (if any).protected void
initInternal()
Sub-classes implement this method to perform any instance initialisation required.boolean
isAsyncSupported()
Returns true if all the valves in this pipeline support async, false otherwisevoid
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.protected void
startInternal()
StartValve
s) in this pipeline and implement the requirements ofLifecycleBase.startInternal()
.protected void
stopInternal()
StopValve
s) in this pipeline and implement the requirements ofLifecycleBase.stopInternal()
.java.lang.String
toString()
Return a String representation of this component.-
Methods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
-
-
-
-
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
-
isAsyncSupported
public boolean isAsyncSupported()
Description copied from interface:Pipeline
Returns true if all the valves in this pipeline support async, false otherwise- Specified by:
isAsyncSupported
in interfacePipeline
- Returns:
- true if all the valves in this pipeline support async, false otherwise
-
findNonAsyncValves
public void findNonAsyncValves(java.util.Set<java.lang.String> result)
Description copied from interface:Pipeline
Identifies the Valves, if any, in this Pipeline that do not support async.- Specified by:
findNonAsyncValves
in interfacePipeline
- Parameters:
result
- The Set to which the fully qualified class names of each Valve in this Pipeline that does not support async will be added
-
getContainer
public Container getContainer()
Return the Container with which this Pipeline is associated.- Specified by:
getContainer
in interfaceContained
- Returns:
- The Container with which this instance is associated or
null
if not associated with a Container
-
setContainer
public void setContainer(Container container)
Set the Container with which this Pipeline is associated.- Specified by:
setContainer
in interfaceContained
- Parameters:
container
- The new associated container
-
initInternal
protected void initInternal()
Description copied from class:LifecycleBase
Sub-classes implement this method to perform any instance initialisation required.- Specified by:
initInternal
in classLifecycleBase
-
startInternal
protected void startInternal() throws LifecycleException
StartValve
s) in this pipeline and implement the requirements ofLifecycleBase.startInternal()
.- Specified by:
startInternal
in classLifecycleBase
- Throws:
LifecycleException
- if this component detects a fatal error that prevents this component from being used
-
stopInternal
protected void stopInternal() throws LifecycleException
StopValve
s) in this pipeline and implement the requirements ofLifecycleBase.stopInternal()
.- Specified by:
stopInternal
in classLifecycleBase
- Throws:
LifecycleException
- if this component detects a fatal error that prevents this component from being used
-
destroyInternal
protected void destroyInternal()
Description copied from class:LifecycleBase
Sub-classes implement this method to perform any instance destruction required.- Specified by:
destroyInternal
in classLifecycleBase
-
toString
public java.lang.String toString()
Return a String representation of this component.- Overrides:
toString
in classjava.lang.Object
-
getBasic
public Valve getBasic()
Return the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any).
-
setBasic
public void setBasic(Valve valve)
Set the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any). Prior to setting the basic Valve, the Valve's
setContainer()
will be called, if it implementsContained
, with the owning Container as an argument. The method may throw anIllegalArgumentException
if this Valve chooses not to be associated with this Container, orIllegalStateException
if it is already associated with a different Container.
-
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 implementsContained
, with the owning Container as an argument. The method may throw anIllegalArgumentException
if this Valve chooses not to be associated with this Container, orIllegalStateException
if it is already associated with a different Container.- Specified by:
addValve
in interfacePipeline
- Parameters:
valve
- Valve to be added- Throws:
java.lang.IllegalArgumentException
- if this Container refused to accept the specified Valvejava.lang.IllegalArgumentException
- if the specified Valve refuses to be associated with this Containerjava.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.
-
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'ssetContainer(null)
method will be called if it implementsContained
.- Specified by:
removeValve
in interfacePipeline
- Parameters:
valve
- Valve to be removed
-
-