package org.icij.task; import org.icij.kaxxa.events.Listener; import org.icij.kaxxa.events.Monitor; import org.icij.kaxxa.events.Monitorable; import org.icij.kaxxa.events.DefaultMonitor; public abstract class MonitorableTask<R> extends DefaultTask<R> implements Monitorable { protected final Monitor monitor; protected MonitorableTask() { this.monitor = new DefaultMonitor(); } protected MonitorableTask(final Monitor monitor) { this.monitor = monitor; } @Override public void addListener(final Listener listener) { monitor.addListener(listener); } @Override public void deleteListener(final Listener listener) { monitor.deleteListener(listener); } @Override public void deleteListeners() { monitor.deleteListeners(); } @Override public int countListeners() { return monitor.countListeners(); } }