ParameterContentNegotiationStrategy uses MediaTypeFactory

Issue: SPR-15649
This commit is contained in:
Rossen Stoyanchev
2017-07-11 17:50:34 +02:00
parent c9a3b863c4
commit befacf4a35
7 changed files with 92 additions and 93 deletions

View File

@@ -30,16 +30,15 @@ import org.springframework.lang.Nullable;
/**
* Builder for a composite {@link RequestedContentTypeResolver} that delegates
* to one or more other resolvers each implementing a different strategy to
* determine the requested content type(s), e.g. from the Accept header,
* through a query parameter, or other custom strategy.
* to other resolvers each implementing a different strategy to determine the
* requested content type -- e.g. Accept header, query parameter, or other.
*
* <p>Use methods of this builder to add resolvers in the desired order.
* The result of the first resolver to return a non-empty list of media types
* is used.
* <p>Use builder methods to add resolvers in the desired order. For a given
* request he first resolver to return a list that is not empty and does not
* consist of just {@link MediaType#ALL}, will be used.
*
* <p>If no resolvers are configured, by default the builder will configure
* {@link HeaderContentTypeResolver} only.
* <p>By default, if no resolvers are explicitly configured, the builder will
* add {@link HeaderContentTypeResolver}.
*
* @author Rossen Stoyanchev
* @since 5.0
@@ -50,8 +49,8 @@ public class RequestedContentTypeResolverBuilder {
/**
* Add resolver extracting the requested content type from a query parameter.
* By default the expected query parameter name is {@code "format"}.
* Add a resolver to get the requested content type from a query parameter.
* By default the query parameter name is {@code "format"}.
*/
public ParameterResolverConfigurer parameterResolver() {
ParameterResolverConfigurer parameterBuilder = new ParameterResolverConfigurer();
@@ -60,7 +59,7 @@ public class RequestedContentTypeResolverBuilder {
}
/**
* Add resolver extracting the requested content type from the
* Add resolver to get the requested content type from the
* {@literal "Accept"} header.
*/
public void headerResolver() {
@@ -68,7 +67,7 @@ public class RequestedContentTypeResolverBuilder {
}
/**
* Add resolver that always returns a fixed set of media types.
* Add resolver that returns a fixed set of media types.
* @param mediaTypes the media types to use
*/
public void fixedResolver(MediaType... mediaTypes) {
@@ -108,7 +107,7 @@ public class RequestedContentTypeResolverBuilder {
/**
* Helps to create a {@link ParameterContentTypeResolver}.
* Helper to create and configure {@link ParameterContentTypeResolver}.
*/
public static class ParameterResolverConfigurer {
@@ -146,7 +145,10 @@ public class RequestedContentTypeResolverBuilder {
return this;
}
RequestedContentTypeResolver createResolver() {
/**
* Private factory method to create the resolver.
*/
private RequestedContentTypeResolver createResolver() {
ParameterContentTypeResolver resolver = new ParameterContentTypeResolver(this.mediaTypes);
if (this.parameterName != null) {
resolver.setParameterName(this.parameterName);