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