Fix file extension resolution for media types with q parameter

Prior to this commit, the `MappingMediaTypeFileExtensionResolver` would
resolve file extensions for a given media type by using a direct lookup
using the given media type provided by the request.
If the request contains a quality parameter like
"application/json;q=0.9", this would not resolve configured file
extensions for this media type.
While other media type parameters can be meaningful, the quality
parameter should not be used for lookups. This commit ensures that the
quality parameter is dropped before performing lookups.

Fixes gh-35754
This commit is contained in:
Brian Clozel
2025-11-05 10:48:24 +01:00
parent d65de19e7d
commit c0429dbb09
2 changed files with 9 additions and 1 deletions
@@ -53,6 +53,14 @@ class MappingMediaTypeFileExtensionResolverTests {
.resolveFileExtensions(MediaType.TEXT_HTML)).isEmpty();
}
@Test
void resolveExtensionsWithQualityParameter() {
List<String> extensions = new MappingMediaTypeFileExtensionResolver(DEFAULT_MAPPINGS)
.resolveFileExtensions(MediaType.parseMediaType("application/json;q=0.9"));
assertThat(extensions).containsExactly("json");
}
@Test // SPR-13747
public void lookupMediaTypeCaseInsensitive() {
assertThat(new MappingMediaTypeFileExtensionResolver(DEFAULT_MAPPINGS).lookupMediaType("JSON"))