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.

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

Commit messages:
 - fix whitespace
 - 8225763: Inflater and Deflater should implement AutoCloseable

Changes: https://git.openjdk.org/jdk/pull/19675/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19675&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8225763
  Stats: 724 lines in 6 files changed: 673 ins; 9 del; 42 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

Reply via email to