On Tue, Jul 10, 2018 at 12:05 PM sebb <[email protected]> wrote: > 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. >
It does not feel like a new component. I currently extend and use such a class in a LifeCycle class where call sites register to be notified of life cycle state changes. Gary > > On 10 July 2018 at 18:13, Gary Gregory <[email protected]> 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 <[email protected]> > 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 <[email protected]> > >> 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: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
