Proposal: Automatic Resource Management (original) (raw)

Stefan Schulz schulz at e-spirit.de
Mon Mar 9 16:43:52 PDT 2009


Vilya Harvey wrote:

I joined this mailing list too late to see the proposal when it was posted; does it include calling any kind of setup method on entering the block? If not, this may be worth considering as well?

The current proposal only has an exit method (close()). But I quite like the idea to generalize using resources with ARM instead of splitting it into two proposals. Wouldn't it be much more useful, if one introduces a completely new interface like the following:

interface ManagableResource { void acquire() throws Exception; void release() throws Exception; }

Have a resource definition with an optional assignment:

try (<optional-assignment = > ) { // dostuff }

That translates to (simple case):

$resource = ; <optional-assignment = > $resource; $resource.acquire(); try { // dostuff } finally { $resource.release(); }

And retrofit Streams etc. (which are classes anyway) to implement ManagableResource (having an empty acquire() and a release() forwarding to close()) and add a ManagableLock that extends Lock and ManagableResource (does not support Lock directly, but code can be refactored to ManagableLock).

The try on a lock might be a bit misleading (like it is on a resource, as it does not try to get the resource), but I'd rather like to see one consistent solution than a half-hearty ARM plus some newly introduced construct re-using a modifier out of place.

Such a solution would require a bit more JDK-work though.

Stefan



More information about the coin-dev mailing list