RFR: 8225763: Inflater and Deflater should implement AutoCloseable [v16]

Jaikiran Pai jpai at openjdk.org
Tue Jan 14 08:58:42 UTC 2025


> Can I please get a review of this enhancement which proposes to enhance `java.util.zip.Deflater/Inflater` classes to now implement `AutoCloseable`?
> 
> The actual work for this was done a few years back when we discussed the proposed approaches and then I raised a RFR. At that time I couldn't take this to completion. The current changes in this PR involve the implementation that was discussed at that time and also have implemented the review suggestions from that time. Here are those previous discussions and reviews:
> 
> https://mail.openjdk.org/pipermail/core-libs-dev/2019-June/061079.html
> https://mail.openjdk.org/pipermail/core-libs-dev/2019-July/061177.html
> https://mail.openjdk.org/pipermail/core-libs-dev/2019-July/061229.html
> 
> To summarize those discussions, we had concluded that:
> - `Deflater` and `Inflater` will implement the `AutoCloseable` interface
> -  In the `close()` implementation we will invoke the `end()` method (`end()` can be potentially overridden by subclasses).
> - `close()` will be specified and implemented to be idempotent. Calling `close()` a second time or more will be a no-op.
> - Calling `end()` and then `close()`, although uncommon, will also support idempotency and that `close()` call will be a no-op.
> - However, calling `close()` and then `end()` will not guarantee idempotency and depending on the implementing subclass, the `end()` may throw an exception.
> 
> New tests have been included as part of these changes and they continue to pass along with existing tests in tier1, tier2 and tier3. When I had originally added these new tests, I hadn't used junit. I can convert them to junit if that's preferable.
> 
> I'll file a CSR shortly.

Jaikiran Pai 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 33 additional commits since the last revision:

 - Improve the javadoc on #end() methods
 - Alan's input - simplify the class level javadoc
 - add missing "a" in the javadoc
 - merge latest from master branch
 - merge latest from master branch
 - fix javadoc tag ordering - "@throws" after "@return"
 - change "@since" to 25
 - test code comment improvement
 - Roger's review - improve class level javadoc text of Inflater/Deflater
 - merge latest from master branch
 - ... and 23 more: https://git.openjdk.org/jdk/compare/2fc8af51...1cd16c41

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/19675/files
  - new: https://git.openjdk.org/jdk/pull/19675/files/4fbbc83d..1cd16c41

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=19675&range=15
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=19675&range=14-15

  Stats: 24578 lines in 762 files changed: 7233 ins; 13850 del; 3495 mod
  Patch: https://git.openjdk.org/jdk/pull/19675.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19675/head:pull/19675

PR: https://git.openjdk.org/jdk/pull/19675


More information about the core-libs-dev mailing list