]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/BlockingAsyncProcedure.java
Wrong graph was used when performing async query from session
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / BlockingAsyncProcedure.java
index ecb66ff91e3ea5df7aea462e57e5d578608ee970..8f96bb9e6d3a51a48c7b98baa40f962fc83f5617 100644 (file)
@@ -18,19 +18,19 @@ import org.simantics.db.impl.graph.ReadGraphImpl;
 import org.simantics.db.impl.query.AsyncReadEntry;
 import org.simantics.db.impl.query.PendingTaskSupport;
 import org.simantics.db.procedure.AsyncProcedure;
 import org.simantics.db.impl.query.AsyncReadEntry;
 import org.simantics.db.impl.query.PendingTaskSupport;
 import org.simantics.db.procedure.AsyncProcedure;
-
+import org.simantics.db.request.AsyncRead;
 public class BlockingAsyncProcedure<Result> implements AsyncProcedure<Result> {
 
     private static final Object NO_RESULT = new Object();
 
 public class BlockingAsyncProcedure<Result> implements AsyncProcedure<Result> {
 
     private static final Object NO_RESULT = new Object();
 
-    public final Object key;
-    public final ReadGraphImpl queryGraph;
-    public final ReadGraphImpl callerGraph;
-    public final AsyncProcedure<Result> procedure;
-    public PendingTaskSupport pendingTaskSupport;
-    public final boolean needsToBlock;
-    public Object result = NO_RESULT;
-    public Throwable exception = null;
+    private final Object key;
+    private final ReadGraphImpl queryGraph;
+    private final ReadGraphImpl callerGraph;
+    private final AsyncProcedure<Result> procedure;
+    private PendingTaskSupport pendingTaskSupport;
+    private final boolean needsToBlock;
+    private Object result = NO_RESULT;
+    private Throwable exception = null;
 
     private ReadGraphImpl queryGraph() {
         return queryGraph;
 
     private ReadGraphImpl queryGraph() {
         return queryGraph;
@@ -147,5 +147,33 @@ public class BlockingAsyncProcedure<Result> implements AsyncProcedure<Result> {
         }
 
     }
         }
 
     }
+    
+    public void print() {
+        System.err.println("BlockingAsyncProcedure");
+        System.err.println("-key: " + key);
+        System.err.println("-queryGraph: " + queryGraph);
+        System.err.println("-callerGraph: " + callerGraph);
+        System.err.println("-procedure: " + procedure);
+        System.err.println("-pendingTaskSupport: " + pendingTaskSupport);
+        System.err.println("-result: " + result);
+        System.err.println("-exception: " + exception);
+    }
+    
+    public Result performSync(AsyncRead<Result> request) throws DatabaseException {
+        try {
+            request.perform(queryGraph, this);
+        } finally {
+            dec();
+        }
+        return get();
+    }
+
+    public void performAsync(AsyncRead<Result> request) throws DatabaseException {
+        try {
+            request.perform(queryGraph, this);
+        } finally {
+            dec();
+        }
+    }
 
 }
 
 }