1 package org.apidesign.openfixed;
4 import java.util.concurrent.CopyOnWriteArrayList;
5 import java.util.concurrent.Executor;
6 import java.util.concurrent.Executors;
10 * @author Jaroslav Tulach <jtulach@netbeans.org>
12 final class AsyncEventSupport implements EventSupport {
13 private final List<ModificationListener> listeners = new CopyOnWriteArrayList<ModificationListener>();
14 private static final Executor EXEC = Executors.newSingleThreadExecutor();
20 public void fireModificationEvent(ModificationEvent ev) {
21 EXEC.execute(new Deliverable(ev, listeners.toArray(new ModificationListener[0])));
25 public void add(ModificationListener l) {
30 public void remove(ModificationListener l) {
34 private static class Deliverable implements Runnable {
35 final ModificationEvent ev;
36 final ModificationListener[] listeners;
38 public Deliverable(ModificationEvent ev, ModificationListener[] listeners) {
40 this.listeners = listeners;
45 for (ModificationListener l : listeners) {