]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.common/src/org/simantics/db/common/request/AsyncReadRequest.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / request / AsyncReadRequest.java
index 7f35618f871710a3ef77e71b33dbfa310e8d2ebd..4b92bbea1e0ac239dfd6102ad4268b1b7ac45fd7 100644 (file)
@@ -12,6 +12,7 @@
 package org.simantics.db.common.request;
 
 import org.simantics.db.AsyncReadGraph;
+import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.procedure.AsyncProcedure;
 import org.simantics.db.request.AsyncRead;
 
@@ -19,8 +20,12 @@ public abstract class AsyncReadRequest implements AsyncRead<Object> {
 
     @Override
     final public void perform(AsyncReadGraph graph, AsyncProcedure<Object> procedure) {
-        run(graph);
-        procedure.execute(graph, null);
+        try {
+            run(graph);
+            procedure.execute(graph, null);
+        } catch (DatabaseException e) {
+            procedure.exception(graph, e);
+        }
     }
     
     @Override
@@ -33,6 +38,6 @@ public abstract class AsyncReadRequest implements AsyncRead<Object> {
        return hashCode();
     }
     
-    public abstract void run(AsyncReadGraph graph);
+    public abstract void run(AsyncReadGraph graph) throws DatabaseException;
 
 }