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()orremoveValveare allowed while a request is currently being processed. Otherwise, the mechanism by which per-thread state is maintained will need to be modified.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
-
Field Summary
Fields Modifier and Type Field Description protected ValvebasicThe basic Valve (if any) associated with this Pipeline.protected ContainercontainerThe Container with which this Pipeline is associated.protected ValvefirstThe 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 voidaddValve(Valve valve)Add a new Valve to the end of the pipeline associated with this Container.protected voiddestroyInternal()Subclasses implement this method to perform any instance destruction required.voidfindNonAsyncValves(java.util.Set<java.lang.String> result)Identifies the Valves, if any, in this Pipeline that do not support async.ValvegetBasic()ContainergetContainer()Get theContainerwith which this instance is associated.ValvegetFirst()javax.management.ObjectName[]getValveObjectNames()Valve[]getValves()protected voidinitInternal()Subclasses implement this method to perform any instance initialisation required.booleanisAsyncSupported()Returns true if all the valves in this pipeline support async, false otherwisevoidremoveValve(Valve valve)Remove the specified Valve from the pipeline associated with this Container, if it is found; otherwise, do nothing.voidsetBasic(Valve valve)Set the Valve instance that has been distinguished as the basic Valve for this Pipeline (if any).voidsetContainer(Container container)Set theContainerwith which this instance is associated.protected voidstartInternal()Subclasses must ensure that the state is changed toLifecycleState.STARTINGduring the execution of this method.protected voidstopInternal()Subclasses must ensure that the state is changed toLifecycleState.STOPPINGduring the execution of this method.java.lang.StringtoString()-
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:PipelineReturns true if all the valves in this pipeline support async, false otherwise- Specified by:
isAsyncSupportedin 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:PipelineIdentifies the Valves, if any, in this Pipeline that do not support async.- Specified by:
findNonAsyncValvesin 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()
Description copied from interface:ContainedGet theContainerwith which this instance is associated.- Specified by:
getContainerin interfaceContained- Returns:
- The Container with which this instance is associated or
nullif not associated with a Container
-
setContainer
public void setContainer(Container container)
Description copied from interface:ContainedSet theContainerwith which this instance is associated.- Specified by:
setContainerin interfaceContained- Parameters:
container- The Container instance with which this instance is to be associated, ornullto disassociate this instance from any Container
-
initInternal
protected void initInternal()
Description copied from class:LifecycleBaseSubclasses implement this method to perform any instance initialisation required.- Specified by:
initInternalin classLifecycleBase
-
startInternal
protected void startInternal() throws LifecycleExceptionDescription copied from class:LifecycleBaseSubclasses must ensure that the state is changed toLifecycleState.STARTINGduring the execution of this method. Changing state will trigger theLifecycle.START_EVENTevent. If a component fails to start it may either throw aLifecycleExceptionwhich will cause it's parent to fail to start, or it can place itself in the error state in which caseLifecycleBase.stop()will be called on the failed component but the parent component will continue to start normally.- Specified by:
startInternalin classLifecycleBase- Throws:
LifecycleException- Start error occurred
-
stopInternal
protected void stopInternal() throws LifecycleExceptionDescription copied from class:LifecycleBaseSubclasses must ensure that the state is changed toLifecycleState.STOPPINGduring the execution of this method. Changing state will trigger theLifecycle.STOP_EVENTevent.- Specified by:
stopInternalin classLifecycleBase- Throws:
LifecycleException- Stop error occurred
-
destroyInternal
protected void destroyInternal()
Description copied from class:LifecycleBaseSubclasses implement this method to perform any instance destruction required.- Specified by:
destroyInternalin classLifecycleBase
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getBasic
public Valve getBasic()
-
setBasic
public void setBasic(Valve valve)
Description copied from interface:PipelineSet 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 anIllegalArgumentExceptionif this Valve chooses not to be associated with this Container, orIllegalStateExceptionif it is already associated with a different Container.
-
addValve
public void addValve(Valve valve)
Description copied from interface:PipelineAdd 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 anIllegalArgumentExceptionif this Valve chooses not to be associated with this Container, orIllegalStateExceptionif it is already associated with a different Container.Implementation note: Implementations are expected to trigger the
Container.ADD_VALVE_EVENTfor the associated container if this call is successful.
-
getValves
public Valve[] getValves()
-
getValveObjectNames
public javax.management.ObjectName[] getValveObjectNames()
-
removeValve
public void removeValve(Valve valve)
Description copied from interface:PipelineRemove 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.Implementation note: Implementations are expected to trigger the
Container.REMOVE_VALVE_EVENTfor the associated container if this call is successful.- Specified by:
removeValvein interfacePipeline- Parameters:
valve- Valve to be removed
-
-