RFR: 8087112 HTTP API and HTTP/1.1 implementation

Roger Riggs Roger.Riggs at Oracle.com
Thu Feb 18 17:02:53 UTC 2016


Hi Michael,

A few comments, nothing severe.

Several properties are used in the implementation;  is it significant 
that some are sun.net and others java.net?
For the new package can we get away from using the "sun." prefix?

Exchange.java: 89  in cancel(), exchImpl may be null since it is not 
initialized by the constructor

Methods like responseAsyncImpl0 should be private unless they are needed 
outside the class.
It might help maintainability over time as different maintainers need to 
understand the scope
of use.

ExecutorWrapper:82 println/printStackTrace!  Perhaps Log or the system 
logger instead

Http1Request: 46 ; a comment about which buffer indices are used for 
what might be useful

Http1Request:172: finished() is synchronized but the assignment = true 
(line 166 and 232) is not.
The field 'finished' may be hidden by 'finished' the local:  Line 255.

Unused final static fields:  CRLF_SIZE, CRLF_BUFFER, 
EMPTY_CHUNK_HEADER_SIZE.

Http1Response:109  'finished' field should be private. (and probably others)

HttpClientBuilderImpl:53  spec for cookieManager says it should be 
non-null;  add Objects.requireNonNull...
Ditto sslContext, sslParameters, executor, followRedirects, etc.


HttpClientImpl: 167 obsolete comment about ManagedLocalsThread (and no 
explicit call to super() to inhibit inherited thread locals; if that's 
needed)


HttpRequest.Builder does not prohibit supplying null to its methods.
Is it intentional to be able to supply null and get/revert to the 
default behavior.
If so, it should be specified.  Or the opposite requiring non-null.
HttpRequestBuilderImpl.java would be affected if the later.

HttpRequestBuilderImpl: 96;  should copy() be doing a deep copy of the 
User Headers?
Otherwise, subsequent changes to either HttpRequestBuilder would affect 
the other.

RedirectFilter: 85:  Invalid redirection exception should include the 
invalid value for debug.

That's it for now,

Roger


On 2/4/16 11:14 AM, Michael McMahon wrote:
> Hi,
>
> The following webrevs are for the initial implementation of JEP 110.
> Most of it is in the jdk repository with some build configuration in 
> the top
> level repo for putting this code in its own module (java.httpclient).
>
> http://cr.openjdk.java.net/~michaelm/8087112/01/top/webrev/
>
> http://cr.openjdk.java.net/~michaelm/8087112/01/jdk/webrev/
>
> The HTTP/2 implementation will come later.
>
> Thanks,
> Michael.



More information about the net-dev mailing list