X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.document.server%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Fserver%2FDocumentHistoryListener.java;fp=bundles%2Forg.simantics.document.server%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Fserver%2FDocumentHistoryListener.java;h=ca4adef25a280ff77bfcbbd4d1ff92184151d194;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.document.server/src/org/simantics/document/server/DocumentHistoryListener.java b/bundles/org.simantics.document.server/src/org/simantics/document/server/DocumentHistoryListener.java new file mode 100644 index 000000000..ca4adef25 --- /dev/null +++ b/bundles/org.simantics.document.server/src/org/simantics/document/server/DocumentHistoryListener.java @@ -0,0 +1,51 @@ +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; + } + +}