diff options
author | jonmv <venstad@gmail.com> | 2022-11-07 15:20:12 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-11-07 15:20:12 +0100 |
commit | 4a6f833f3265a955c1a9d793fdb2ebb9eb8e0dd0 (patch) | |
tree | 231cc7ea990f1b003ccd523ab4202917a66e4954 /vespajlib/src/main/java/com/yahoo/yolean | |
parent | 54eb99038030a5eee2cbc16fbda76c0375bcc52c (diff) |
Revert "Merge pull request #24781 from vespa-engine/revert-24777-jonmv/reapply-app-streams"
This reverts commit adc1c1fa16945d9f29778706f5bf8161434c2361, reversing
changes made to a0e9b51aaf01a425dbd6cdd1fbc8fd5ce066a9bb.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/yolean')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/yolean/concurrent/Memoized.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/yolean/concurrent/Memoized.java b/vespajlib/src/main/java/com/yahoo/yolean/concurrent/Memoized.java index 8e2b7b7a7eb..ba5ef7bab2d 100644 --- a/vespajlib/src/main/java/com/yahoo/yolean/concurrent/Memoized.java +++ b/vespajlib/src/main/java/com/yahoo/yolean/concurrent/Memoized.java @@ -34,15 +34,23 @@ public class Memoized<T, E extends Exception> implements Supplier<T>, AutoClosea private volatile T wrapped; private Supplier<T> factory; + /** Returns a new Memoized which has no close method. */ + public Memoized(Supplier<T> factory) { + this(factory, __ -> { }); + } + + /** Returns a new Memoized with the given factory and closer. */ public Memoized(Supplier<T> factory, Closer<T, E> closer) { this.factory = requireNonNull(factory); this.closer = requireNonNull(closer); } + /** Returns a generic AutoCloseable Memoized with the given AutoCloseable-supplier. */ public static <T extends AutoCloseable> Memoized<T, ?> of(Supplier<T> factory) { return new Memoized<>(factory, AutoCloseable::close); } + /** Composes the given memoized with a function taking its output as an argument to produce a new Memoized, with the given closer. */ public static <T, U, E extends Exception> Memoized<U, E> combine(Memoized<T, ? extends E> inner, Function<T, U> outer, Closer<U, ? extends E> closer) { return new Memoized<>(() -> outer.apply(inner.get()), compose(closer, inner::close)); } |