Class GzipHandler
- All Implemented Interfaces:
Handler, Handler.Container, GzipFactory, Handler.Singleton, Request.Handler, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle, Invocable
-
Nested Class Summary
Nested 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.Abstract, 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 intstatic final intstatic final Stringstatic final Stringstatic final StringFields inherited from interface Invocable
__nonBlocking, NOOP -
Constructor Summary
ConstructorsConstructorDescriptionInstantiates a new GzipHandler.GzipHandler(Handler handler) Instantiates a new GzipHandler. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddExcludedInflationPaths(String... pathspecs) Adds excluded Path Specs for request filtering on request inflation.voidaddExcludedMethods(String... methods) Add excluded to the HTTP methods filtering.voidaddExcludedMimeTypes(String... types) Adds excluded MIME types for response filtering.voidaddExcludedPaths(String... pathspecs) Adds excluded Path Specs for request filtering.voidaddIncludedInflationPaths(String... pathspecs) Add included Path Specs for filtering on request inflation.voidaddIncludedMethods(String... methods) Adds included HTTP Methods (eg: POST, PATCH, DELETE) for filtering.voidaddIncludedMimeTypes(String... types) Add included MIME types for response filteringvoidaddIncludedPaths(String... pathspecs) Add included Path Specs for filtering.protected voiddoStart()Starts the managed lifecycle beans in the order they were added.protected voiddoStop()Stops the managed lifecycle beans in the reverse order they were added.getDeflaterEntry(Request request, long contentLength) Get the DeflaterPool being used.String[]Get the current filter list of excluded Path Specs for request inflation.Get the excluded filter list of HTTP methods in CSV formatString[]Get the current filter list of excluded HTTP methodsString[]Get the current filter list of excluded MIME typesString[]Get the current filter list of excluded Path SpecsString[]Get the current filter list of included Path Specs for request inflation.Get the included filter list of HTTP methods in CSV formatString[]Get the current filter list of included HTTP MethodsString[]Get the current filter list of included MIME typesString[]Get the current filter list of included Path SpecsintGet the size (in bytes) of theInflaterbuffer used to inflate compressed requests.Get the InflaterPool being used.intGet the minimum size, in bytes, that a responseContent-Lengthmust be before compression will trigger.getVary()booleanInvoked to handle the passed HTTP request and response.booleanisMimeTypeDeflatable(String mimetype) Test if the provided MIME type is allowed based on the MIME type filters.protected booleanisMimeTypeDeflatable(MimeTypes mimeTypes, String requestURI) protected booleanisPathDeflatable(String requestURI) Test if the provided Request URI is allowed based on the Path Specs filters.protected booleanisPathInflatable(String pathInContext) Test if the provided Request URI is allowed to be inflated based on the Path Specs filters.booleanIs theDeflaterrunningDeflater.SYNC_FLUSHor not.voidsetDeflaterPool(DeflaterPool deflaterPool) Set the DeflaterPool to be used.voidsetExcludedInflatePaths(String... pathspecs) Set the excluded filter list of Path specs (replacing any previously set)voidsetExcludedMethodList(String csvMethods) Set the excluded filter list of HTTP Methods (replacing any previously set)voidsetExcludedMethods(String... methods) Set the excluded filter list of HTTP methods (replacing any previously set)voidsetExcludedMimeTypes(String... types) Set the excluded filter list of MIME types (replacing any previously set)voidsetExcludedMimeTypesList(String csvTypes) Set the excluded filter list of MIME types (replacing any previously set)voidsetExcludedPaths(String... pathspecs) Set the excluded filter list of Path specs (replacing any previously set)voidsetIncludedInflatePaths(String... pathspecs) Set the included filter list of Path specs (replacing any previously set)voidsetIncludedMethodList(String csvMethods) Set the included filter list of HTTP Methods (replacing any previously set)voidsetIncludedMethods(String... methods) Set the included filter list of HTTP methods (replacing any previously set)voidsetIncludedMimeTypes(String... types) Set the included filter list of MIME types (replacing any previously set)voidsetIncludedMimeTypesList(String csvTypes) Set the included filter list of MIME types (replacing any previously set)voidsetIncludedPaths(String... pathspecs) Set the included filter list of Path specs (replacing any previously set)voidsetInflateBufferSize(int size) Set the size (in bytes) of theInflaterbuffer used to inflate comrpessed requests.voidsetInflaterPool(InflaterPool inflaterPool) Set the InflaterPool to be used.voidsetMinGzipSize(int minGzipSize) Set the minimum response size to trigger dynamic compression.voidsetSyncFlush(boolean syncFlush) Set theDeflaterflush mode to use.voidtoString()Methods 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, getServerMethods inherited from class ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, dump, 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, stopMethods 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
-
GZIP_HANDLER_ETAGS
- See Also:
-
GZIP
- See Also:
-
DEFLATE
- See Also:
-
DEFAULT_MIN_GZIP_SIZE
public static final int DEFAULT_MIN_GZIP_SIZE- See Also:
-
BREAK_EVEN_GZIP_SIZE
public static final int BREAK_EVEN_GZIP_SIZE- See Also:
-
-
Constructor Details
-
GzipHandler
public GzipHandler()Instantiates a new GzipHandler. -
GzipHandler
Instantiates a new GzipHandler.- Parameters:
handler- the handler to wrap
-
-
Method Details
-
doStart
Description copied from class:ContainerLifeCycleStarts the managed lifecycle beans in the order they were added.- Overrides:
doStartin classHandler.Abstract- Throws:
Exception- If there was a problem starting. Will cause a transition to FAILED state
-
doStop
Description copied from class:ContainerLifeCycleStops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStopin classHandler.Abstract- Throws:
Exception- If there was a problem stopping. Will cause a transition to FAILED state
-
getVary
- Returns:
- The VARY field to use.
-
setVary
- Parameters:
vary- The VARY field to use. It if is not an instance ofPreEncodedHttpField, then it will be converted to one.
-
addExcludedMethods
Add excluded to the HTTP methods filtering.- Parameters:
methods- The methods to exclude in compression- See Also:
-
addExcludedMimeTypes
Adds excluded MIME types for response filtering.Deprecation Warning: For backward compatibility the MIME types parameters may be comma separated strings, but this will not be supported in future versions of Jetty.
- Parameters:
types- The mime types to exclude (without charset or other parameters).- See Also:
-
addExcludedPaths
Adds excluded Path Specs for request filtering.There are 2 syntaxes supported, Servlet
url-patternbased, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclude.
- Parameters:
pathspecs- Path specs (as per servlet spec) to exclude. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.
For backward compatibility the pathspecs may be comma separated strings, but this will not be supported in future versions.- See Also:
- If the spec starts with
-
addExcludedInflationPaths
Adds excluded Path Specs for request filtering on request inflation.There are 2 syntaxes supported, Servlet
url-patternbased, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclude.
- Parameters:
pathspecs- Path specs (as per servlet spec) to exclude. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.
For backward compatibility the pathspecs may be comma separated strings, but this will not be supported in future versions.- See Also:
- If the spec starts with
-
addIncludedMethods
Adds included HTTP Methods (eg: POST, PATCH, DELETE) for filtering.- Parameters:
methods- The HTTP methods to include in compression.- See Also:
-
isSyncFlush
public boolean isSyncFlush()Is theDeflaterrunningDeflater.SYNC_FLUSHor not.- Returns:
- True if
Deflater.SYNC_FLUSHis used, elseDeflater.NO_FLUSH - See Also:
-
setSyncFlush
public void setSyncFlush(boolean syncFlush) Set theDeflaterflush mode to use.Deflater.SYNC_FLUSHshould be used if the application wishes to stream the data, but this may hurt compression performance.- Parameters:
syncFlush- True ifDeflater.SYNC_FLUSHis used, elseDeflater.NO_FLUSH- See Also:
-
addIncludedMimeTypes
Add included MIME types for response filtering- Parameters:
types- The mime types to include (without charset or other parameters) For backward compatibility the mimetypes may be comma separated strings, but this will not be supported in future versions.- See Also:
-
addIncludedPaths
Add included Path Specs for filtering.There are 2 syntaxes supported, Servlet
url-patternbased, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclusion.
- Parameters:
pathspecs- Path specs (as per servlet spec) to include. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute
- If the spec starts with
-
addIncludedInflationPaths
Add included Path Specs for filtering on request inflation.There are 2 syntaxes supported, Servlet
url-patternbased, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclusion.
- Parameters:
pathspecs- Path specs (as per servlet spec) to include. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute
- If the spec starts with
-
getDeflaterEntry
- Specified by:
getDeflaterEntryin interfaceGzipFactory
-
getExcludedMethods
Get the current filter list of excluded HTTP methods- Returns:
- the filter list of excluded HTTP methods
- See Also:
-
getExcludedMimeTypes
Get the current filter list of excluded MIME types- Returns:
- the filter list of excluded MIME types
- See Also:
-
getExcludedPaths
Get the current filter list of excluded Path Specs- Returns:
- the filter list of excluded Path Specs
- See Also:
-
getExcludedInflationPaths
Get the current filter list of excluded Path Specs for request inflation.- Returns:
- the filter list of excluded Path Specs
- See Also:
-
getIncludedMethods
Get the current filter list of included HTTP Methods- Returns:
- the filter list of included HTTP methods
- See Also:
-
getIncludedMimeTypes
Get the current filter list of included MIME types- Returns:
- the filter list of included MIME types
- See Also:
-
getIncludedPaths
Get the current filter list of included Path Specs- Returns:
- the filter list of included Path Specs
- See Also:
-
getIncludedInflationPaths
Get the current filter list of included Path Specs for request inflation.- Returns:
- the filter list of included Path Specs
- See Also:
-
getMinGzipSize
public int getMinGzipSize()Get the minimum size, in bytes, that a responseContent-Lengthmust be before compression will trigger.- Returns:
- minimum response size (in bytes) that triggers compression
- See Also:
-
getInflateBufferSize
public int getInflateBufferSize()Get the size (in bytes) of theInflaterbuffer used to inflate compressed requests.- Returns:
- size in bytes of the buffer, or 0 for no inflation.
-
setInflateBufferSize
public void setInflateBufferSize(int size) Set the size (in bytes) of theInflaterbuffer used to inflate comrpessed requests.- Parameters:
size- size in bytes of the buffer, or 0 for no inflation.
-
handle
Description copied from interface:Request.HandlerInvoked to handle the passed HTTP request and response.
The request is accepted by returning true, then handling must be concluded by completing the passed callback. The handling may be asynchronous, i.e. this method may return true and complete the given callback later, possibly from a different thread. If this method returns false, then the callback must not be invoked and any mutation on the response reversed.
Exceptions thrown by this method may be subsequently handled by an error
Request.Handler, if present, otherwise a default HTTP 500 error is generated and the callback completed while writing the error response.The simplest implementation is:
public boolean handle(Request request, Response response, Callback callback) { callback.succeeded(); return true; }A HelloWorld implementation is:
public boolean handle(Request request, Response response, Callback callback) { response.write(true, ByteBuffer.wrap("Hello World\n".getBytes(StandardCharsets.UTF_8)), callback); return true; }- Specified by:
handlein interfaceRequest.Handler- Overrides:
handlein classHandler.Wrapper- Parameters:
request- the HTTP request to handleresponse- the HTTP response to handlecallback- the callback to complete when the handling is complete- Returns:
- True if and only if the request will be handled, a response generated and the callback eventually called. This may occur within the scope of the call to this method, or asynchronously some time later. If false is returned, then this method must not generate a response, nor complete the callback.
- Throws:
Exception- if there is a failure during the handling. Catchers cannot assume that the callback will be called and thus should attempt to complete the request as if a false had been returned.- See Also:
-
isMimeTypeDeflatable
-
isMimeTypeDeflatable
Test if the provided MIME type is allowed based on the MIME type filters.- Specified by:
isMimeTypeDeflatablein interfaceGzipFactory- Parameters:
mimetype- the MIME type to test- Returns:
- true if allowed, false otherwise
-
isPathDeflatable
Test if the provided Request URI is allowed based on the Path Specs filters.- Parameters:
requestURI- the request uri- Returns:
- whether compressing is allowed for the given the path
-
isPathInflatable
Test if the provided Request URI is allowed to be inflated based on the Path Specs filters.- Parameters:
pathInContext- the request path in context- Returns:
- whether decompressing is allowed for the given the path.
-
setExcludedMethods
Set the excluded filter list of HTTP methods (replacing any previously set)- Parameters:
methods- the HTTP methods to exclude- See Also:
-
setExcludedMimeTypes
Set the excluded filter list of MIME types (replacing any previously set)- Parameters:
types- The mime types to exclude (without charset or other parameters)- See Also:
-
setExcludedMimeTypesList
Set the excluded filter list of MIME types (replacing any previously set)- Parameters:
csvTypes- The list of mime types to exclude (without charset or other parameters), CSV format- See Also:
-
setExcludedPaths
Set the excluded filter list of Path specs (replacing any previously set)- Parameters:
pathspecs- Path specs (as per servlet spec) to exclude. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.- See Also:
-
setExcludedInflatePaths
Set the excluded filter list of Path specs (replacing any previously set)- Parameters:
pathspecs- Path specs (as per servlet spec) to exclude from inflation. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.- See Also:
-
setIncludedMethods
Set the included filter list of HTTP methods (replacing any previously set)- Parameters:
methods- The methods to include in compression- See Also:
-
setIncludedMimeTypes
Set the included filter list of MIME types (replacing any previously set)- Parameters:
types- The mime types to include (without charset or other parameters)- See Also:
-
setIncludedMimeTypesList
Set the included filter list of MIME types (replacing any previously set)- Parameters:
csvTypes- The list of mime types to include (without charset or other parameters), CSV format- See Also:
-
setIncludedPaths
Set the included filter list of Path specs (replacing any previously set)- Parameters:
pathspecs- Path specs (as per servlet spec) to include. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute- See Also:
-
setIncludedInflatePaths
Set the included filter list of Path specs (replacing any previously set)- Parameters:
pathspecs- Path specs (as per servlet spec) to include for inflation. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute- See Also:
-
setMinGzipSize
public void setMinGzipSize(int minGzipSize) Set the minimum response size to trigger dynamic compression.Sizes below
BREAK_EVEN_GZIP_SIZEwill result a compressed response that is larger than the original data.- Parameters:
minGzipSize- minimum response size in bytes (not allowed to be lower thenBREAK_EVEN_GZIP_SIZE)
-
setIncludedMethodList
Set the included filter list of HTTP Methods (replacing any previously set)- Parameters:
csvMethods- the list of methods, CSV format- See Also:
-
getIncludedMethodList
Get the included filter list of HTTP methods in CSV format- Returns:
- the included filter list of HTTP methods in CSV format
- See Also:
-
setExcludedMethodList
Set the excluded filter list of HTTP Methods (replacing any previously set)- Parameters:
csvMethods- the list of methods, CSV format- See Also:
-
getExcludedMethodList
Get the excluded filter list of HTTP methods in CSV format- Returns:
- the excluded filter list of HTTP methods in CSV format
- See Also:
-
getDeflaterPool
Get the DeflaterPool being used. The default value of this is null before starting, but after starting if it is null it will be set to the default DeflaterPool which is stored as a bean on the server.- Returns:
- the DeflaterPool being used.
-
getInflaterPool
Get the InflaterPool being used. The default value of this is null before starting, but after starting if it is null it will be set to the default InflaterPool which is stored as a bean on the server.- Returns:
- the DeflaterPool being used.
-
setDeflaterPool
Set the DeflaterPool to be used. This should be called before starting. If this value is null when starting the default pool will be used from the server.- Parameters:
deflaterPool- the DeflaterPool to use.
-
setInflaterPool
Set the InflaterPool to be used. This should be called before starting. If this value is null when starting the default pool will be used from the server.- Parameters:
inflaterPool- the InflaterPool to use.
-
toString
- Overrides:
toStringin classAbstractLifeCycle
-