Return-Path: Delivered-To: apmail-hc-commits-archive@www.apache.org Received: (qmail 82736 invoked from network); 6 Jul 2009 18:21:28 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 6 Jul 2009 18:21:28 -0000 Received: (qmail 76321 invoked by uid 500); 6 Jul 2009 18:21:37 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 76191 invoked by uid 500); 6 Jul 2009 18:21:37 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 75986 invoked by uid 99); 6 Jul 2009 18:21:37 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Jul 2009 18:21:37 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Jul 2009 18:21:35 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 3A3B223888D7; Mon, 6 Jul 2009 18:21:15 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r791558 - in /httpcomponents/httpcore/trunk: ./ httpcore-nio/src/main/java/org/apache/http/nio/entity/ httpcore-nio/src/main/java/org/apache/http/nio/util/ Date: Mon, 06 Jul 2009 18:21:15 -0000 To: commits@hc.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090706182115.3A3B223888D7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: olegk Date: Mon Jul 6 18:21:14 2009 New Revision: 791558 URL: http://svn.apache.org/viewvc?rev=791558&view=rev Log: HTTPCORE-199: ContentInputStream implements InputStream#available() Modified: httpcomponents/httpcore/trunk/RELEASE_NOTES.txt httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/entity/ContentInputStream.java httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java Modified: httpcomponents/httpcore/trunk/RELEASE_NOTES.txt URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt?rev=791558&r1=791557&r2=791558&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/RELEASE_NOTES.txt (original) +++ httpcomponents/httpcore/trunk/RELEASE_NOTES.txt Mon Jul 6 18:21:14 2009 @@ -1,6 +1,9 @@ Changes since 4.0.1 ------------------- +* [HTTPCORE-199] ContentInputStream implements InputStream#available(). + Contributed by Oleg Kalnichevski + * [HTTPCORE-195] Truncated chunk-coded streams can now be tolerated by catching and discarding TruncatedChunkException. Contributed by Oleg Kalnichevski Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/entity/ContentInputStream.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/entity/ContentInputStream.java?rev=791558&r1=791557&r2=791558&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/entity/ContentInputStream.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/entity/ContentInputStream.java Mon Jul 6 18:21:14 2009 @@ -34,6 +34,7 @@ import java.io.IOException; import java.io.InputStream; +import org.apache.http.nio.util.BufferInfo; import org.apache.http.nio.util.ContentInputBuffer; /** @@ -54,6 +55,15 @@ } @Override + public int available() throws IOException { + if (this.buffer instanceof BufferInfo) { + return ((BufferInfo) this.buffer).length(); + } else { + return super.available(); + } + } + + @Override public int read(final byte[] b, int off, int len) throws IOException { return this.buffer.read(b, off, len); } Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java?rev=791558&r1=791557&r2=791558&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java Mon Jul 6 18:21:14 2009 @@ -104,6 +104,27 @@ } } + @Override + public int available() { + synchronized (this.mutex) { + return super.available(); + } + } + + @Override + public int capacity() { + synchronized (this.mutex) { + return super.capacity(); + } + } + + @Override + public int length() { + synchronized (this.mutex) { + return super.length(); + } + } + protected void waitForData() throws IOException { synchronized (this.mutex) { try { Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java?rev=791558&r1=791557&r2=791558&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java Mon Jul 6 18:21:14 2009 @@ -73,6 +73,27 @@ } } + @Override + public int available() { + synchronized (this.mutex) { + return super.available(); + } + } + + @Override + public int capacity() { + synchronized (this.mutex) { + return super.capacity(); + } + } + + @Override + public int length() { + synchronized (this.mutex) { + return super.length(); + } + } + public int produceContent(final ContentEncoder encoder) throws IOException { if (this.shutdown) { return -1;