From 5b4dbb3970b7e559e32aee6dbd159e66bf7a68a8 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Tue, 28 Jun 2016 13:56:32 -0700 Subject: [PATCH] Make BulkChange auto-closeable so that it can be used as below: try (BulkChange bc = new BulkChange(o)) { ... bc.commit(); } --- core/src/main/java/hudson/BulkChange.java | 28 ++++++++----------- core/src/main/java/hudson/model/Job.java | 5 +--- core/src/main/java/hudson/model/Run.java | 5 +--- .../java/jenkins/install/SetupWizard.java | 5 +--- .../hudson/slaves/NodeProvisionerTest.java | 22 ++++----------- 5 files changed, 20 insertions(+), 45 deletions(-) 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(); } }