On Fri, 13 Nov 2020 17:16:21 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:

>> test/jdk/java/net/httpclient/HttpRequestNewBuilderTest.java line 171:
>> 
>>> 169:         while (iter1.hasNext() && iter2.hasNext())
>>> 170:             assertEquals(iter1.next(), iter2.next());
>>> 171:     }
>> 
>> This code doesn't seem to be correct. It won't work if the `BiPredicate` 
>> vetoes only 1 value for a multi-valued request. This lets me think that this 
>> scenario is not tested, or if it is tested, then it's not tested with this 
>> method.
>> A simpler implementation would be to rely on map equality. That should work 
>> as both map are case insensitive.
>> That is something like:
>> (r1.headers().map(), HttpHeaders.of(r2.headers().map(), filter));```
>> assuming r1 is the request in which headers have been removed according to 
>> `filter`.
>
> Or if you don't want to trust `HttpHeaders.of` then you should probably use a 
> `record` and `mapMulti` to build a stream of `(name, value)` pairs and then 
> reassemble the map in the end (possibly using `groupingBy`).

I removed the stream check and replaced it with an assert based on map 
equality. I've also added more test cases to check the scenarios suggested 
above. See 
https://github.com/openjdk/jdk/pull/1059/commits/03b13e7aa9ff7bc222bd0c466b223ec522ff2973

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

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

Reply via email to