diff options
Diffstat (limited to 'BJC-Utils2/src/main')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/BoundLazyPair.java | 33 | ||||
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/SingleSupplier.java | 20 |
2 files changed, 34 insertions, 19 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/BoundLazyPair.java b/BJC-Utils2/src/main/java/bjc/utils/data/BoundLazyPair.java index dcf9cca..2b20349 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/data/BoundLazyPair.java +++ b/BJC-Utils2/src/main/java/bjc/utils/data/BoundLazyPair.java @@ -26,8 +26,8 @@ class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> @Override public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind( BiFunction<NewLeft, NewRight, IPair<BoundLeft, BoundRight>> bindr) { - IHolder<IPair<NewLeft, NewRight>> newPair = - new Identity<>(boundPair); + IHolder<IPair<NewLeft, NewRight>> newPair = new Identity<>( + boundPair); IHolder<Boolean> newPairMade = new Identity<>(pairBound); Supplier<NewLeft> leftSupp = () -> { @@ -35,7 +35,7 @@ class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> newPair.replace(binder.apply(leftSupplier.get(), rightSupplier.get())); - newPairMade.replace(false); + newPairMade.replace(true); } return newPair.unwrap((pair) -> pair.getLeft()); @@ -46,7 +46,7 @@ class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> newPair.replace(binder.apply(leftSupplier.get(), rightSupplier.get())); - newPairMade.replace(false); + newPairMade.replace(true); } return newPair.unwrap((pair) -> pair.getRight()); @@ -90,11 +90,11 @@ class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> } @Override - public <MergedType> MergedType - merge(BiFunction<NewLeft, NewRight, MergedType> merger) { + public <MergedType> MergedType merge( + BiFunction<NewLeft, NewRight, MergedType> merger) { if (!pairBound) { - boundPair = - binder.apply(leftSupplier.get(), rightSupplier.get()); + boundPair = binder.apply(leftSupplier.get(), + rightSupplier.get()); pairBound = true; } @@ -112,8 +112,8 @@ class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> } @Override - public <NewLeftType> IPair<NewLeftType, NewRight> - mapLeft(Function<NewLeft, NewLeftType> mapper) { + public <NewLeftType> IPair<NewLeftType, NewRight> mapLeft( + Function<NewLeft, NewLeftType> mapper) { Supplier<NewLeftType> leftSupp = () -> { if (!pairBound) { NewLeft leftVal = binder @@ -140,8 +140,8 @@ class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> } @Override - public <NewRightType> IPair<NewLeft, NewRightType> - mapRight(Function<NewRight, NewRightType> mapper) { + public <NewRightType> IPair<NewLeft, NewRightType> mapRight( + Function<NewRight, NewRightType> mapper) { Supplier<NewLeft> leftSupp = () -> { if (!pairBound) { return binder @@ -168,11 +168,10 @@ class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> } @Override - public <OtherLeft, OtherRight, CombinedLeft, CombinedRight> - IPair<CombinedLeft, CombinedRight> - combine(IPair<OtherLeft, OtherRight> otherPair, - BiFunction<NewLeft, OtherLeft, CombinedLeft> leftCombiner, - BiFunction<NewRight, OtherRight, CombinedRight> rightCombiner) { + public <OtherLeft, OtherRight, CombinedLeft, CombinedRight> IPair<CombinedLeft, CombinedRight> combine( + IPair<OtherLeft, OtherRight> otherPair, + BiFunction<NewLeft, OtherLeft, CombinedLeft> leftCombiner, + BiFunction<NewRight, OtherRight, CombinedRight> rightCombiner) { return otherPair.bind((otherLeft, otherRight) -> { return bind((leftVal, rightVal) -> { return new LazyPair<>( 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(); } } |
