]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.server/src/org/simantics/document/server/handler/EventHandler.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / handler / EventHandler.java
1 package org.simantics.document.server.handler;\r
2 \r
3 import org.simantics.Simantics;\r
4 import org.simantics.db.ReadGraph;\r
5 import org.simantics.db.exception.DatabaseException;\r
6 import org.simantics.db.request.Read;\r
7 import org.simantics.document.server.io.CommandContext;\r
8 import org.simantics.document.server.io.CommandResult;\r
9 import org.simantics.document.server.serverResponse.Error;\r
10 import org.simantics.document.server.serverResponse.IDelayedResponse;\r
11 import org.simantics.document.server.serverResponse.ServerResponse;\r
12 \r
13 public abstract class EventHandler extends AbstractEventHandler {\r
14         \r
15     protected abstract ServerResponse handle(ReadGraph graph, CommandContext parameters) throws DatabaseException;\r
16 \r
17     public CommandResult handle(final CommandContext parameters) {\r
18         try {\r
19             ServerResponse response = Simantics.getSession().syncRequest(new Read<ServerResponse>() {\r
20                 @Override\r
21                 public ServerResponse perform(ReadGraph graph) throws DatabaseException {\r
22                     return handle(graph, parameters);\r
23                 }\r
24             });\r
25 \r
26             if(response instanceof IDelayedResponse && !(((IDelayedResponse)response).hasRun())) {\r
27                 try {\r
28                     synchronized(response) {\r
29                         response.wait(20000);\r
30                     }\r
31                 } catch (InterruptedException e) {\r
32                     e.printStackTrace();\r
33                 }\r
34             }\r
35             \r
36             return response;\r
37         } catch (DatabaseException e) {\r
38             e.printStackTrace();\r
39             return new Error(e.getMessage()); // Return some error\r
40         }\r
41     }\r
42 \r
43 }\r