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