X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FRuntimeEnvironmentRequest2.java;h=28d18e50772ece99c914c7069ce73ad89e3bd9e6;hp=4bbd480020141b5e602c9e7f73fb1b8170410995;hb=1cd631466bc35e05bc585999b2f325f148cd5629;hpb=8561e498009a25473db94b0e667866aa79de90b1 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/RuntimeEnvironmentRequest2.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/RuntimeEnvironmentRequest2.java index 4bbd48002..28d18e507 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/RuntimeEnvironmentRequest2.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/RuntimeEnvironmentRequest2.java @@ -1,14 +1,13 @@ package org.simantics.db.layer0.util; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.request.BinaryRead; import org.simantics.db.common.request.ObjectsWithType; import org.simantics.db.common.request.ParametrizedPrimitiveRead; +import org.simantics.db.common.utils.CommonDBUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.internal.SimanticsInternal; import org.simantics.db.procedure.Listener; @@ -26,13 +25,17 @@ import org.simantics.scl.runtime.SCLContext; * * @author Hannu Niemistö * @author Antti Villberg + * + * Difference between this class and {@code RuntimeEnvironmentRequest} is an additional parameter + * that is typically some component type. All modules under this resource are added to the environment + * in addition to the SCLMain of the root resource. */ public class RuntimeEnvironmentRequest2 extends BinaryRead { - public RuntimeEnvironmentRequest2(Resource parameter, Resource parameter2) { - super(parameter, parameter2); + public RuntimeEnvironmentRequest2(Resource componentType, Resource indexRoot) { + super(componentType, indexRoot); } - + protected void fillEnvironmentSpecification(EnvironmentSpecification environmentSpecification) { } @@ -56,7 +59,7 @@ public class RuntimeEnvironmentRequest2 extends BinaryRead callback, UpdateListenerImpl listener) { + public static void getRuntimeEnvironment(EnvironmentSpecification environmentSpecification, Listener callback, UpdateListenerImpl listener) { try { @@ -111,16 +114,29 @@ public class RuntimeEnvironmentRequest2 extends BinaryRead sclModules = graph.syncRequest(new ObjectsWithType(parameter, L0.ConsistsOf, L0.SCLModule)); - for (Resource sclModule : sclModules) - environmentSpecification.importModule(graph.getURI(sclModule), ""); + if (parameter != null) { + Collection sclModules = graph.syncRequest(new ObjectsWithType(parameter, L0.ConsistsOf, L0.SCLModule)); + for (Resource sclModule : sclModules) { + environmentSpecification.importModule(graph.getURI(sclModule), ""); + } + } else { + // `parameter` is optional and can be null for e.g. procedural user components + } - Resource mainModule = Layer0Utils.getPossibleChild(graph, parameter2, "SCLMain"); - if(mainModule != null) + Resource mainModule = CommonDBUtils.getPossibleChild(graph, parameter2, "SCLMain"); + if(mainModule != null) { environmentSpecification.importModule(graph.getURI(mainModule), ""); + for(Resource l : graph.getObjects(parameter2, L0.IsLinkedTo)) { + mainModule = CommonDBUtils.getPossibleChild(graph, l, "SCLMain"); + if(mainModule != null) + environmentSpecification.importModule(graph.getURI(mainModule), ""); + } + } return graph.syncRequest(new ParametrizedPrimitiveRead(environmentSpecification) { + UpdateListenerImpl sclListener; + @Override public void register(ReadGraph graph, Listener procedure) { @@ -155,4 +171,4 @@ public class RuntimeEnvironmentRequest2 extends BinaryRead