Add Offset and Length to ByteArrayEntity ----------------------------------------
Key: HTTPCORE-258 URL: https://issues.apache.org/jira/browse/HTTPCORE-258 Project: HttpComponents HttpCore Issue Type: Improvement Components: HttpCore, HttpCore NIO Environment: N/A Reporter: William R. Speirs Priority: Trivial Currently the ByteArrayEntity only has a single constructor which will only accept a byte[]. I suggest this class be extended to handle an additional constructor which takes an offset and length. I have created the following first draft of a patch to the ByteArrayEntity class. Additional changes will need to be made to the test cases and the NByteArrayEntity class as well. --- httpcore/src/main/java/org/apache/http/entity/ByteArrayEntity.java (revision 1130603) +++ httpcore/src/main/java/org/apache/http/entity/ByteArrayEntity.java (working copy) @@ -40,6 +40,7 @@ public class ByteArrayEntity extends AbstractHttpEntity implements Cloneable { protected final byte[] content; + protected int off, len; public ByteArrayEntity(final byte[] b) { super(); @@ -47,25 +48,43 @@ throw new IllegalArgumentException("Source byte array may not be null"); } this.content = b; + this.off = 0; + this.len = this.content.length; } + public ByteArrayEntity(final byte[] b, int off, int len) { + super(); + if (b == null) { + throw new IllegalArgumentException("Source byte array may not be null"); + } + if (off < 0) { + throw new IllegalArgumentException("Offset cannot be negative"); + } + if(b.length - off >= len) { + throw new IllegalArgumentException("Length cannot be longer than byte array"); + } + this.content = b; + this.off = off; + this.len = len; + } + public boolean isRepeatable() { return true; } public long getContentLength() { - return this.content.length; + return this.len - this.off; } public InputStream getContent() { - return new ByteArrayInputStream(this.content); + return new ByteArrayInputStream(this.content, this.off, this.len); } public void writeTo(final OutputStream outstream) throws IOException { if (outstream == null) { throw new IllegalArgumentException("Output stream may not be null"); } - outstream.write(this.content); + outstream.write(this.content, this.off, this.len); outstream.flush(); } -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org