From b1317e5e62bb044cd8a676cb3fc2da86e9922caf Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 28 Jul 2016 16:36:17 -0400 Subject: Added debugging aid for finding single instantiation violations. Also, fixed a single instantiation violation into BoundLazyPair --- .../src/main/java/bjc/utils/data/SingleSupplier.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java') 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 implements Supplier { 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 supp) { @@ -22,13 +26,25 @@ public class SingleSupplier implements Supplier { @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(); } } -- cgit v1.2.3