]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/repository/ModuleRepository.java
Merge remote-tracking branch 'origin/master' into private/antti2
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / repository / ModuleRepository.java
index 8a86c5ccce36ecef59326e7abcd32a558d7e27ea..78dfa8f886b3de9ed68648b7dbced730392a108a 100644 (file)
@@ -3,7 +3,9 @@ package org.simantics.scl.compiler.module.repository;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
@@ -52,6 +54,7 @@ public class ModuleRepository {
     private final ModuleRepository parentRepository;
     private final ModuleSourceRepository sourceRepository;
     private ConcurrentHashMap<String, ModuleEntry> moduleCache = new ConcurrentHashMap<String, ModuleEntry>();
+    public Set<RuntimeEnvironment> runtimeEnvironments = new HashSet<RuntimeEnvironment>();
     
     private static final ThreadLocal<THashSet<String>> PENDING_MODULES = new ThreadLocal<THashSet<String>>();
     
@@ -395,7 +398,9 @@ public class ModuleRepository {
         THashMap<String, Module> moduleMap = mapEntriesToModules(entries);
         Environment environment = createEnvironment(moduleMap, imports);
         THashMap<String, RuntimeModule> runtimeModuleMap = mapEntriesToRuntimeModules(entries);
-        return new RuntimeEnvironmentImpl(environment, parentClassLoader, runtimeModuleMap);
+        RuntimeEnvironmentImpl result = new RuntimeEnvironmentImpl(environment, parentClassLoader, runtimeModuleMap);
+        runtimeEnvironments.add(result);
+        return result;
     }
     
     private static Environment createEnvironment(
@@ -505,7 +510,7 @@ public class ModuleRepository {
         if (moduleCache != null)
             for (ModuleEntry entry : moduleCache.values())
                 entry.dispose();
-        moduleCache = null;
+        moduleCache = new ConcurrentHashMap<String, ModuleEntry>();
     }
 
     /**
@@ -530,6 +535,10 @@ public class ModuleRepository {
     public void setAdvisor(ModuleCompilationOptionsAdvisor advisor) {
         this.advisor = advisor;
     }
+    
+    public Set<RuntimeEnvironment> getRuntimeEnvironments() {
+        return runtimeEnvironments;
+    }
 
 }
  
\ No newline at end of file