]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.structural2/src/org/simantics/structural2/scl/AbstractCompileStructuralValueRequest.java
Variable optimizations for documents (Simupedia)
[simantics/platform.git] / bundles / org.simantics.structural2 / src / org / simantics / structural2 / scl / AbstractCompileStructuralValueRequest.java
index e4f08db102d0645dbfc2ea1acf64fd62e84797d8..c4b4e341fb85b2aa551612e028a2dafca387f06c 100644 (file)
@@ -7,13 +7,13 @@ import org.simantics.databoard.Bindings;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.common.procedure.adapter.TransientCacheListener;
+import org.simantics.db.common.request.PossibleIndexRoot;
 import org.simantics.db.common.request.ResourceRead2;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.scl.AbstractExpressionCompilationContext;
 import org.simantics.db.layer0.scl.AbstractExpressionCompilationRequest;
 import org.simantics.db.layer0.util.RuntimeEnvironmentRequest;
 import org.simantics.db.layer0.util.RuntimeEnvironmentRequest2;
-import org.simantics.db.layer0.variable.Variable;
 import org.simantics.layer0.Layer0;
 import org.simantics.scl.compiler.elaboration.expressions.EApply;
 import org.simantics.scl.compiler.elaboration.expressions.EConstant;
@@ -33,7 +33,7 @@ import org.simantics.structural2.scl.AbstractCompileStructuralValueRequest.Compi
  * 
  * @author Antti Villberg
  */
-abstract public class AbstractCompileStructuralValueRequest extends AbstractExpressionCompilationRequest<CompilationContext, Variable> {
+public abstract class AbstractCompileStructuralValueRequest extends AbstractExpressionCompilationRequest<CompilationContext, Object> {
     
     protected final Resource relation;
     
@@ -62,8 +62,10 @@ abstract public class AbstractCompileStructuralValueRequest extends AbstractExpr
         Layer0 L0 = Layer0.getInstance(graph);
         String valueType = graph.getPossibleRelatedValue(relation, L0.RequiresValueType, Bindings.STRING);
         if(valueType != null) {
+            Resource relationIndexRoot = graph.syncRequest(new PossibleIndexRoot(relation));
+            RuntimeEnvironment relationRuntimeEnvironment = relationIndexRoot != null ? graph.syncRequest(new RuntimeEnvironmentRequest(relationIndexRoot)) : context.runtimeEnvironment;
             try {
-                return Environments.getType(context.runtimeEnvironment.getEnvironment(), valueType);
+                return Environments.getType(relationRuntimeEnvironment.getEnvironment(), valueType);
             } catch (SCLExpressionCompilationException e) {
                 e.printStackTrace();
             }