Skip to content

Commit 8b08b68

Browse files
committed
Merge branch '5.1.x'
2 parents 798b51f + 190b751 commit 8b08b68

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

spring-web/src/main/java/org/springframework/http/client/MultipartBodyBuilder.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@
2626

2727
import org.springframework.core.ParameterizedTypeReference;
2828
import org.springframework.core.ResolvableType;
29+
import org.springframework.core.ResolvableTypeProvider;
2930
import org.springframework.core.io.buffer.DataBuffer;
3031
import org.springframework.http.HttpEntity;
3132
import org.springframework.http.HttpHeaders;
3233
import org.springframework.http.MediaType;
3334
import org.springframework.http.codec.multipart.Part;
35+
import org.springframework.lang.NonNull;
3436
import org.springframework.lang.Nullable;
3537
import org.springframework.util.Assert;
3638
import org.springframework.util.LinkedMultiValueMap;
@@ -272,13 +274,13 @@ public HttpEntity<?> build() {
272274
* @param <T> the type contained in the publisher
273275
* @param <P> the publisher
274276
*/
275-
public static final class PublisherEntity<T, P extends Publisher<T>> extends HttpEntity<P> {
277+
public static final class PublisherEntity<T, P extends Publisher<T>> extends HttpEntity<P>
278+
implements ResolvableTypeProvider {
276279

277280
private final ResolvableType resolvableType;
278281

279-
280-
private PublisherEntity(@Nullable MultiValueMap<String, String> headers, P publisher,
281-
ResolvableType resolvableType) {
282+
PublisherEntity(
283+
@Nullable MultiValueMap<String, String> headers, P publisher, ResolvableType resolvableType) {
282284

283285
super(publisher, headers);
284286
Assert.notNull(publisher, "'publisher' must not be null");
@@ -289,6 +291,8 @@ private PublisherEntity(@Nullable MultiValueMap<String, String> headers, P publi
289291
/**
290292
* Return the element type for the {@code Publisher} body.
291293
*/
294+
@Override
295+
@NonNull
292296
public ResolvableType getResolvableType() {
293297
return this.resolvableType;
294298
}

spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import reactor.core.publisher.Mono;
3535

3636
import org.springframework.core.ResolvableType;
37+
import org.springframework.core.ResolvableTypeProvider;
3738
import org.springframework.core.codec.CharSequenceEncoder;
3839
import org.springframework.core.codec.CodecException;
3940
import org.springframework.core.codec.Hints;
@@ -46,7 +47,6 @@
4647
import org.springframework.http.HttpHeaders;
4748
import org.springframework.http.MediaType;
4849
import org.springframework.http.ReactiveHttpOutputMessage;
49-
import org.springframework.http.client.MultipartBodyBuilder;
5050
import org.springframework.http.codec.EncoderHttpMessageWriter;
5151
import org.springframework.http.codec.FormHttpMessageWriter;
5252
import org.springframework.http.codec.HttpMessageWriter;
@@ -265,11 +265,8 @@ private <T> Flux<DataBuffer> encodePart(byte[] boundary, String name, T value, D
265265
outputHeaders.putAll(httpEntity.getHeaders());
266266
body = httpEntity.getBody();
267267
Assert.state(body != null, "MultipartHttpMessageWriter only supports HttpEntity with body");
268-
269-
if (httpEntity instanceof MultipartBodyBuilder.PublisherEntity<?, ?>) {
270-
MultipartBodyBuilder.PublisherEntity<?, ?> publisherEntity =
271-
(MultipartBodyBuilder.PublisherEntity<?, ?>) httpEntity;
272-
resolvableType = publisherEntity.getResolvableType();
268+
if (httpEntity instanceof ResolvableTypeProvider) {
269+
resolvableType = ((ResolvableTypeProvider) httpEntity).getResolvableType();
273270
}
274271
}
275272
else {

0 commit comments

Comments
 (0)