]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.server/src/org/simantics/document/server/state/StateRealm.java
New implementation of server state based on StandardNodeManager
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / state / StateRealm.java
diff --git a/bundles/org.simantics.document.server/src/org/simantics/document/server/state/StateRealm.java b/bundles/org.simantics.document.server/src/org/simantics/document/server/state/StateRealm.java
new file mode 100644 (file)
index 0000000..2436bad
--- /dev/null
@@ -0,0 +1,46 @@
+package org.simantics.document.server.state;
+
+import java.util.function.Function;
+
+import org.simantics.simulator.toolkit.StandardNodeManager;
+import org.simantics.simulator.toolkit.StandardRealm;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class StateRealm extends StandardRealm<StateNode, StateNodeManagerSupport> {
+
+       private static final Logger LOGGER = LoggerFactory.getLogger(StateRealm.class);
+
+       protected StateRealm(StateNodeManagerSupport engine, String id) {
+               super(engine, id);
+       }
+
+       @Override
+       public Logger getLogger() {
+               return LOGGER;
+       }
+
+       @Override
+       protected StandardNodeManager<StateNode, StateNodeManagerSupport> createManager() {
+               return new StateNodeManager(this, new StateRootNode());
+       }
+
+       @Override
+       public void asyncExec(Function fun) {
+               try {
+                       syncExec(fun);
+               } catch (InterruptedException e) {
+                       LOGGER.error("Execution interrupted.", e);
+               }
+       }
+
+       @Override
+       public void asyncExec(Runnable runnable) {
+               try {
+                       syncExec(runnable);
+               } catch (InterruptedException e) {
+                       LOGGER.error("Execution interrupted.", e);
+               }
+       }
+
+}