]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/top/StandardModuleInitializer.java
Merge commit '8e4e41fa135641b23f68e205832e0696951c5f63'
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / top / StandardModuleInitializer.java
1 package org.simantics.scl.compiler.top;\r
2 \r
3 import java.lang.reflect.Field;\r
4 \r
5 import org.simantics.scl.compiler.internal.codegen.writer.ExternalConstant;\r
6 \r
7 public class StandardModuleInitializer implements ModuleInitializer {\r
8     private final String moduleClassName; \r
9     private final ExternalConstant[] externalConstants;\r
10     \r
11     private StandardModuleInitializer(String moduleClassName,\r
12             ExternalConstant[] externalConstants) {\r
13         this.moduleClassName = moduleClassName;\r
14         this.externalConstants = externalConstants;\r
15     }\r
16 \r
17     @Override\r
18     public void initializeModule(ClassLoader classLoader) throws Exception {\r
19         Class<?> clazz = classLoader.loadClass(moduleClassName.replace('/', '.'));\r
20         for(ExternalConstant ec : externalConstants) {\r
21             Field field = clazz.getField(ec.fieldName);\r
22             field.set(null, ec.value);\r
23         }\r
24     }\r
25     \r
26     public static ModuleInitializer create(String moduleClassName, ExternalConstant[] externalConstants) {\r
27         if(externalConstants.length == 0)\r
28             return null;\r
29         else\r
30             return new StandardModuleInitializer(moduleClassName, externalConstants);\r
31     }\r
32 }\r