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
>
>

Reply via email to