MultipartBodyBuilder supports PublisherEntity as input

Issue: SPR-16601
This commit is contained in:
Rossen Stoyanchev
2018-03-16 15:52:24 -04:00
parent 313c6cef32
commit 842c29103f
2 changed files with 38 additions and 4 deletions

View File

@@ -91,6 +91,12 @@ public final class MultipartBodyBuilder {
"publisher(String, Publisher, ParameterizedTypeReference) for adding Publisher parts");
}
if (part instanceof PublisherEntity<?,?>) {
PublisherPartBuilder<?, ?> builder = new PublisherPartBuilder<>((PublisherEntity<?, ?>) part);
this.parts.add(name, builder);
return builder;
}
Object partBody;
HttpHeaders partHeaders = new HttpHeaders();
@@ -154,7 +160,7 @@ public final class MultipartBodyBuilder {
Assert.notNull(elementType1, "'typeReference' must not be null");
HttpHeaders headers = new HttpHeaders();
PublisherPartBuilder<T, P> builder = new PublisherPartBuilder<>(publisher, typeReference, headers);
PublisherPartBuilder<T, P> builder = new PublisherPartBuilder<>(headers, publisher, typeReference);
this.parts.add(name, builder);
return builder;
}
@@ -239,11 +245,17 @@ public final class MultipartBodyBuilder {
this.resolvableType = ResolvableType.forClass(elementClass);
}
public PublisherPartBuilder(P body, ParameterizedTypeReference<S> typeReference, HttpHeaders headers) {
public PublisherPartBuilder(HttpHeaders headers, P body, ParameterizedTypeReference<S> typeReference) {
super(headers, body);
this.resolvableType = ResolvableType.forType(typeReference);
}
public PublisherPartBuilder(PublisherEntity<S, P> other) {
super(other.getHeaders(), other.getBody());
this.resolvableType = other.getResolvableType();
}
@Override
@SuppressWarnings("unchecked")
public HttpEntity<?> build() {