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