DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=36647>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=36647 Summary: RequestEntity wrapping a ByteBuffer Product: HttpClient Version: 3.0 RC3 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P3 Component: Commons HttpClient AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] Good morning everybody, here's a little code contribution which might be useful for others. Cheers, Christian -- import java.io.IOException; import java.io.OutputStream; import java.nio.ByteBuffer; import org.apache.commons.httpclient.methods.RequestEntity; public class ByteBufferRequestEntity implements RequestEntity { private static final int WRITE_CHUNK_SIZE = 1024; private final ByteBuffer content; private final String contentType; public ByteBufferRequestEntity(ByteBuffer source) { this(source, null); } public ByteBufferRequestEntity(ByteBuffer content, String contentType) { if (content == null) { throw new IllegalArgumentException("The content cannot be null"); } this.content = content; this.contentType = contentType; } public ByteBuffer getContent() { return content.asReadOnlyBuffer(); } public long getContentLength() { return content.remaining(); } public String getContentType() { return contentType; } public boolean isRepeatable() { return true; } public void writeRequest(OutputStream out) throws IOException { ByteBuffer buffer = content.asReadOnlyBuffer(); // Trivial implementation: // .. while (buffer.hasRemaining()) { // .... out.write(buffer.get()); // .. } byte[] chunk = null; if (buffer.remaining() >= WRITE_CHUNK_SIZE) { chunk = new byte[WRITE_CHUNK_SIZE]; while (buffer.remaining() >= WRITE_CHUNK_SIZE) { buffer.get(chunk, 0, WRITE_CHUNK_SIZE); out.write(chunk, 0, WRITE_CHUNK_SIZE); } } int remaining = buffer.remaining(); if (remaining > 0) { chunk = new byte[remaining]; buffer.get(chunk, 0, remaining); out.write(chunk, 0, remaining); } } } -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
