diff --git a/core/src/main/java/hudson/BulkChange.java b/core/src/main/java/hudson/BulkChange.java index db48db3de7..3c7da451f6 100644 --- a/core/src/main/java/hudson/BulkChange.java +++ b/core/src/main/java/hudson/BulkChange.java @@ -25,6 +25,7 @@ package hudson; import hudson.model.Saveable; +import java.io.Closeable; import java.io.IOException; /** @@ -35,24 +36,9 @@ import java.io.IOException; * The usage of {@link BulkChange} needs to follow a specific closure-like pattern, namely: * *
- * BulkChange bc = new BulkChange(someObject);
- * try {
- *    ... make changes to 'someObject'
- * } finally {
- *    bc.commit();
- * }
- * 
- * - *

- * ... or if you'd like to avoid saving when something bad happens: - * - *

- * BulkChange bc = new BulkChange(someObject);
- * try {
+ * try (BulkChange bc = new BulkChange(someObject)) {
  *    ... make changes to 'someObject'
  *    bc.commit();
- * } finally {
- *    bc.abort();
  * }
  * 
* @@ -82,7 +68,7 @@ import java.io.IOException; * @author Kohsuke Kawaguchi * @since 1.249 */ -public class BulkChange { +public class BulkChange implements Closeable { private final Saveable saveable; public final Exception allocator; private final BulkChange parent; @@ -112,6 +98,14 @@ public class BulkChange { saveable.save(); } + /** + * Alias for {@link #abort()} to make {@link BulkChange} auto-closeable. + */ + @Override + public void close() { + abort(); + } + /** * Exits the scope of {@link BulkChange} without saving the changes. * diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index 69cc02708e..1a61359972 100644 --- a/core/src/main/java/hudson/model/Job.java +++ b/core/src/main/java/hudson/model/Job.java @@ -436,15 +436,12 @@ public abstract class Job, RunT extends Run,RunT extends Run bb : blueBuilds) assertFalse(bb.isDone()); - } finally { - bc.abort(); } }