]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/runtime/RuntimeEnvironmentImpl.java
migrated to svn revision 33108
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / runtime / RuntimeEnvironmentImpl.java
1 package org.simantics.scl.compiler.runtime;
2
3 import org.simantics.scl.compiler.environment.Environment;
4
5 import gnu.trove.map.hash.THashMap;
6
7 public class RuntimeEnvironmentImpl implements RuntimeEnvironment {
8
9     private final Environment environment;
10     private final THashMap<String, RuntimeModule> runtimeModuleMap;
11     private final ClassLoader parentClassLoader;
12     private MutableClassLoader classLoader;
13     
14     public RuntimeEnvironmentImpl(Environment environment,
15             ClassLoader parentClassLoader,
16             THashMap<String, RuntimeModule> runtimeModuleMap) {
17         this.environment = environment;
18         this.parentClassLoader = parentClassLoader;
19         this.runtimeModuleMap = runtimeModuleMap;
20     }
21
22     @Override
23     public Environment getEnvironment() {
24         return environment;
25     }
26
27     @Override
28     public RuntimeModule getRuntimeModule(String name) {
29         return runtimeModuleMap.get(name);
30     }
31
32     @Override
33     public synchronized MutableClassLoader getMutableClassLoader() {
34         if(classLoader == null)
35             classLoader = new ExpressionClassLoader(
36                     parentClassLoader, runtimeModuleMap, "Expression");
37         return classLoader;
38     }
39
40 }