Use InputStream's contracts instead of StreamUtils
Since Spring Framework 6.0 requires Java 17, we can now use `InputStream` new contracts when manipulating streams. Closes gh-27702
This commit is contained in:
parent
0770d86936
commit
fa1f7f6dc7
|
@ -108,12 +108,10 @@ public abstract class FileCopyUtils {
|
|||
Assert.notNull(in, "No InputStream specified");
|
||||
Assert.notNull(out, "No OutputStream specified");
|
||||
|
||||
try {
|
||||
return StreamUtils.copy(in, out);
|
||||
}
|
||||
finally {
|
||||
close(in);
|
||||
close(out);
|
||||
try (in; out) {
|
||||
int count = (int) in.transferTo(out);
|
||||
out.flush();
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -64,9 +64,7 @@ public abstract class StreamUtils {
|
|||
return EMPTY_CONTENT;
|
||||
}
|
||||
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream(BUFFER_SIZE);
|
||||
copy(in, out);
|
||||
return out.toByteArray();
|
||||
return in.readAllBytes();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -152,15 +150,9 @@ public abstract class StreamUtils {
|
|||
Assert.notNull(in, "No InputStream specified");
|
||||
Assert.notNull(out, "No OutputStream specified");
|
||||
|
||||
int byteCount = 0;
|
||||
byte[] buffer = new byte[BUFFER_SIZE];
|
||||
int bytesRead;
|
||||
while ((bytesRead = in.read(buffer)) != -1) {
|
||||
out.write(buffer, 0, bytesRead);
|
||||
byteCount += bytesRead;
|
||||
}
|
||||
int count = (int) in.transferTo(out);
|
||||
out.flush();
|
||||
return byteCount;
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
package org.springframework.http.converter;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.springframework.http.HttpInputMessage;
|
||||
|
@ -53,11 +52,7 @@ public class ByteArrayHttpMessageConverter extends AbstractHttpMessageConverter<
|
|||
|
||||
@Override
|
||||
public byte[] readInternal(Class<? extends byte[]> clazz, HttpInputMessage inputMessage) throws IOException {
|
||||
long contentLength = inputMessage.getHeaders().getContentLength();
|
||||
ByteArrayOutputStream bos =
|
||||
new ByteArrayOutputStream(contentLength >= 0 ? (int) contentLength : StreamUtils.BUFFER_SIZE);
|
||||
StreamUtils.copy(inputMessage.getBody(), bos);
|
||||
return bos.toByteArray();
|
||||
return inputMessage.getBody().readAllBytes();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.springframework.http.converter;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
|
@ -144,7 +145,9 @@ public class ResourceHttpMessageConverter extends AbstractHttpMessageConverter<R
|
|||
try {
|
||||
InputStream in = resource.getInputStream();
|
||||
try {
|
||||
StreamUtils.copy(in, outputMessage.getBody());
|
||||
OutputStream out = outputMessage.getBody();
|
||||
in.transferTo(out);
|
||||
out.flush();
|
||||
}
|
||||
catch (NullPointerException ex) {
|
||||
// ignore, see SPR-13620
|
||||
|
|
Loading…
Reference in New Issue