From d8503daa1fb95dbaf141455d07de904a19b87218 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Fri, 25 Apr 2025 21:41:11 +0100 Subject: [PATCH] Revise how bodyType is set for 7.0 codebase See gh-34793 --- .../service/invoker/HttpRequestValues.java | 29 +++++++++---------- .../invoker/ReactiveHttpRequestValues.java | 21 +++++++++----- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java b/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java index cb3b54d00a..4e1f4115b3 100644 --- a/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java +++ b/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java @@ -75,18 +75,19 @@ public class HttpRequestValues { private final @Nullable Object bodyValue; - private @Nullable ParameterizedTypeReference bodyValueType; + private final @Nullable ParameterizedTypeReference bodyValueType; /** * Construct {@link HttpRequestValues}. - * @since 6.1 + * @since 7.0 */ protected HttpRequestValues(@Nullable HttpMethod httpMethod, @Nullable URI uri, @Nullable UriBuilderFactory uriBuilderFactory, @Nullable String uriTemplate, Map uriVariables, - HttpHeaders headers, MultiValueMap cookies, @Nullable Object version, - Map attributes, @Nullable Object bodyValue) { + HttpHeaders headers, MultiValueMap cookies, + @Nullable Object version, Map attributes, + @Nullable Object bodyValue, @Nullable ParameterizedTypeReference bodyValueType) { Assert.isTrue(uri != null || uriTemplate != null, "Neither URI nor URI template"); @@ -100,6 +101,7 @@ public class HttpRequestValues { this.version = version; this.attributes = attributes; this.bodyValue = bodyValue; + this.bodyValueType = bodyValueType; } @@ -511,14 +513,9 @@ public class HttpRequestValues { Map attributes = (this.attributes != null ? new HashMap<>(this.attributes) : Collections.emptyMap()); - HttpRequestValues requestValues = createRequestValues( + return createRequestValues( this.httpMethod, uri, uriBuilderFactory, uriTemplate, uriVars, - headers, cookies, this.version, attributes, bodyValue); - - // In 6.2.x only, temporarily work around protected methods - requestValues.bodyValueType = this.bodyValueType; - - return requestValues; + headers, cookies, this.version, attributes, bodyValue, this.bodyValueType); } protected boolean hasParts() { @@ -557,18 +554,18 @@ public class HttpRequestValues { /** * Create {@link HttpRequestValues} from values passed to the {@link Builder}. - * @since 6.1 + * @since 7.0 */ protected HttpRequestValues createRequestValues( @Nullable HttpMethod httpMethod, @Nullable URI uri, @Nullable UriBuilderFactory uriBuilderFactory, @Nullable String uriTemplate, - Map uriVars, - HttpHeaders headers, MultiValueMap cookies, @Nullable Object version, - Map attributes, @Nullable Object bodyValue) { + Map uriVars, HttpHeaders headers, MultiValueMap cookies, + @Nullable Object version, Map attributes, + @Nullable Object bodyValue, @Nullable ParameterizedTypeReference bodyValueType) { return new HttpRequestValues( this.httpMethod, uri, uriBuilderFactory, uriTemplate, - uriVars, headers, cookies, version, attributes, bodyValue); + uriVars, headers, cookies, version, attributes, bodyValue, bodyValueType); } } diff --git a/spring-web/src/main/java/org/springframework/web/service/invoker/ReactiveHttpRequestValues.java b/spring-web/src/main/java/org/springframework/web/service/invoker/ReactiveHttpRequestValues.java index 4783edb064..f6ac13040a 100644 --- a/spring-web/src/main/java/org/springframework/web/service/invoker/ReactiveHttpRequestValues.java +++ b/spring-web/src/main/java/org/springframework/web/service/invoker/ReactiveHttpRequestValues.java @@ -50,12 +50,16 @@ public final class ReactiveHttpRequestValues extends HttpRequestValues { @Nullable HttpMethod httpMethod, @Nullable URI uri, @Nullable UriBuilderFactory uriBuilderFactory, @Nullable String uriTemplate, Map uriVars, - HttpHeaders headers, MultiValueMap cookies, @Nullable Object version, - Map attributes, - @Nullable Object bodyValue, @Nullable Publisher body, - @Nullable ParameterizedTypeReference elementType) { + HttpHeaders headers, MultiValueMap cookies, + @Nullable Object version, Map attributes, + @Nullable Object bodyValue, @Nullable ParameterizedTypeReference bodyValueType, + @Nullable Publisher body, @Nullable ParameterizedTypeReference elementType) { + + super(httpMethod, + uri, uriBuilderFactory, uriTemplate, uriVars, + headers, cookies, version, attributes, + bodyValue, bodyValueType); - super(httpMethod, uri, uriBuilderFactory, uriTemplate, uriVars, headers, cookies, version, attributes, bodyValue); this.body = body; this.bodyElementType = elementType; } @@ -237,12 +241,13 @@ public final class ReactiveHttpRequestValues extends HttpRequestValues { @Nullable HttpMethod httpMethod, @Nullable URI uri, @Nullable UriBuilderFactory uriBuilderFactory, @Nullable String uriTemplate, Map uriVars, - HttpHeaders headers, MultiValueMap cookies, @Nullable Object version, - Map attributes, @Nullable Object bodyValue) { + HttpHeaders headers, MultiValueMap cookies, + @Nullable Object version, Map attributes, + @Nullable Object bodyValue, @Nullable ParameterizedTypeReference bodyValueType) { return new ReactiveHttpRequestValues( httpMethod, uri, uriBuilderFactory, uriTemplate, uriVars, - headers, cookies, version, attributes, bodyValue, this.body, this.bodyElementType); + headers, cookies, version, attributes, bodyValue, bodyValueType, this.body, this.bodyElementType); } }