X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.common%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fcommon%2Futils%2FRequestUtil.java;h=d1256444ba7f2ce52c51680320b556bb27bb94b3;hp=3ab4d2644f567ae5e054c7fa02d600e821398706;hb=ad864a5ed509612375e2a904422e18287dfd5cc5;hpb=08a0f204a04784de341dda0612ee899bedcc1417 diff --git a/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/RequestUtil.java b/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/RequestUtil.java index 3ab4d2644..d1256444b 100644 --- a/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/RequestUtil.java +++ b/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/RequestUtil.java @@ -8,6 +8,7 @@ import org.simantics.db.ReadGraph; import org.simantics.db.Session; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.procedure.Listener; import org.simantics.db.procedure.Procedure; import org.simantics.db.request.Read; @@ -95,9 +96,15 @@ public final class RequestUtil { public R perform(ReadGraph graph) throws DatabaseException { if (state.compareAndSet(0, 1)) { release(); - return wrappedProcedure != null - ? graph.syncRequest(wrappedRequest, wrappedProcedure) - : graph.syncRequest(wrappedRequest); + if(wrappedProcedure != null) { + if(wrappedProcedure instanceof Listener) { + return graph.syncRequest(wrappedRequest, (Listener)wrappedProcedure); + } else { + return graph.syncRequest(wrappedRequest, wrappedProcedure); + } + } else { + return graph.syncRequest(wrappedRequest); + } } else { if (TRACE_TIMEOUT) System.out.println("[" + System.currentTimeMillis() + "] canceling execution of request " + wrappedRequest + ", startup timed out");