summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java b/BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java
index 016f492..989f1a5 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java
@@ -9,6 +9,10 @@ public class SingleSupplier<T> implements Supplier<T> {
private long id;
+ // This is bad practice, but I want to know where the single
+ // instantiation was, in case of duplicate initiations
+ private Exception instSite;
+
private static long nextID = 0;
public SingleSupplier(Supplier<T> supp) {
@@ -22,13 +26,25 @@ public class SingleSupplier<T> implements Supplier<T> {
@Override
public T get() {
if (gotten == true) {
- throw new IllegalStateException(
+ IllegalStateException isex = new IllegalStateException(
"Attempted to get value more than once"
- + " from single supplier #" + id);
+ + " from single supplier #" + id
+ + ". Previous instantiation below.");
+
+ isex.initCause(instSite);
+
+ throw isex;
}
gotten = true;
+ try {
+ throw new IllegalStateException(
+ "Previous instantiation here.");
+ } catch (IllegalStateException isex) {
+ instSite = isex;
+ }
+
return source.get();
}
}