From 8463eade3325dff93f922996538281a645dd2e74 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Mon, 10 Apr 2023 21:24:25 +0100 Subject: [PATCH] Polishing contribution Closes gh-30192 --- .../java/org/springframework/util/MimeType.java | 2 +- .../http/codec/FormHttpMessageReader.java | 17 ++++++++++------- .../codec/json/AbstractJackson2Decoder.java | 6 ++++-- .../multipart/MultipartHttpMessageReader.java | 11 +++++------ 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/MimeType.java b/spring-core/src/main/java/org/springframework/util/MimeType.java index ab37ff8e39..47d58fc39e 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeType.java +++ b/spring-core/src/main/java/org/springframework/util/MimeType.java @@ -269,7 +269,7 @@ public class MimeType implements Comparable, Serializable { */ public boolean isWildcardSubtype() { String subtype = getSubtype(); - return WILDCARD_TYPE.equals(subtype) || subtype.startsWith("*+"); + return (WILDCARD_TYPE.equals(subtype) || subtype.startsWith("*+")); } /** diff --git a/spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageReader.java b/spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageReader.java index ae60fc7389..61b810cf12 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageReader.java +++ b/spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageReader.java @@ -104,14 +104,17 @@ public class FormHttpMessageReader extends LoggingCodecSupport @Override public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) { - if (mediaType == null || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)) { - if (MultiValueMap.class.isAssignableFrom(elementType.toClass()) && - elementType.hasUnresolvableGenerics()) { - return true; - } - return MULTIVALUE_STRINGS_TYPE.isAssignableFrom(elementType); + if (!supportsMediaType(mediaType)) { + return false; } - return false; + if (MultiValueMap.class.isAssignableFrom(elementType.toClass()) && elementType.hasUnresolvableGenerics()) { + return true; + } + return MULTIVALUE_STRINGS_TYPE.isAssignableFrom(elementType); + } + + private static boolean supportsMediaType(@Nullable MediaType mediaType) { + return (mediaType == null || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)); } @Override diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java index cc2a39ae2e..6771bf149a 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java @@ -97,14 +97,16 @@ public abstract class AbstractJackson2Decoder extends Jackson2CodecSupport imple @Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { - // Skip String: CharSequenceDecoder + "*/*" comes after - if (CharSequence.class.isAssignableFrom(elementType.toClass()) || !supportsMimeType(mimeType)) { + if (!supportsMimeType(mimeType)) { return false; } ObjectMapper mapper = selectObjectMapper(elementType, mimeType); if (mapper == null) { return false; } + if (CharSequence.class.isAssignableFrom(elementType.toClass())) { + return false; + } JavaType javaType = mapper.constructType(elementType.getType()); if (!logger.isDebugEnabled()) { return mapper.canDeserialize(javaType); diff --git a/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageReader.java b/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageReader.java index fa5914f096..70092ba650 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageReader.java +++ b/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageReader.java @@ -81,6 +81,11 @@ public class MultipartHttpMessageReader extends LoggingCodecSupport return MIME_TYPES; } + @Override + public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) { + return supportsMediaType(mediaType) && MULTIPART_VALUE_TYPE.isAssignableFrom(elementType); + } + private boolean supportsMediaType(@Nullable MediaType mediaType) { if (mediaType == null) { return true; @@ -93,12 +98,6 @@ public class MultipartHttpMessageReader extends LoggingCodecSupport return false; } - @Override - public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) { - return supportsMediaType(mediaType) && MULTIPART_VALUE_TYPE.isAssignableFrom(elementType); - } - - @Override public Flux> read(ResolvableType elementType, ReactiveHttpInputMessage message, Map hints) {