]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/source/ClassModuleSource.java
New SCL completion implementation
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / source / ClassModuleSource.java
1 package org.simantics.scl.compiler.source;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5
6 import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidator;
7 import org.simantics.scl.compiler.internal.codegen.types.RuntimeJavaReferenceValidator;
8 import org.simantics.scl.compiler.module.ImportDeclaration;
9 import org.simantics.scl.compiler.module.repository.UpdateListener;
10
11 public class ClassModuleSource extends EncodedTextualModuleSource {
12     private final Class<?> clazz;
13     private final String path;
14     private final ClassLoader classLoader;
15     private final ImportDeclaration[] builtinImports;
16     
17     public ClassModuleSource(String moduleName, Class<?> clazz, ClassLoader classLoader, String path, ImportDeclaration[] builtinImports) {
18         super(moduleName);
19         this.clazz = clazz;
20         this.classLoader = classLoader;
21         this.path = path;
22         this.builtinImports = builtinImports;
23     }
24
25     @Override
26     protected InputStream getSourceStream(UpdateListener listener)
27             throws IOException {
28         return clazz.getResourceAsStream(path);
29     }
30
31     @Override
32     protected JavaReferenceValidator<?, ?, ?, ?> getJavaReferenceValidator() {
33         return new RuntimeJavaReferenceValidator(classLoader);
34     }
35     
36     @Override
37     public ImportDeclaration[] getBuiltinImports(UpdateListener listener) {
38         return builtinImports;
39     }
40 }