diff --git a/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java b/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java index 25fcc672f24..716218e544c 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java +++ b/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java @@ -189,14 +189,13 @@ public abstract class MimeTypeUtils { * @throws InvalidMimeTypeException if the string cannot be parsed */ public static MimeType parseMimeType(String mimeType) { + if (!StringUtils.hasLength(mimeType)) { + throw new InvalidMimeTypeException(mimeType, "'mimeType' must not be empty"); + } return cachedMimeTypes.get(mimeType); } private static MimeType parseMimeTypeInternal(String mimeType) { - if (!StringUtils.hasLength(mimeType)) { - throw new InvalidMimeTypeException(mimeType, "'mimeType' must not be empty"); - } - int index = mimeType.indexOf(';'); String fullType = (index >= 0 ? mimeType.substring(0, index) : mimeType).trim(); if (fullType.isEmpty()) { diff --git a/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java b/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java index 80c60fa1e0f..2431991ea3b 100644 --- a/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java +++ b/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java @@ -285,6 +285,12 @@ public class MimeTypeTests { MimeTypeUtils.parseMimeType("audio/*;attr=\"")); } + @Test + public void parseMimeTypeNull() { + assertThatExceptionOfType(InvalidMimeTypeException.class).isThrownBy(() -> + MimeTypeUtils.parseMimeType(null)); + } + @Test public void parseMimeTypes() { String s = "text/plain, text/html, text/x-dvi, text/x-c";