--- /dev/null
+package org.simantics.scl.compiler.source;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+
+import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidator;
+import org.simantics.scl.compiler.internal.codegen.types.RuntimeJavaReferenceValidator;
+import org.simantics.scl.compiler.module.repository.UpdateListener;
+
+public class StringModuleSource extends TextualModuleSource {
+ private final String moduleText;
+ private final ClassLoader classLoader;
+
+ public StringModuleSource(String moduleName, ClassLoader classLoader, String moduleText) {
+ super(moduleName);
+ this.classLoader = classLoader;
+ this.moduleText = moduleText;
+ }
+
+ public StringModuleSource(String moduleName, String moduleText) {
+ this(moduleName, StringModuleSource.class.getClassLoader(), moduleText);
+ }
+
+ @Override
+ protected Reader getSourceReader(UpdateListener listener)
+ throws IOException {
+ return new StringReader(moduleText);
+ }
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return classLoader;
+ }
+
+ @Override
+ protected JavaReferenceValidator<?, ?, ?, ?> getJavaReferenceValidator() {
+ return new RuntimeJavaReferenceValidator(getClassLoader());
+ }
+}