Add multipart support to WebFlux functional API

Issue: SPR-14546
This commit is contained in:
Sebastien Deleuze
2017-04-27 19:04:41 +02:00
parent 852dc84d38
commit a712c19661
10 changed files with 187 additions and 5 deletions

View File

@@ -21,6 +21,7 @@ import java.util.List;
import org.springframework.core.codec.Decoder;
import org.springframework.core.codec.StringDecoder;
import org.springframework.http.codec.json.Jackson2JsonDecoder;
import org.springframework.http.codec.multipart.MultipartHttpMessageWriter;
/**
* Default implementation of {@link ClientCodecConfigurer}.
@@ -57,6 +58,7 @@ class DefaultClientCodecConfigurer extends DefaultCodecConfigurer implements Cli
protected void addTypedWritersTo(List<HttpMessageWriter<?>> result) {
super.addTypedWritersTo(result);
addWriterTo(result, FormHttpMessageWriter::new);
addWriterTo(result, MultipartHttpMessageWriter::new);
}
@Override

View File

@@ -21,6 +21,8 @@ import java.util.List;
import org.springframework.core.codec.Encoder;
import org.springframework.core.codec.StringDecoder;
import org.springframework.http.codec.json.Jackson2JsonEncoder;
import org.springframework.http.codec.multipart.SynchronossMultipartHttpMessageReader;
import org.springframework.util.ClassUtils;
/**
* Default implementation of {@link ServerCodecConfigurer}.
@@ -30,6 +32,11 @@ import org.springframework.http.codec.json.Jackson2JsonEncoder;
*/
class DefaultServerCodecConfigurer extends DefaultCodecConfigurer implements ServerCodecConfigurer {
static final boolean synchronossMultipartPresent =
ClassUtils.isPresent("org.synchronoss.cloud.nio.multipart.NioMultipartParser",
org.springframework.http.codec.DefaultCodecConfigurer.class.getClassLoader());
public DefaultServerCodecConfigurer() {
super(new DefaultServerDefaultCodecsConfigurer());
}
@@ -57,6 +64,9 @@ class DefaultServerCodecConfigurer extends DefaultCodecConfigurer implements Ser
public void addTypedReadersTo(List<HttpMessageReader<?>> result) {
super.addTypedReadersTo(result);
addReaderTo(result, FormHttpMessageReader::new);
if (synchronossMultipartPresent) {
addReaderTo(result, SynchronossMultipartHttpMessageReader::new);
}
}
@Override