Package org.springframework.web.accept
Class ContentNegotiationManager
- java.lang.Object
- org.springframework.web.accept.ContentNegotiationManager
- All Implemented Interfaces:
ContentNegotiationStrategy,MediaTypeFileExtensionResolver
public class ContentNegotiationManager extends Object implements ContentNegotiationStrategy, MediaTypeFileExtensionResolver
Central class to determine requested media types for a request. This is done by delegating to a list of configuredContentNegotiationStrategyinstances.Also provides methods to look up file extensions for a media type. This is done by delegating to the list of configured
MediaTypeFileExtensionResolverinstances.- Since:
- 3.2
- Author:
- Rossen Stoyanchev, Juergen Hoeller
Field Summary
Fields inherited from interface org.springframework.web.accept.ContentNegotiationStrategy
MEDIA_TYPE_ALL_LIST
Constructor Summary
Constructors Constructor Description ContentNegotiationManager()Create a default instance with aHeaderContentNegotiationStrategy.ContentNegotiationManager(Collection<ContentNegotiationStrategy> strategies)A collection-based alternative toContentNegotiationManager(ContentNegotiationStrategy...).ContentNegotiationManager(ContentNegotiationStrategy... strategies)Create an instance with the given list ofContentNegotiationStrategystrategies each of which may also be an instance ofMediaTypeFileExtensionResolver.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddFileExtensionResolvers(MediaTypeFileExtensionResolver... resolvers)Register moreMediaTypeFileExtensionResolverinstances in addition to those detected at construction.List<String>getAllFileExtensions()Get all registered file extensions.Map<String,MediaType>getMediaTypeMappings()Return all registered lookup key to media type mappings by iteratingMediaTypeFileExtensionResolvers.List<ContentNegotiationStrategy>getStrategies()Return the configured content negotiation strategies.<T extends ContentNegotiationStrategy>
TgetStrategy(Class<T> strategyType)Find aContentNegotiationStrategyof the given type.List<String>resolveFileExtensions(MediaType mediaType)Resolve the given media type to a list of file extensions.List<MediaType>resolveMediaTypes(NativeWebRequest request)Resolve the given request to a list of media types.
Constructor Detail
ContentNegotiationManager
public ContentNegotiationManager(ContentNegotiationStrategy... strategies)
Create an instance with the given list ofContentNegotiationStrategystrategies each of which may also be an instance ofMediaTypeFileExtensionResolver.- Parameters:
strategies- the strategies to use
ContentNegotiationManager
public ContentNegotiationManager(Collection<ContentNegotiationStrategy> strategies)
A collection-based alternative toContentNegotiationManager(ContentNegotiationStrategy...).- Parameters:
strategies- the strategies to use- Since:
- 3.2.2
ContentNegotiationManager
public ContentNegotiationManager()
Create a default instance with aHeaderContentNegotiationStrategy.
Method Detail
getStrategies
public List<ContentNegotiationStrategy> getStrategies()
Return the configured content negotiation strategies.- Since:
- 3.2.16
getStrategy
@Nullable public <T extends ContentNegotiationStrategy> T getStrategy(Class<T> strategyType)
Find aContentNegotiationStrategyof the given type.- Parameters:
strategyType- the strategy type- Returns:
- the first matching strategy, or
nullif none - Since:
- 4.3
addFileExtensionResolvers
public void addFileExtensionResolvers(MediaTypeFileExtensionResolver... resolvers)
Register moreMediaTypeFileExtensionResolverinstances in addition to those detected at construction.- Parameters:
resolvers- the resolvers to add
resolveMediaTypes
public List<MediaType> resolveMediaTypes(NativeWebRequest request) throws HttpMediaTypeNotAcceptableException
Description copied from interface:ContentNegotiationStrategyResolve the given request to a list of media types. The returned list is ordered by specificity first and by quality parameter second.- Specified by:
resolveMediaTypesin interfaceContentNegotiationStrategy- Parameters:
request- the current request- Returns:
- the requested media types, or
ContentNegotiationStrategy.MEDIA_TYPE_ALL_LISTif none were requested. - Throws:
HttpMediaTypeNotAcceptableException- if the requested media types cannot be parsed
resolveFileExtensions
public List<String> resolveFileExtensions(MediaType mediaType)
Description copied from interface:MediaTypeFileExtensionResolverResolve the given media type to a list of file extensions.- Specified by:
resolveFileExtensionsin interfaceMediaTypeFileExtensionResolver- Parameters:
mediaType- the media type to resolve- Returns:
- a list of extensions or an empty list (never
null)
getAllFileExtensions
public List<String> getAllFileExtensions()
Get all registered file extensions.At startup this method returns extensions explicitly registered with either
PathExtensionContentNegotiationStrategyorParameterContentNegotiationStrategy. At runtime if there is a "path extension" strategy and itsuseRegisteredExtensionsOnlyproperty is set to "false", the list of extensions may increase as file extensions are resolved viaMediaTypeFactoryand cached.- Specified by:
getAllFileExtensionsin interfaceMediaTypeFileExtensionResolver- Returns:
- a list of extensions or an empty list (never
null)
getMediaTypeMappings
public Map<String,MediaType> getMediaTypeMappings()
Return all registered lookup key to media type mappings by iteratingMediaTypeFileExtensionResolvers.- Since:
- 5.2.4