commons-dev mailing list archives

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

On 10 July 2018 at 18:13, Gary Gregory <garydgregory@gmail.com> 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 <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
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message