Class BufferedResponseHandler
- All Implemented Interfaces:
Handler, Handler.Container, Handler.Singleton, Request.Handler, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle, Invocable
A Handler that can apply a mechanism to buffer the entire response content until the output is closed. This allows the commit to be delayed until the response is complete and thus headers and response status can be changed while writing the body.
Note that the decision to buffer is influenced by the headers and status at the first write, and thus subsequent changes to those headers will not influence the decision to buffer or not.
Note also that the size of the buffer can be controlled by setting the
BUFFER_SIZE_ATTRIBUTE_NAME request attribute to an integer;
in the absence of such header, the HttpConfiguration.getOutputBufferSize()
config setting is used, while the maximum aggregation size can be controlled
by setting the MAX_AGGREGATION_SIZE_ATTRIBUTE_NAME request attribute to an integer,
in the absence of such header, the HttpConfiguration.getOutputAggregationSize()
config setting is used.
-
Nested Class Summary
Nested classes/interfaces inherited from class ConditionalHandler
ConditionalHandler.Abstract, ConditionalHandler.ConnectorPredicate, ConditionalHandler.DontHandle, ConditionalHandler.ElseNext, ConditionalHandler.InetAddressPatternPredicate, ConditionalHandler.MethodPredicate, ConditionalHandler.PathSpecPredicate, ConditionalHandler.PredicateSet, ConditionalHandler.Reject, ConditionalHandler.SkipNextNested classes/interfaces inherited from class Handler.Abstract
Handler.Abstract.NonBlockingNested classes/interfaces inherited from class AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopExceptionNested classes/interfaces inherited from interface Container
Container.InheritedListener, Container.ListenerNested classes/interfaces inherited from interface Dumpable
Dumpable.DumpableContainerNested classes/interfaces inherited from interface Handler
Handler.AbstractContainer, Handler.Collection, Handler.Container, Handler.Sequence, Handler.Singleton, Handler.WrapperNested classes/interfaces inherited from interface Invocable
Invocable.Callable, Invocable.InvocationType, Invocable.ReadyTask, Invocable.TaskNested classes/interfaces inherited from interface LifeCycle
LifeCycle.ListenerNested classes/interfaces inherited from interface Request.Handler
Request.Handler.AbortException -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe name of the request attribute used to control the buffer size of a particular request.static final StringThe name of the request attribute used to control the max aggregation size of a particular request.Fields inherited from interface Invocable
__nonBlocking, NOOP -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidexcludeMimeType(String... mimeTypes) voidincludeMimeType(String... mimeTypes) protected booleanisMimeTypeBufferable(String mimetype) booleanonConditionsMet(Request request, Response response, Callback callback) Handle a request that has met the conditions.protected booleanonConditionsNotMet(Request request, Response response, Callback callback) This method is called when the request has not met the conditions and is not to be handled by this handler.protected booleanshouldBuffer(Response response, boolean last) Methods inherited from class ConditionalHandler
clear, doStart, dump, exclude, exclude, exclude, excludeInetAddressPattern, excludeMethod, excludePath, from, from, handle, include, include, include, includeInetAddressPattern, includeMethod, includePath, nextHandlerMethods inherited from class Handler.Wrapper
getHandler, getInvocationType, setHandlerMethods inherited from class Handler.AbstractContainer
findContainerOf, getDescendant, getDescendants, isDynamic, setDynamic, setServerMethods inherited from class Handler.Abstract
destroy, doStop, getServerMethods inherited from class ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, installBean, installBean, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeansMethods inherited from class AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Container
getCachedBeans, getEventListenersMethods inherited from interface Destroyable
destroyMethods inherited from interface Dumpable.DumpableContainer
isDumpableMethods inherited from interface Handler.Container
getContainer, getDescendant, getDescendants, getDescendantsMethods inherited from interface Handler.Singleton
getHandlers, getTail, insertHandler, setHandlerMethods inherited from interface LifeCycle
addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
-
Field Details
-
BUFFER_SIZE_ATTRIBUTE_NAME
The name of the request attribute used to control the buffer size of a particular request. -
MAX_AGGREGATION_SIZE_ATTRIBUTE_NAME
The name of the request attribute used to control the max aggregation size of a particular request.
-
-
Constructor Details
-
BufferedResponseHandler
public BufferedResponseHandler() -
BufferedResponseHandler
-
-
Method Details
-
includeMimeType
-
excludeMimeType
-
isMimeTypeBufferable
-
shouldBuffer
-
onConditionsMet
public boolean onConditionsMet(Request request, Response response, Callback callback) throws Exception Description copied from class:ConditionalHandlerHandle a request that has met the conditions. Typically, the implementation will provide optional handling and then call theConditionalHandler.nextHandler(Request, Response, Callback)method to continue handling.- Specified by:
onConditionsMetin classConditionalHandler- Parameters:
request- The request to handleresponse- The response to generatecallback- The callback for completion- Returns:
- True if this handler will complete the callback
- Throws:
Exception- If there is a problem handling- See Also:
-
onConditionsNotMet
protected boolean onConditionsNotMet(Request request, Response response, Callback callback) throws Exception Description copied from class:ConditionalHandlerThis method is called when the request has not met the conditions and is not to be handled by this handler. Implementations may return false; send an error response; or handle the request differently.- Specified by:
onConditionsNotMetin classConditionalHandler- Parameters:
request- The request to handleresponse- The response to generatecallback- The callback for completion- Returns:
- True if this handler will complete the callback
- Throws:
Exception- If there is a problem handling- See Also:
-