]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.server/src/org/simantics/document/server/DocumentHistoryListener.java
Merge commit 'a2a4242'
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / DocumentHistoryListener.java
1 package org.simantics.document.server;\r
2 \r
3 import java.util.List;\r
4 \r
5 import org.simantics.db.procedure.Listener;\r
6 import org.slf4j.Logger;\r
7 import org.slf4j.LoggerFactory;\r
8 \r
9 public class DocumentHistoryListener implements Listener<List<JSONObject>> {\r
10     private static final Logger LOGGER = LoggerFactory.getLogger(DocumentHistoryListener.class);\r
11 \r
12         final private DocumentHistory history;\r
13     \r
14     private boolean disposed = false;\r
15 \r
16     DocumentHistoryListener(DocumentHistory history) {\r
17         this.history = history;\r
18     }\r
19 \r
20     @Override\r
21     public void execute(List<JSONObject> result) {\r
22         \r
23         synchronized(history) {\r
24 \r
25                         history.refresh(result);\r
26                 if(!history.hasListeners()) {\r
27                         history.removeUpdater();\r
28                         disposed = true;\r
29                 }\r
30                 \r
31         }\r
32         \r
33     }\r
34 \r
35     @Override\r
36     public void exception(Throwable t) {\r
37         LOGGER.warn("DocumentHistoryListener received an exception.", t);\r
38     }\r
39     \r
40     @Override\r
41     public boolean isDisposed() {\r
42         if(!disposed) {\r
43                 synchronized(history) {\r
44                         if(!history.hasListeners()) {\r
45                                 history.removeUpdater();\r
46                                 disposed = true;\r
47                         }\r
48                 }\r
49         }\r
50         return disposed;\r
51     }\r
52 \r
53 }\r