Lombok - v0.10.8

lombok
Annotation Type Cleanup


@Target(value=LOCAL_VARIABLE)
@Retention(value=SOURCE)
public @interface Cleanup

Ensures the variable declaration that you annotate will be cleaned up by calling its close method, regardless of what happens. Implemented by wrapping all statements following the local variable declaration to the end of your scope into a try block that, as a finally action, closes the resource.

Example:

 public void copyFile(String in, String out) throws IOException {
     @Cleanup FileInputStream inStream = new FileInputStream(in);
     @Cleanup FileOutputStream outStream = new FileOutputStream(out);
     byte[] b = new byte[65536];
     while (true) {
         int r = inStream.read(b);
         if (r == -1) break;
         outStream.write(b, 0, r);
     }
 }
 
Will generate:
 public void copyFile(String in, String out) throws IOException {
     @Cleanup FileInputStream inStream = new FileInputStream(in);
     try {
         @Cleanup FileOutputStream outStream = new FileOutputStream(out);
         try {
             byte[] b = new byte[65536];
             while (true) {
                 int r = inStream.read(b);
                 if (r == -1) break;
                 outStream.write(b, 0, r);
             }
         } finally {
             out.close();
         }
     } finally {
         in.close();
     }
 }
 
Note that the final close method call, if it throws an exception, will overwrite any exception thrown in the main body of the generated try block. You should NOT rely on this behaviour - future versions of lombok intend to silently swallow any exception thrown by the cleanup method _IF the main body throws an exception as well, as the earlier exception is usually far more useful.

However, in java 1.6, generating the code to do this is prohibitively complicated.


Optional Element Summary
 String value
          The name of the method that cleans up the resource.
 

value

public abstract String value
The name of the method that cleans up the resource. By default, 'close'. The method must not have any parameters.

Default:
"close"

Lombok - v0.10.8

Copyright © 2009-2011 The Project Lombok Authors, licensed under the MIT licence.