public abstract class AbstractMappingContentNegotiationStrategy extends MappingMediaTypeFileExtensionResolver implements ContentNegotiationStrategy
ContentNegotiationStrategy implementations with the
 steps to resolve a request to media types.
 First a key (e.g. "json", "pdf") must be extracted from the request (e.g.
 file extension, query param). The key must then be resolved to media type(s)
 through the base class MappingMediaTypeFileExtensionResolver which
 stores such mappings.
 
The method handleNoMatch(org.springframework.web.context.request.NativeWebRequest, java.lang.String) allow sub-classes to plug in additional
 ways of looking up media types (e.g. through the Java Activation framework,
 or ServletContext.getMimeType(java.lang.String). Media types resolved
 via base classes are then added to the base class
 MappingMediaTypeFileExtensionResolver, i.e. cached for new lookups.
| Constructor and Description | 
|---|
AbstractMappingContentNegotiationStrategy(Map<String,MediaType> mediaTypes)
Create an instance with the given map of file extensions and media types. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
protected abstract String | 
getMediaTypeKey(NativeWebRequest request)
Extract a key from the request to use to look up media types. 
 | 
protected void | 
handleMatch(String key,
           MediaType mediaType)
Override to provide handling when a key is successfully resolved via
  
MappingMediaTypeFileExtensionResolver.lookupMediaType(java.lang.String). | 
protected MediaType | 
handleNoMatch(NativeWebRequest request,
             String key)
Override to provide handling when a key is not resolved via. 
 | 
List<MediaType> | 
resolveMediaTypeKey(NativeWebRequest webRequest,
                   String key)
An alternative to  
resolveMediaTypes(NativeWebRequest) that accepts
 an already extracted key. | 
List<MediaType> | 
resolveMediaTypes(NativeWebRequest webRequest)
Resolve the given request to a list of media types. 
 | 
addMapping, getAllFileExtensions, getAllMediaTypes, getMediaTypes, lookupMediaType, resolveFileExtensionspublic List<MediaType> resolveMediaTypes(NativeWebRequest webRequest) throws HttpMediaTypeNotAcceptableException
ContentNegotiationStrategyresolveMediaTypes in interface ContentNegotiationStrategywebRequest - the current requestnull)HttpMediaTypeNotAcceptableException - if the requested media
 types cannot be parsedpublic List<MediaType> resolveMediaTypeKey(NativeWebRequest webRequest, String key) throws HttpMediaTypeNotAcceptableException
resolveMediaTypes(NativeWebRequest) that accepts
 an already extracted key.HttpMediaTypeNotAcceptableExceptionprotected abstract String getMediaTypeKey(NativeWebRequest request)
null if noneprotected void handleMatch(String key, MediaType mediaType)
MappingMediaTypeFileExtensionResolver.lookupMediaType(java.lang.String).protected MediaType handleNoMatch(NativeWebRequest request, String key) throws HttpMediaTypeNotAcceptableException
MappingMediaTypeFileExtensionResolver.lookupMediaType(java.lang.String). Sub-classes can take further steps to
 determine the media type(s). If a MediaType is returned from
 this method it will be added to the cache in the base class.