On Wed, 23 Jun 2021 18:02:02 GMT, Julia Boes <[email protected]> wrote:
>> `com.sun.net.httpserver.Headers` normalizes its keys to adhere to the
>> following format: First character uppercase, all other characters lowercase,
>> for example `"foo" -> "Foo"`. This behaviour is not consistent across the
>> mutator methods of the class, in particular `putAll()` and `replaceAll()` do
>> not apply normalization.
>>
>> The suggested fix is to update the implementation of `putAll()` and to add
>> an implementation of of the java.util.Map default method `replaceAll()`.
>> While here, we can improve `equals()` by adding a type check and add a
>> `toString()` implementation.
>>
>> Additionally, the Headers class is updated to disallow null values for keys
>> and values.
>
> Julia Boes has updated the pull request incrementally with one additional
> commit since the last revision:
>
> confirm HttpExchange::sendResponseHeaders fails if key/value null
Marked as reviewed by dfuchs (Reviewer).
src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java line 115:
> 113: @Override
> 114: public boolean containsKey(Object key) {
> 115: Objects.requireNonNull(key);
I haven't looked at the CSR yet - but maybe the fact that the get and contains*
method can now throw NPE - in conformance to the Map interface specification
for maps that do not allow null keys or null values, should be explicitly
mentioned - in particular in the release note - as this will probably be the
less expected behavior change.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4528