Class HttpMethodOverrideFilter
- All Implemented Interfaces:
javax.ws.rs.container.ContainerRequestFilter
This filter may be used to replace a POST request with a PUT, DELETE or GET request.
Replacement will occur if the request method is POST and there exists either
a request header "X-HTTP-Method-Override", or
a query parameter "_method" with a non-empty value. That value
will be the HTTP method that replaces the POST method. In addition to that,
when replacing the POST method with GET, the filter will convert the form parameters
to query parameters. If the filter is configured to look for both the X-HTTP-Method-Override
header as well as the _method query parameter (the default setting), both are present in the
request and they differ, the filter returns Response.Status.BAD_REQUEST response.
The filter behavior can be configured using ServerProperties.HTTP_METHOD_OVERRIDE
property.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumEnumeration representing possible sources of information about the method overriding the filter should look for. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionHttpMethodOverrideFilter(javax.ws.rs.core.Configuration rc) Create a filter that reads the configuration (ServerProperties.HTTP_METHOD_OVERRIDE) from the providedResourceConfiginstance.Initializes this filter setting the sources of information the filter should look for. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidenableFor(ResourceConfig rc, HttpMethodOverrideFilter.Source... sources) Registers this filter into the passedResourceConfiginstance and configures it.voidfilter(javax.ws.rs.container.ContainerRequestContext request) private StringgetParamValue(HttpMethodOverrideFilter.Source source, javax.ws.rs.core.MultivaluedMap<String, String> paramsMap, String paramName) Returns parameter value in a normalized form (uppercase, trimmed andnullif empty string) considering the config flags.private static HttpMethodOverrideFilter.Source[]parseConfig(Object config) Converts configuration property value to an array ofHttpMethodOverrideFilter.Sourceliterals.
-
Field Details
-
config
final int configConfiguration flags. Package-private for testing purposes.
-
-
Constructor Details
-
HttpMethodOverrideFilter
public HttpMethodOverrideFilter(@Context javax.ws.rs.core.Configuration rc) Create a filter that reads the configuration (ServerProperties.HTTP_METHOD_OVERRIDE) from the providedResourceConfiginstance. This constructor will be called by the Jersey runtime when the filter class is returned fromApplication.getClasses(). TheResourceConfiginstance will get auto-injected.- Parameters:
rc- ResourceConfig instance that holds the configuration for the filter.
-
HttpMethodOverrideFilter
Initializes this filter setting the sources of information the filter should look for.- Parameters:
sources- Sources of method override information. If empty, bothHttpMethodOverrideFilter.Source.HEADERandHttpMethodOverrideFilter.Source.QUERYwill be added to the config by default.
-
-
Method Details
-
enableFor
Registers this filter into the passedResourceConfiginstance and configures it.- Parameters:
rc- Resource config.sources- Sources of method override information. If empty, bothHttpMethodOverrideFilter.Source.HEADERandHttpMethodOverrideFilter.Source.QUERYwill be added to the config by default.
-
parseConfig
Converts configuration property value to an array ofHttpMethodOverrideFilter.Sourceliterals.- Parameters:
config-configuration propertyvalue- Returns:
- array of
Sourceobjects.
-
getParamValue
private String getParamValue(HttpMethodOverrideFilter.Source source, javax.ws.rs.core.MultivaluedMap<String, String> paramsMap, String paramName) Returns parameter value in a normalized form (uppercase, trimmed andnullif empty string) considering the config flags.- Parameters:
source- Config flag to look for (if set in the config, this method returns the param value, if not set, this method returnsnull).paramsMap- Map to retrieve the parameter from.paramName- Name of the parameter to retrieve.- Returns:
- Normalized parameter value. Never returns an empty string - converts it to
null.
-
filter
public void filter(javax.ws.rs.container.ContainerRequestContext request) - Specified by:
filterin interfacejavax.ws.rs.container.ContainerRequestFilter
-