Http client API
Kurchi Subhra Hazra
kurchi.subhra.hazra at oracle.com
Wed Aug 15 08:32:46 PDT 2012
Just as a reminder, for reading the response, we had originally decided to
simply terminate whatever bytebuffer/byte arrays we have with a -1 to
indicate
EOF. But if returning the number of bytes read results in cleaner code,
maybe we should do this.
>>
>> HttpResponse::
>>
>> - getBodyAsBytes(byte[], int) - I would rather the return the number
>> of bytes put into the buffer.
> yes. Actually the number of bytes read needs to be returned somewhere.
> It should return
> an int or long
>> - getBodyAsBytes(byte[], int) - Why would I ever want a max size less
>> than the size of my byte buffer?
> I originally wanted to implement the no-arg getBodyAsBytes() using the
> other method.
> Maybe it's better to replace them both with:
>
> long getBodyAsBytes(byte[] buffer) - buffer can't be null, use entire
> buffer, return # bytes read
> byte[] getBodyAsBytes() - size limited by
> HttpClient.getResponseBodyBufferLimit()
>
>> - getBodyAsBytes -- Document handling for content-length>
>> Integer.MAX_VALUE
> dealt with implicitly from above change and the response body buffer
> limit itself.
>> - getBodyAsByteBuffers -- handling for not enough space in the array
>> needs to be documented. Unused entries nulled out?
> situation would only arise through ByteBuffer allocation failure, and
> presumably OOM exception would be thrown.
> Is it necessary to document this?
>> - Perhaps maxlength -> maxBytes to be more clear?
>>
>> - getBodyAsByteBufferSource -- if the same iterator is always
>> returned why not return the iterator rather than an iterable?
> The idea was to allow for use of the foreach convenience. eg
>
> Iterable<ByteBuffer> buffers = response.getBodyAsByteBufferSource();
> for (ByteBuffer buffer : buffers) {
> // handle data in buffer
> }
>
>
> This raises the same concern then about the Iterable being
> non-restartable, which in this case
> it clearly can't be. This is a "one-shot" streaming API. I notice that
> the documentation for
> Iterable is rather terse and doesn't say whether
> this usage is encouraged or discouraged. So, I'm not sure now. The
> question is if programmers would
> really be confused by the fact that the Iterable can only be used to
> return one Iterator instance.
>>
>>
>> HttpConnectionCache.CachedConnection::
>> - I would expect this to be abstract and that client providers would
>> extend.
>>
>> - getCache() to return the client provider.
>>
>>
>> On Aug 7 2012, at 16:09 , Michael McMahon wrote:
>>
>>> Hi,
>>>
>>> A new revision of the Http client API planned for jdk 8 can be viewed
>>> at the following link
>>>
>>> http://cr.openjdk.java.net/~michaelm/httpclient/v0.3/
>>>
>>> We would like to review the api on this mailing list.
>>> So, all comments are welcome.
>>>
>>> Thanks
>>> Michael McMahon.
>
>
More information about the net-dev
mailing list