X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.db%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fdb%2FSCLFunctions.java;h=92bbb74268865f88ba359803b248ac1304b5d774;hb=refs%2Fheads%2Fprivate%2Fantin_tyomaa;hp=e20dfc471ad9ea28831463f00bc9bfc220d8704a;hpb=342a2b006b88330280060c16c2ab50374468a4c6;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.db/src/org/simantics/scl/db/SCLFunctions.java b/bundles/org.simantics.scl.db/src/org/simantics/scl/db/SCLFunctions.java index e20dfc471..92bbb7426 100644 --- a/bundles/org.simantics.scl.db/src/org/simantics/scl/db/SCLFunctions.java +++ b/bundles/org.simantics.scl.db/src/org/simantics/scl/db/SCLFunctions.java @@ -3,6 +3,7 @@ package org.simantics.scl.db; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Callable; import org.cojen.classfile.TypeDesc; import org.simantics.Simantics; @@ -151,6 +152,18 @@ public class SCLFunctions { SCLContext.pop(); } } + + public static void runWithGraph(Object graph, Runnable r) { + final SCLContext context = SCLContext.getCurrent(); + SCLContext.push(context); + Object oldGraph = context.put(GRAPH, graph); + try { + r.run(); + } finally { + context.put(GRAPH, oldGraph); + SCLContext.pop(); + } + } private static Object[] NO_ARGS = new Object[] { Tuple0.INSTANCE };