mbecke 2004/08/08 18:25:55 Modified: httpclient/src/test/org/apache/commons/httpclient TestStreams.java httpclient/src/java/org/apache/commons/httpclient ContentLengthInputStream.java Log: Adds ContentLengthInputStream.skip(). PR: 30433 Submitted by: Michael Becke Revision Changes Path 1.17 +20 -3 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestStreams.java Index: TestStreams.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestStreams.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- TestStreams.java 13 Jun 2004 20:22:19 -0000 1.16 +++ TestStreams.java 9 Aug 2004 01:25:54 -0000 1.17 @@ -138,6 +138,23 @@ assertEquals(result, "1234567890"); } + public void testContentLengthInputStreamSkip() throws IOException { + InputStream in = new ContentLengthInputStream(new ByteArrayInputStream(new byte[20]), 10); + assertEquals(10, in.skip(10)); + assertTrue(in.read() == -1); + + in = new ContentLengthInputStream(new ByteArrayInputStream(new byte[20]), 10); + in.read(); + assertEquals(9, in.skip(10)); + assertTrue(in.read() == -1); + + in = new ContentLengthInputStream(new ByteArrayInputStream(new byte[20]), 2); + in.read(); + in.read(); + assertTrue(in.skip(10) <= 0); + assertTrue(in.read() == -1); + } + public void testChunkedConsitance() throws IOException { String input = "76126;27823abcd;:q38a-\nkjc\rk%1ad\tkh/asdui\r\njkh+?\\suweb"; ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 1.11 +24 -3 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/ContentLengthInputStream.java Index: ContentLengthInputStream.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/ContentLengthInputStream.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ContentLengthInputStream.java 13 May 2004 04:03:25 -0000 1.10 +++ ContentLengthInputStream.java 9 Aug 2004 01:25:54 -0000 1.11 @@ -162,4 +162,25 @@ return read(b, 0, b.length); } + /** + * Skips and discards a number of bytes from the input stream. + * @param n The number of bytes to skip. + * @return The actual number of bytes skipped. <= 0 if no bytes + * are skipped. + * @throws IOException If an error occurs while skipping bytes. + * @see InputStream#skip(long) + */ + public long skip(long n) throws IOException { + // make sure we don't skip more bytes than are + // still available + long length = Math.min(n, contentLength - pos); + // skip and keep track of the bytes actually skipped + length = super.skip(length); + // only add the skipped bytes to the current position + // if bytes were actually skipped + if (length > 0) { + pos += length; + } + return length; + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]