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;
fillEnvironmentSpecification(environmentSpecification);
Layer0 L0 = Layer0.getInstance(graph);
- Collection<Resource> sclModules = graph.syncRequest(new ObjectsWithType(parameter, L0.ConsistsOf, L0.SCLModule));
- for (Resource sclModule : sclModules)
- environmentSpecification.importModule(graph.getURI(sclModule), "");
+ if (parameter != null) {
+ Collection<Resource> 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, RuntimeEnvironment>(environmentSpecification) {