Skip to content

Commit b5dfdba

Browse files
committed
Reuse PartBodyStreamStorageFactory in SynchronossPartGenerator
Issue: SPR-16727
1 parent 2a0540c commit b5dfdba

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

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

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@
3232
import java.util.concurrent.atomic.AtomicInteger;
3333
import java.util.function.Consumer;
3434

35+
import org.synchronoss.cloud.nio.multipart.DefaultPartBodyStreamStorageFactory;
3536
import org.synchronoss.cloud.nio.multipart.Multipart;
3637
import org.synchronoss.cloud.nio.multipart.MultipartContext;
3738
import org.synchronoss.cloud.nio.multipart.MultipartUtils;
3839
import org.synchronoss.cloud.nio.multipart.NioMultipartParser;
3940
import org.synchronoss.cloud.nio.multipart.NioMultipartParserListener;
41+
import org.synchronoss.cloud.nio.multipart.PartBodyStreamStorageFactory;
4042
import org.synchronoss.cloud.nio.stream.storage.StreamStorage;
4143
import reactor.core.publisher.Flux;
4244
import reactor.core.publisher.FluxSink;
@@ -72,6 +74,8 @@ public class SynchronossPartHttpMessageReader implements HttpMessageReader<Part>
7274

7375
private final DataBufferFactory bufferFactory = new DefaultDataBufferFactory();
7476

77+
private final PartBodyStreamStorageFactory streamStorageFactory = new DefaultPartBodyStreamStorageFactory();
78+
7579

7680
@Override
7781
public List<MediaType> getReadableMediaTypes() {
@@ -89,7 +93,7 @@ public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType
8993
public Flux<Part> read(ResolvableType elementType, ReactiveHttpInputMessage message,
9094
Map<String, Object> hints) {
9195

92-
return Flux.create(new SynchronossPartGenerator(message, this.bufferFactory));
96+
return Flux.create(new SynchronossPartGenerator(message, this.bufferFactory, this.streamStorageFactory));
9397
}
9498

9599

@@ -111,11 +115,15 @@ private static class SynchronossPartGenerator implements Consumer<FluxSink<Part>
111115
private final ReactiveHttpInputMessage inputMessage;
112116

113117
private final DataBufferFactory bufferFactory;
118+
119+
private final PartBodyStreamStorageFactory streamStorageFactory;
114120

115121

116-
SynchronossPartGenerator(ReactiveHttpInputMessage inputMessage, DataBufferFactory factory) {
122+
SynchronossPartGenerator(ReactiveHttpInputMessage inputMessage, DataBufferFactory bufferFactory,
123+
PartBodyStreamStorageFactory streamStorageFactory) {
117124
this.inputMessage = inputMessage;
118-
this.bufferFactory = factory;
125+
this.bufferFactory = bufferFactory;
126+
this.streamStorageFactory = streamStorageFactory;
119127
}
120128

121129

@@ -130,7 +138,10 @@ public void accept(FluxSink<Part> emitter) {
130138
MultipartContext context = new MultipartContext(mediaType.toString(), length, charset.name());
131139

132140
NioMultipartParserListener listener = new FluxSinkAdapterListener(emitter, this.bufferFactory, context);
133-
NioMultipartParser parser = Multipart.multipart(context).forNIO(listener);
141+
NioMultipartParser parser = Multipart
142+
.multipart(context)
143+
.usePartBodyStreamStorageFactory(streamStorageFactory)
144+
.forNIO(listener);
134145

135146
this.inputMessage.getBody().subscribe(buffer -> {
136147
byte[] resultBytes = new byte[buffer.readableByteCount()];

0 commit comments

Comments
 (0)