From 4b7253559c290b6fdd1c4122830f153fda85dd62 Mon Sep 17 00:00:00 2001 From: RncLsn Date: Fri, 29 May 2015 18:35:51 +0100 Subject: Disposable. --- .../ox/cs/pagoda/util/disposable/Disposable.java | 39 ++++++++++++++++++++++ .../pagoda/util/disposable/DisposedException.java | 12 +++++++ 2 files changed, 51 insertions(+) create mode 100644 src/uk/ac/ox/cs/pagoda/util/disposable/Disposable.java create mode 100644 src/uk/ac/ox/cs/pagoda/util/disposable/DisposedException.java (limited to 'src/uk/ac/ox/cs/pagoda/util') diff --git a/src/uk/ac/ox/cs/pagoda/util/disposable/Disposable.java b/src/uk/ac/ox/cs/pagoda/util/disposable/Disposable.java new file mode 100644 index 0000000..b208cc3 --- /dev/null +++ b/src/uk/ac/ox/cs/pagoda/util/disposable/Disposable.java @@ -0,0 +1,39 @@ +package uk.ac.ox.cs.pagoda.util.disposable; + + +/** + * Every public method of a subclass of this class, + * as first instruction, should check if the object has already been disposed + * and, if so, should throw a DisposedException. + */ +public abstract class Disposable { + + private boolean disposed = false; + + /** + * This method must be called after the use of the object. + *

+ * Every overriding method must call super.dispose() as first instruction. + */ + public void dispose() { + if(isDisposed()) throw new AlreadyDisposedException(); + disposed = true; + } + + public final boolean isDisposed() { + return disposed; + } + + private class AlreadyDisposedException extends RuntimeException { + + public AlreadyDisposedException() { + super(); + } + + public AlreadyDisposedException(String msg) { + super(msg); + } + } + + +} diff --git a/src/uk/ac/ox/cs/pagoda/util/disposable/DisposedException.java b/src/uk/ac/ox/cs/pagoda/util/disposable/DisposedException.java new file mode 100644 index 0000000..eb8c039 --- /dev/null +++ b/src/uk/ac/ox/cs/pagoda/util/disposable/DisposedException.java @@ -0,0 +1,12 @@ +package uk.ac.ox.cs.pagoda.util.disposable; + +public class DisposedException extends RuntimeException { + + public DisposedException() { + super(); + } + + public DisposedException(String msg) { + super(msg); + } +} -- cgit v1.2.3