commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Tompkins <chtom...@gmail.com>
Subject Re: [ALL] Where should an OrderedObservable live in Commons?
Date Tue, 10 Jul 2018 16:14:05 GMT
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
View raw message