On Fri, 18 Sep 2020 11:32:26 GMT, Chris Hegarty <che...@openjdk.org> wrote:

>> Daniel Fuchs has updated the pull request with a new target base due to a 
>> merge or a rebase. The incremental webrev
>> excludes the unrelated changes brought in by the merge/rebase. The pull 
>> request contains four additional commits since
>> the last revision:
>>  - Merge remote-tracking branch 'origin/master' into concat-bs-8252374
>>  - Merge remote-tracking branch 'origin/master' into concat-bs-8252374
>>  - Merge remote-tracking branch 'origin/master' into concat-bs-8252374
>>  - 8252374: Add a new factory method to concatenate a sequence of 
>> BodyPublisher instances into a single publisher.
>
> src/java.net.http/share/classes/java/net/http/HttpRequest.java line 661:
> 
>> 659:
>> 660:         /**
>> 661:          * Creates a {@code BodyPublisher} that publishes a request
> 
> Trivially, should we replace "Creates" with "Returns" to allow for the 
> possibility of, say, a singleton empty publisher
> (rather than having to "create" a new empty each time)

Good point!

> src/java.net.http/share/classes/java/net/http/HttpRequest.java line 668:
> 
>> 666:          * is returned. Otherwise each publisher is lazily subscribed 
>> to in turn,
>> 667:          * until all the body bytes are published, an error occurs, or 
>> the
>> 668:          * returned publisher's subscription is cancelled.
> 
> We should probably say what the publishers `contentLength` will return.

OK.

> src/java.net.http/share/classes/java/net/http/HttpRequest.java line 680:
> 
>> 678:          * cancelled}, or an error occurs while publishing the bytes, 
>> not all
>> 679:          * publishers in the sequence may be subscribed to.
>> 680:          * A publisher may be subscribed several times in sequence if 
>> the
> 
> I think that this sentence can be moved out of the implNote and into 
> normative text

OK.

> src/java.net.http/share/classes/java/net/http/HttpRequest.java line 688:
> 
>> 686:          * by each publisher in the sequence.
>> 687:          */
>> 688:         public static BodyPublisher concat(BodyPublisher... publishers) 
>> {
> 
> It's a choice whether to allow an empty publishers array, or an array of just 
> 1, or to disallow (throw
> IllegalArgumentException), but that will depend on expected usage.

Yes - returning `noBody()` seems more natural - since varargs allows you to 
call `BodyPublishers.concat()` with no
parameters. I toyed with the idea of defining the method as `BodyPublisher 
concat(BodyPublisher first, BodyPublisher...
rest)` but that's very cumbersome for the case where you already have a 
`List<BodyPublishers>` or a `BodyPublisher[]`
array.

-------------

PR: https://git.openjdk.java.net/jdk/pull/57

Reply via email to