RFR: 8283660: Convert com/sun/jndi/ldap/AbstractLdapNamingEnumeration.java finalizer to Cleaner
Brent Christian
bchristi at openjdk.java.net
Wed Apr 20 01:47:00 UTC 2022
Please review this change to replace the finalizer in `AbstractLdapNamingEnumeration` with a Cleaner.
The pieces of state required for cleanup (`LdapCtx homeCtx`, `LdapResult res`, and `LdapClient enumClnt`) are moved to a static inner class . From there, the change is fairly mechanical.
Details of note:
1. Some operations need to change the state values (the update() method is probably the most interesting).
2. Subclasses need to access `homeCtx`; I added a `homeCtx()` method to read `homeCtx` from the superclass's `state`.
The test case is based on a copy of `com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java`. A more minimal test case might be possible, but this was done for expediency.
The test only confirms that the new Cleaner use does not keep the object reachable. It only tests `LdapSearchEnumeration` (not `LdapNamingEnumeration` or `LdapBindingEnumeration`, though all are subclasses of `AbstractLdapNamingEnumeration`).
Thanks.
-------------
Commit messages:
- fix whitespace
- Merge branch 'master' into remove-finalizers
- Test changes to test new cleaner code
- Rename test to LdapEnumeration
- Create copy of AddNewEntry test to test AbstractLdapNamingEnumeration Cleaner
- Merge branch 'master' into remove-finalizers
- Replace AbstractLdapNamingEnumeration finalizer with Cleaner
Changes: https://git.openjdk.java.net/jdk/pull/8311/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8311&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8283660
Stats: 259 lines in 7 files changed: 192 ins; 20 del; 47 mod
Patch: https://git.openjdk.java.net/jdk/pull/8311.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8311/head:pull/8311
PR: https://git.openjdk.java.net/jdk/pull/8311
More information about the core-libs-dev
mailing list