Wouldn’t this be an argument for commons-util (specifically for extensions of java.util)? Now, I whole heartedly disagree with naming things “XxxxUtils” because I feel like the whole idea of naming a piece of a machine a utility is a cop out and bad practice in semantics, so maybe this goes with [pool] or [lang]??
> On Jul 10, 2018, at 11:51 AM, Gary Gregory <garydgreg...@gmail.com> wrote: > > Does anyone have any thoughts on where an OrderedObservable should live in > Commons if at all? > > import java.util.ArrayList; > import java.util.List; > import java.util.concurrent.locks.Lock; > import java.util.concurrent.locks.ReadWriteLock; > import java.util.concurrent.locks.ReentrantReadWriteLock; > import java.util.function.Consumer; > > public class OrderedObservable<L> { > > private final ReadWriteLock readWriteLock = new > ReentrantReadWriteLock(true); > protected final Lock readLock = readWriteLock.readLock(); > protected final Lock writeLock = readWriteLock.writeLock(); > private final List<L> listeners = new ArrayList<>(); > > public void clearListeners() { > listeners.clear(); > } > > public void notifyListeners(final Consumer<? super L> algorithm) { > this.readLock.lock(); > try { > this.listeners.forEach(algorithm); > } finally { > this.readLock.unlock(); > } > } > > public L register(final L listener) { > this.writeLock.lock(); > try { > this.listeners.add(listener); > } finally { > this.writeLock.unlock(); > } > return listener; > } > > public void unregister(final L listener) { > this.writeLock.lock(); > try { > this.listeners.remove(listener); > } finally { > this.writeLock.unlock(); > } > } > > } > > Thank you, > Gary --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org