package org.ovirt.engine.core.utils; import java.util.function.Supplier; /** * This is similar to Google's Suppliers#MemoizingSupplier but is not thread-safe */ public class MemoizingSupplier<T> implements Supplier<T> { private final Supplier<T> delegate; private boolean initialized; private T value; public MemoizingSupplier(Supplier<T> delegate) { this.delegate = delegate; } public T get() { if (!initialized) { value = delegate.get(); initialized = true; } return value; } }