--- /dev/null
+package org.simantics.scl.compiler.top;\r
+\r
+import java.lang.reflect.Field;\r
+\r
+import org.simantics.scl.compiler.internal.codegen.writer.ExternalConstant;\r
+\r
+public class StandardModuleInitializer implements ModuleInitializer {\r
+ private final String moduleClassName; \r
+ private final ExternalConstant[] externalConstants;\r
+ \r
+ private StandardModuleInitializer(String moduleClassName,\r
+ ExternalConstant[] externalConstants) {\r
+ this.moduleClassName = moduleClassName;\r
+ this.externalConstants = externalConstants;\r
+ }\r
+\r
+ @Override\r
+ public void initializeModule(ClassLoader classLoader) throws Exception {\r
+ Class<?> clazz = classLoader.loadClass(moduleClassName.replace('/', '.'));\r
+ for(ExternalConstant ec : externalConstants) {\r
+ Field field = clazz.getField(ec.fieldName);\r
+ field.set(null, ec.value);\r
+ }\r
+ }\r
+ \r
+ public static ModuleInitializer create(String moduleClassName, ExternalConstant[] externalConstants) {\r
+ if(externalConstants.length == 0)\r
+ return null;\r
+ else\r
+ return new StandardModuleInitializer(moduleClassName, externalConstants);\r
+ }\r
+}\r