An extension interface implemented by container request filters.
By default, i.e. if no {@link javax.ws.rs.NameBinding name binding} is appliedto the filter implementation class, the filter instance is applied globally, however only after the incoming request has been matched to a particular resource by JAX-RS runtime. If there is a {@link javax.ws.rs.NameBinding @NameBinding} annotationapplied to the filter, the filter will also be executed at the post-match request extension point, but only in case the matched {@link javax.ws.rs.HttpMethod resource or sub-resource method} is bound to the same name-binding annotation.
In case the filter should be applied at the pre-match extension point, i.e. before any request matching has been performed by JAX-RS runtime, the filter MUST be annotated with a {@link PreMatching @PreMatching} annotation.
Use a pre-match request filter to update the input to the JAX-RS matching algorithm, e.g., the HTTP method, Accept header, return cached responses etc. Otherwise, the use of a request filter invoked at the post-match request extension point (after a successful resource method matching) is recommended.
Filters implementing this interface must be annotated with {@link javax.ws.rs.ext.Provider @Provider} to be discovered by the JAX-RSruntime. Container request filter instances may also be discovered and bound {@link DynamicFeature dynamically} to particular resource methods.
@author Marek Potociar
@author Santiago Pericas-Geertsen
@see PreMatching
@see javax.ws.rs.container.ContainerResponseFilter
@since 2.0