X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FAsyncMultiReadEntry.java;h=1791c50acccb37eb0fb41dbf4c3c149e0fc1c6d7;hb=5d26dc0201bd7fafbaafa4f74ff1a10929a14e5b;hp=6f718f1fe4d2407cb92ee0cbd445e3dd2e1d3382;hpb=d0e8f57df83c175bac2098412ee71646fb9ff0e9;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncMultiReadEntry.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncMultiReadEntry.java index 6f718f1fe..1791c50ac 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncMultiReadEntry.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncMultiReadEntry.java @@ -14,6 +14,7 @@ package org.simantics.db.impl.query; import java.util.ArrayList; import org.simantics.db.AsyncReadGraph; +import org.simantics.db.common.GraphSemaphore; import org.simantics.db.exception.DatabaseException; import org.simantics.db.impl.graph.ReadGraphImpl; import org.simantics.db.procedure.AsyncMultiProcedure; @@ -88,23 +89,37 @@ final public class AsyncMultiReadEntry extends CacheEntryBase() { + try { - @Override - public void execute(AsyncReadGraph graph, T result) { - addOrSet(result); - } + GraphSemaphore s = new GraphSemaphore(graph, 0); - public void finished(AsyncReadGraph graph) { - finish(graph); - }; + request.perform(graph , new AsyncMultiProcedure() { - @Override - public void exception(AsyncReadGraph graph, Throwable t) { - except(t); - } + @Override + public void execute(AsyncReadGraph graph, T result) { + addOrSet(result); + } - }); + public void finished(AsyncReadGraph graph) { + finish(graph); + s.release(); + }; + + @Override + public void exception(AsyncReadGraph graph, Throwable t) { + except(t); + s.release(); + } + + }); + + s.waitFor(1); + + } catch (Throwable t) { + + except(t); + + } }