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