What are the common use cases for this? Do they come from a particular field, and if so, where would you expect to find related code in Commons?
Just a thought. If there are likely to be more classes in the same general area, maybe you have found a new component. On 10 July 2018 at 18:13, Gary Gregory <garydgreg...@gmail.com> wrote: > Yeah, I dislike *Util names as well, it's not only a co-out but an > encouragement to make such classes dumping-grounds/kitchen-sinks. > > I was thinking [lang] or maybe [collections] but it's not a collection > really. > > Gary > > On Tue, Jul 10, 2018 at 10:14 AM Rob Tompkins <chtom...@gmail.com> wrote: > >> 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 >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org