commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: [ALL] Where should an OrderedObservable live in Commons?
Date Tue, 10 Jul 2018 17:13:38 GMT
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 <chtompki@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 <garydgregory@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-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message