From 28a76a4fd13c2f50580737867c0c533f75710a27 Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Tue, 13 May 2025 14:51:22 -0700 Subject: [PATCH] Forward more methods to underlying InputStream in NonClosingInputStream NonClosingInputStream extends FilterInputStream, which does not forward some newer InputStream methods such as transferTo and readAllBytes. Specific InputStream implementations may have more optimized methods (e.g., FileInputStream). Signed-off-by: Patrick Strawderman --- .../org/springframework/util/StreamUtils.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/StreamUtils.java b/spring-core/src/main/java/org/springframework/util/StreamUtils.java index c169d3cc7759..7a0a2f7403bc 100644 --- a/spring-core/src/main/java/org/springframework/util/StreamUtils.java +++ b/spring-core/src/main/java/org/springframework/util/StreamUtils.java @@ -240,7 +240,7 @@ public static OutputStream nonClosing(OutputStream out) { } - private static class NonClosingInputStream extends FilterInputStream { + private static final class NonClosingInputStream extends FilterInputStream { public NonClosingInputStream(InputStream in) { super(in); @@ -249,10 +249,30 @@ public NonClosingInputStream(InputStream in) { @Override public void close() throws IOException { } + + @Override + public byte[] readAllBytes() throws IOException { + return in.readAllBytes(); + } + + @Override + public byte[] readNBytes(int len) throws IOException { + return in.readNBytes(len); + } + + @Override + public int readNBytes(byte[] b, int off, int len) throws IOException { + return in.readNBytes(b, off, len); + } + + @Override + public long transferTo(OutputStream out) throws IOException { + return in.transferTo(out); + } } - private static class NonClosingOutputStream extends FilterOutputStream { + private static final class NonClosingOutputStream extends FilterOutputStream { public NonClosingOutputStream(OutputStream out) { super(out);