On Fri, 20 Mar 2026 13:52:06 GMT, Jaikiran Pai <[email protected]> wrote:

>> Please review this PR which updates the specification of 
>> `ZipOutputStream.setComment(String)` to match the long-standing behavior of 
>> throwing `IllegalArgumentException` when a comment contains characters which 
>> are unmappable using the `Charset` passed in the constructor.
>> 
>> A new tests is added to reproduce calling setComment with unmappable 
>> characters and verify that it throws IAE.
>> 
>> A CSR has been drafted. Its specification section will be updated after an 
>> initial round of review of the specification text in this PR.
>
> src/java.base/share/classes/java/util/zip/ZipOutputStream.java line 150:
> 
>> 148:      *            passed to the constructor of this ZipOutputStream 
>> instance.
>> 149:      */
>> 150:     public void setComment(String comment) {
> 
> Given what this method currently does and the class level specification which 
> states that "unless otherwise noted" a NullPointerException gets thrown if 
> null if passed for method params, I think we might have to update this 
> documentation like:
> 
> 
> /**
>  * Sets the ZIP file comment.
>  *
>  * @implSpec Passing {@code null} for {@code comment} will result in
>  *           the ZIP file having no comment.
>  *
>  * @param     comment the comment string, can be {@code null}
>  * @throws    IllegalArgumentException if the length of the specified
>  *            ZIP file comment is greater than 0xFFFF bytes or if the
>  *            {@code comment} contains characters that cannot be mapped
>  *            by the {@code Charset} of this {@code ZipOutputStream}
>  */

I am unsure if accepting `null` should be a `@implSpec` or just a formal API 
specification.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/30338#discussion_r2965933879

Reply via email to