1 package org.simantics.document.server.handler;
\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
13 public abstract class EventHandler extends AbstractEventHandler {
\r
15 protected abstract ServerResponse handle(ReadGraph graph, CommandContext parameters) throws DatabaseException;
\r
17 public CommandResult handle(final CommandContext parameters) {
\r
19 ServerResponse response = Simantics.getSession().syncRequest(new Read<ServerResponse>() {
\r
21 public ServerResponse perform(ReadGraph graph) throws DatabaseException {
\r
22 return handle(graph, parameters);
\r
26 if(response instanceof IDelayedResponse && !(((IDelayedResponse)response).hasRun())) {
\r
28 synchronized(response) {
\r
29 response.wait(20000);
\r
31 } catch (InterruptedException e) {
\r
32 e.printStackTrace();
\r
37 } catch (DatabaseException e) {
\r
38 e.printStackTrace();
\r
39 return new Error(e.getMessage()); // Return some error
\r