package jalview.ws2; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.function.Consumer; public class WebServiceWorkerListenersList { private WebServiceWorkerI owner; private List listeners = new CopyOnWriteArrayList<>(); public WebServiceWorkerListenersList(WebServiceWorkerI worker) { this.owner = worker; } public void addListener(WebServiceWorkerListener listener) { listeners.add(listener); } public void removeListener(WebServiceWorkerListener listener) { listeners.remove(listener); } public void fireWorkerStarted() { for (var listener : listeners) listener.workerStarted(owner); } public void fireWorkerNotStarted() { for (var listener : listeners) listener.workerNotStarted(owner); } public void fireJobCreated(WSJob job) { for (var listener : listeners) listener.jobCreated(owner, job); } public void firePollException(WSJob job, Exception e) { for (var listener : listeners) listener.pollException(owner, job, e); } public void fireWorkerCompleting() { for (var listener : listeners) listener.workerCompleting(owner); } public void fireWorkerCompleted() { for (var listener : listeners) listener.workerCompleted(owner); } public List getListeners() { return listeners; } public void forEach(Consumer consumer) { for (var listener : listeners) consumer.accept(listener); } }