package husacct.common.services; import java.util.ArrayList; import org.apache.log4j.Logger; public class ObservableService { private final Logger logger = Logger.getLogger(ObservableService.class); private ArrayList<IServiceListener> listeners = new ArrayList<IServiceListener>(); public void addServiceListener(IServiceListener listener){ listeners.add(listener); } public void notifyServiceListeners(){ // Copy the current listeners to avoid ConcurrentModificationExceptions // Usually triggered when a listener is added while notifying the listeners @SuppressWarnings("unchecked") ArrayList<IServiceListener> listenersCopy = (ArrayList <IServiceListener>) this.listeners.clone(); for(IServiceListener listener : listenersCopy){ try { listener.update(); } catch (Exception e) { //e.printStackTrace(); logger.error(" Error while updating service: " + listener.toString()); } } } }