X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fscl%2FCompileValueRequest.java;h=e0ed90a8977472ed5061c784e42f1c3e7519282b;hb=e3446802a81064942a7cbfea0c577e21ae5ae658;hp=e1804d790fc327c6713cc5e7bdf41b78b84c8b91;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/CompileValueRequest.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/CompileValueRequest.java index e1804d790..e0ed90a89 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/CompileValueRequest.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/CompileValueRequest.java @@ -25,7 +25,7 @@ import org.simantics.scl.runtime.function.Function1; * * @author Tuukka Lehtonen */ -public class CompileValueRequest extends AbstractExpressionCompilationRequest { +public class CompileValueRequest extends AbstractExpressionCompilationRequest { public static class CompilationContext extends AbstractExpressionCompilationContext { public CompilationContext(RuntimeEnvironment runtimeEnvironment) { @@ -34,27 +34,23 @@ public class CompileValueRequest extends AbstractExpressionCompilationRequest exp = graph.syncRequest(new CompileValueRequest(graph, context), - TransientCacheListener.>instance()); + Function1 exp = graph.syncRequest(new CompileValueRequest(graph, context), + TransientCacheListener.instance()); sclContext.put("graph", graph); return exp.apply(context); } catch (DatabaseException e) { @@ -66,6 +62,22 @@ public class CompileValueRequest extends AbstractExpressionCompilationRequest compile(ReadGraph graph, Resource literal, Resource predicate) throws DatabaseException { + SCLContext sclContext = SCLContext.getCurrent(); + Object oldGraph = sclContext.get("graph"); + try { + Function1 exp = graph.syncRequest(new CompileValueRequest(literal, predicate), TransientCacheListener.instance()); + sclContext.put("graph", graph); + return exp; + } catch (DatabaseException e) { + throw (DatabaseException)e; + } catch (Throwable t) { + throw new DatabaseException(t); + } finally { + sclContext.put("graph", oldGraph); + } + } + @Override protected String getExpressionText(ReadGraph graph) throws DatabaseException { @@ -117,4 +129,36 @@ public class CompileValueRequest extends AbstractExpressionCompilationRequest