You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by mb...@apache.org on 2004/08/09 03:22:05 UTC
cvs commit: jakarta-commons/httpclient/src/java/org/apache/commons/httpclient ContentLengthInputStream.java
mbecke 2004/08/08 18:22:05
Modified: httpclient/src/test/org/apache/commons/httpclient Tag:
HTTPCLIENT_2_0_BRANCH TestStreams.java
httpclient/src/java/org/apache/commons/httpclient Tag:
HTTPCLIENT_2_0_BRANCH ContentLengthInputStream.java
Log:
Adds ContentLengthInputStream.skip().
PR: 30433
Submitted by: Michael Becke
Revision Changes Path
No revision
No revision
1.11.2.2 +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.11.2.1
retrieving revision 1.11.2.2
diff -u -r1.11.2.1 -r1.11.2.2
--- TestStreams.java 22 Feb 2004 18:21:16 -0000 1.11.2.1
+++ TestStreams.java 9 Aug 2004 01:22:05 -0000 1.11.2.2
@@ -131,6 +131,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();
No revision
No revision
1.6.2.2 +25 -4 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.6.2.1
retrieving revision 1.6.2.2
diff -u -r1.6.2.1 -r1.6.2.2
--- ContentLengthInputStream.java 22 Feb 2004 18:21:13 -0000 1.6.2.1
+++ ContentLengthInputStream.java 9 Aug 2004 01:22:05 -0000 1.6.2.2
@@ -38,7 +38,7 @@
/**
* Cuts the wrapped InputStream off after a specified number of bytes.
*
- * @author Ortwin Gl�ck
+ * @author Ortwin Gl?ck
* @author Eric Johnson
* @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
* @since 2.0
@@ -149,4 +149,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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org