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