Switch defaults for ContentTypeResolver
Now that we have a CompositeContentTypeResolverBuilder with built-in defaults, we switch to those defaults in places where a ContentTypeResolver is used.
This commit is contained in:
@@ -27,7 +27,55 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
|
||||
/**
|
||||
* Builder for {@link CompositeContentTypeResolver}.
|
||||
* Factory to create a {@link CompositeContentTypeResolver} and configure it with
|
||||
* one or more {@link ContentTypeResolver} instances with build style methods.
|
||||
* The following table shows methods, resulting strategy instances, and if in
|
||||
* use by default:
|
||||
*
|
||||
* <table>
|
||||
* <tr>
|
||||
* <th>Property Setter</th>
|
||||
* <th>Underlying Strategy</th>
|
||||
* <th>Default Setting</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link #favorPathExtension}</td>
|
||||
* <td>{@link PathExtensionContentTypeResolver Path Extension resolver}</td>
|
||||
* <td>On</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link #favorParameter}</td>
|
||||
* <td>{@link ParameterContentTypeResolver Parameter resolver}</td>
|
||||
* <td>Off</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link #ignoreAcceptHeader}</td>
|
||||
* <td>{@link HeaderContentTypeResolver Header resolver}</td>
|
||||
* <td>On</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link #defaultContentType}</td>
|
||||
* <td>{@link FixedContentTypeResolver Fixed content resolver}</td>
|
||||
* <td>Not set</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link #defaultContentTypeResolver}</td>
|
||||
* <td>{@link ContentTypeResolver}</td>
|
||||
* <td>Not set</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* <p>The order in which resolvers are configured is fixed. Config methods may only
|
||||
* turn individual resolvers on or off. If you need a custom order for any
|
||||
* reason simply instantiate {@code {@link CompositeContentTypeResolver}} directly.
|
||||
*
|
||||
* <p>For the path extension and parameter resolvers you may explicitly add
|
||||
* {@link #mediaTypes(Map)}. This will be used to resolve path extensions or a
|
||||
* parameter value such as "json" to a media type such as "application/json".
|
||||
*
|
||||
* <p>The path extension strategy will also use the Java Activation framework
|
||||
* (JAF), if available, to resolve a path extension to a MediaType. You may
|
||||
* {@link #useJaf suppress} the use of JAF.
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
*/
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.springframework.http.MediaType;
|
||||
import org.springframework.web.HttpMediaTypeNotAcceptableException;
|
||||
import org.springframework.web.accept.ContentNegotiationManager;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.reactive.accept.CompositeContentTypeResolverBuilder;
|
||||
import org.springframework.web.reactive.accept.ContentTypeResolver;
|
||||
import org.springframework.web.reactive.accept.HeaderContentTypeResolver;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
@@ -96,7 +97,8 @@ public final class ProducesRequestCondition extends AbstractRequestCondition<Pro
|
||||
|
||||
this.expressions = new ArrayList<>(expressions);
|
||||
Collections.sort(this.expressions);
|
||||
this.contentTypeResolver = (resolver != null ? resolver : new HeaderContentTypeResolver());
|
||||
this.contentTypeResolver = (resolver != null ?
|
||||
resolver : new CompositeContentTypeResolverBuilder().build());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringValueResolver;
|
||||
import org.springframework.web.accept.ContentNegotiationManager;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.reactive.accept.CompositeContentTypeResolver;
|
||||
import org.springframework.web.reactive.accept.CompositeContentTypeResolverBuilder;
|
||||
import org.springframework.web.reactive.accept.ContentTypeResolver;
|
||||
import org.springframework.web.reactive.accept.HeaderContentTypeResolver;
|
||||
import org.springframework.web.reactive.result.condition.RequestCondition;
|
||||
@@ -49,7 +51,7 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
|
||||
|
||||
private boolean useTrailingSlashMatch = true;
|
||||
|
||||
private ContentTypeResolver contentTypeResolver = new HeaderContentTypeResolver();
|
||||
private ContentTypeResolver contentTypeResolver = new CompositeContentTypeResolverBuilder().build();
|
||||
|
||||
private StringValueResolver embeddedValueResolver;
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ public class RequestMappingHandlerMappingTests {
|
||||
|
||||
assertTrue(this.handlerMapping.useSuffixPatternMatch());
|
||||
assertTrue(this.handlerMapping.useRegisteredSuffixPatternMatch());
|
||||
assertEquals(Collections.singletonList("json"), this.handlerMapping.getFileExtensions());
|
||||
assertEquals(Collections.singleton("json"), this.handlerMapping.getFileExtensions());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user