package com.revolsys.value;
import com.revolsys.io.BaseCloseable;
public interface ValueHolder<T> {
default BaseCloseable closeable(final T value) {
return new ValueCloseable<>(this, value);
}
T getValue();
default void run(final T newValue, final Runnable runnable) {
final T oldValue = setValue(newValue);
try {
runnable.run();
} finally {
setValue(oldValue);
}
}
T setValue(T value);
}