Annotation Type AutoCleanup
@Target(FIELD) @Retention(RUNTIME) public @interface AutoCleanupAutomatically cleans up the object stored in the annotated field or property at the end of its life time. More precisely, auto-cleanup of an object has the same effect as, and serves as a convenient replacement for, calling the object's close method at the end of the spec's cleanup method. @Shared objects are cleaned up at the end of the spec's cleanupSpec method.
Customizing how cleanup is performedBy default, an object is cleaned up by invoking its parameterless close() method (which is assumed to exist); visibility and return type of this method are irrelevant. If some other method should be called instead, override the annotation's value attribute:
@AutoCleanup("dispose") // invoke the object's "dispose" method
Cleaning up multiple objectsIf multiple fields or properties are annotated with @AutoCleanup, their objects are cleaned up sequentially in reverse field/property declaration order, starting from the most derived class and walking up the inheritance chain.
Handling of exceptions during cleanupIf a cleanup operation fails with an exception, the exception is reported (just as if it had occurred in a cleanup or cleanupSpec method) and cleanup proceeds with the next annotated object. To prevent cleanup exceptions from being reported, override the annotation's quiet attribute:
@AutoCleanup(quiet = true) // don't report exceptions