]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/RuntimeEnvironmentRequest2.java
Fix errors with procedural user components for computational values
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / util / RuntimeEnvironmentRequest2.java
index 4bbd480020141b5e602c9e7f73fb1b8170410995..c51428f2f8087758621d9396e6d6bad5f3cbd138 100644 (file)
@@ -1,8 +1,6 @@
 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;
@@ -26,13 +24,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<Resource, Resource, RuntimeEnvironment> {
 
-    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 +58,7 @@ public class RuntimeEnvironmentRequest2 extends BinaryRead<Resource, Resource, R
         }
     };
 
-    final public static void getRuntimeEnvironment(EnvironmentSpecification environmentSpecification, Listener<RuntimeEnvironment> callback, UpdateListenerImpl listener) {
+    public static void getRuntimeEnvironment(EnvironmentSpecification environmentSpecification, Listener<RuntimeEnvironment> callback, UpdateListenerImpl listener) {
 
         try {
 
@@ -111,16 +113,23 @@ public class RuntimeEnvironmentRequest2 extends BinaryRead<Resource, Resource, R
         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)
             environmentSpecification.importModule(graph.getURI(mainModule), "");
 
         return graph.syncRequest(new ParametrizedPrimitiveRead<EnvironmentSpecification, RuntimeEnvironment>(environmentSpecification) {
+
             UpdateListenerImpl sclListener;
+
             @Override
             public void register(ReadGraph graph, Listener<RuntimeEnvironment> procedure) {
 
@@ -155,4 +164,4 @@ public class RuntimeEnvironmentRequest2 extends BinaryRead<Resource, Resource, R
         return 31*getClass().hashCode() + super.hashCode();
     }
 
-}
\ No newline at end of file
+}