public final class MediaTypeRequestMatcher extends Object implements RequestMatcher
HttpServletRequest
based upon the MediaType
's resolved
from a ContentNegotiationStrategy
.
By default, the matching process will perform the following:
ContentNegotiationStrategy
will resolve the MediaType
's for
the current requestMediaType
instances resolved from the
ContentNegotiationStrategy
.MediaType
returned from the ContentNegotiationStrategy
, then it returns
trueGET / Accept: application/json ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy() MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON); assert matcher.matches(request) == true // returns trueThe following will also return true
GET / Accept: */* ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy() MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON); assert matcher.matches(request) == true // returns true
GET / Accept: */* ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy() MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON); matcher.setIgnoredMediaTypes(Collections.singleton(MediaType.ALL)); assert matcher.matches(request) == false // returns false
GET / Accept: application/json ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy() MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON); matcher.setIgnoredMediaTypes(Collections.singleton(MediaType.ALL)); assert matcher.matches(request) == true // returns true
MediaType
discovered by
ContentNegotiationStrategy
returns true for
MediaType.isCompatibleWith(MediaType)
on the matchingMediaTypes, the result of
the match is true. However, sometimes you may want to perform an exact match. This can
be done with the following examples:
GET / Accept: application/json ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy() MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON); matcher.setUseEquals(true); assert matcher.matches(request) == true // returns true
GET / Accept: application/* ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy() MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON); matcher.setUseEquals(true); assert matcher.matches(request) == false // returns false
GET / Accept: */* ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy() MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON); matcher.setUseEquals(true); assert matcher.matches(request) == false // returns false
Constructor and Description |
---|
MediaTypeRequestMatcher(ContentNegotiationStrategy contentNegotiationStrategy,
Collection<MediaType> matchingMediaTypes)
Creates an instance
|
MediaTypeRequestMatcher(ContentNegotiationStrategy contentNegotiationStrategy,
MediaType... matchingMediaTypes)
Creates an instance
|
Modifier and Type | Method and Description |
---|---|
boolean |
matches(javax.servlet.http.HttpServletRequest request)
Decides whether the rule implemented by the strategy matches the supplied request.
|
void |
setIgnoredMediaTypes(Set<MediaType> ignoredMediaTypes)
Set the
MediaType to ignore from the ContentNegotiationStrategy . |
void |
setUseEquals(boolean useEquals)
If set to true, matches on exact
MediaType , else uses
MediaType.isCompatibleWith(MediaType) . |
String |
toString() |
public MediaTypeRequestMatcher(ContentNegotiationStrategy contentNegotiationStrategy, MediaType... matchingMediaTypes)
contentNegotiationStrategy
- the ContentNegotiationStrategy
to usematchingMediaTypes
- the MediaType
that will make the
RequestMatcher
return truepublic MediaTypeRequestMatcher(ContentNegotiationStrategy contentNegotiationStrategy, Collection<MediaType> matchingMediaTypes)
contentNegotiationStrategy
- the ContentNegotiationStrategy
to usematchingMediaTypes
- the MediaType
that will make the
RequestMatcher
return truepublic boolean matches(javax.servlet.http.HttpServletRequest request)
RequestMatcher
matches
in interface RequestMatcher
request
- the request to check for a matchpublic void setUseEquals(boolean useEquals)
MediaType
, else uses
MediaType.isCompatibleWith(MediaType)
.useEquals
- specify if equals comparison should be used.public void setIgnoredMediaTypes(Set<MediaType> ignoredMediaTypes)
MediaType
to ignore from the ContentNegotiationStrategy
.
This is useful if for example, you want to match on
MediaType.APPLICATION_JSON
but want to ignore MediaType.ALL
.ignoredMediaTypes
- the MediaType
's to ignore from the
ContentNegotiationStrategy