Skip to content

Commit

Permalink
Fix canWrite of PartHttpMessageWriter
Browse files Browse the repository at this point in the history
  • Loading branch information
CoderYellow authored and rstoyanchev committed Dec 5, 2022
1 parent 7899fa3 commit a7bf14b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 16 deletions.
Expand Up @@ -48,6 +48,21 @@ public PartHttpMessageWriter() {
super(MultipartHttpMessageReader.MIME_TYPES);
}

@Override
public boolean canWrite(ResolvableType elementType, @Nullable MediaType mediaType) {
if (Part.class.isAssignableFrom(elementType.toClass())) {
if (mediaType == null) {
return true;
}
for (MediaType supportedMediaType : getWritableMediaTypes()) {
if (supportedMediaType.isCompatibleWith(mediaType)) {
return true;
}
}
}
return false;
}


@Override
public Mono<Void> write(Publisher<? extends Part> parts,
Expand Down
Expand Up @@ -52,22 +52,9 @@ public class PartHttpMessageWriterTests extends AbstractLeakCheckingTests {

@Test
public void canWrite() {
assertThat(this.writer.canWrite(
ResolvableType.forClassWithGenerics(MultiValueMap.class, String.class, Object.class),
MediaType.MULTIPART_FORM_DATA)).isTrue();
assertThat(this.writer.canWrite(
ResolvableType.forClassWithGenerics(MultiValueMap.class, String.class, String.class),
MediaType.MULTIPART_FORM_DATA)).isTrue();
assertThat(this.writer.canWrite(
ResolvableType.forClassWithGenerics(MultiValueMap.class, String.class, Object.class),
MediaType.MULTIPART_MIXED)).isTrue();
assertThat(this.writer.canWrite(
ResolvableType.forClassWithGenerics(MultiValueMap.class, String.class, Object.class),
MediaType.MULTIPART_RELATED)).isTrue();

assertThat(this.writer.canWrite(
ResolvableType.forClassWithGenerics(Map.class, String.class, Object.class),
MediaType.MULTIPART_FORM_DATA)).isFalse();
assertThat(this.writer.canWrite(ResolvableType.forClass(Part.class), MediaType.MULTIPART_FORM_DATA)).isTrue();
assertThat(this.writer.canWrite(ResolvableType.forClass(Part.class), MediaType.MULTIPART_MIXED)).isTrue();
assertThat(this.writer.canWrite(ResolvableType.forClass(Part.class), MediaType.MULTIPART_RELATED)).isTrue();
}

@Test
Expand Down

0 comments on commit a7bf14b

Please sign in to comment.