Affects Version/s: None
Fix Version/s: None
The class AbstractManager should implement java.lang.AutoCloseable.
A manager holds on to resources that must be cleaned up. Typically these resources are allocated on instance creation and freed by calling the manager's release() method.
For AbstractManager to implement java.lang.AutoCloseable, release() will re-implemented as close() and deprecated.
There are several benefits to this change:
- Make it obvious and formal that this kind of object must be properly managed.
- A reader or cloner of the code will know that there is a pattern to follow.
- This will make our tests cleaner, smaller and hopefully less error-prone.
- Coders may think that managers can be used like resources like a java.io.File.
- Some AutoCloseable implementations are short-lived, this one not so much, so we will add Javadoc for this effect and to note the benefit for unit tests.
Our current unit test code follows this pattern:
Sometimes, we also have:
After the proposed change, our test code can look like this: