RFR: 8268960: com/sun/net/httpserver/Headers.java: Ensure mutators normalize keys and disallow null for keys and values [v3]
Daniel Fuchs
dfuchs at openjdk.java.net
Thu Jun 24 15:20:30 UTC 2021
On Wed, 23 Jun 2021 18:02:02 GMT, Julia Boes <jboes at openjdk.org> 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
More information about the net-dev
mailing list