From: Anna Papitto Date: Fri, 2 Dec 2022 23:56:56 +0000 (-0800) Subject: IO#readFully: provide overload that fills the full array X-Git-Tag: v6.5.0.202301111425-m1~14^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9b7c3ac11f968364799537040f4765b881ed96ae;p=jgit.git IO#readFully: provide overload that fills the full array IO#readFully is often called with the intent to fill the destination array from beginning to end. The redundant arguments for where to start and stop filling are opportunities for bugs if specified incorrectly or if not changed to match a changed array length. Provide a overloaded method for filling the full destination array. Change-Id: I964f18f4a061189cce1ca00ff0258669277ff499 Signed-off-by: Anna Papitto --- diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/TimeoutInputStreamTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/TimeoutInputStreamTest.java index 648416925c..76bda6a35b 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/TimeoutInputStreamTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/TimeoutInputStreamTest.java @@ -91,7 +91,7 @@ public class TimeoutInputStreamTest { final byte[] exp = new byte[] { 'a', 'b', 'c' }; final byte[] act = new byte[exp.length]; out.write(exp); - IO.readFully(is, act, 0, act.length); + IO.readFully(is, act); assertArrayEquals(exp, act); } @@ -110,7 +110,7 @@ public class TimeoutInputStreamTest { public void testTimeout_readBuffer_Timeout() throws IOException { beginRead(); try { - IO.readFully(is, new byte[512], 0, 512); + IO.readFully(is, new byte[512]); fail("incorrectly read bytes"); } catch (InterruptedIOException e) { // expected diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java index 6d5694e435..80877bbdc6 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java @@ -206,6 +206,25 @@ public class IO { } } + /** + * Read from input until the entire byte array filled, or throw an exception + * if stream ends first. + * + * @param fd + * input stream to read the data from. + * @param dst + * buffer that must be fully populated + * @throws EOFException + * the stream ended before dst was fully populated. + * @throws java.io.IOException + * there was an error reading from the stream. + * @since 6.5 + */ + public static void readFully(InputStream fd, byte[] dst) + throws IOException { + readFully(fd, dst, 0, dst.length); + } + /** * Read as much of the array as possible from a channel. *