package org.simantics.document.server; import java.util.List; import org.simantics.Logger; import org.simantics.db.procedure.Listener; public class DocumentHistoryListener implements Listener> { final private DocumentHistory history; private boolean disposed = false; DocumentHistoryListener(DocumentHistory history) { this.history = history; } @Override public void execute(List result) { synchronized(history) { history.refresh(result); if(!history.hasListeners()) { history.removeUpdater(); disposed = true; } } } @Override public void exception(Throwable t) { Logger.defaultLogError(t); } @Override public boolean isDisposed() { if(!disposed) { synchronized(history) { if(!history.hasListeners()) { history.removeUpdater(); disposed = true; } } } return disposed; } }