]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/source/repository/FileModuleSourceRepository.java
805dd77f465b90b999ecc27aec7f3a3643842139
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / source / repository / FileModuleSourceRepository.java
1 package org.simantics.scl.compiler.source.repository;
2
3 import java.io.File;
4 import java.io.IOException;
5
6 import org.simantics.scl.compiler.module.ImportDeclaration;
7 import org.simantics.scl.compiler.module.repository.UpdateListener;
8 import org.simantics.scl.compiler.source.ClassModuleSource;
9 import org.simantics.scl.compiler.source.FileModuleSource;
10 import org.simantics.scl.compiler.source.ModuleSource;
11
12 import gnu.trove.procedure.TObjectProcedure;
13 import gnu.trove.set.hash.THashSet;
14
15 public class FileModuleSourceRepository extends AbstractModuleSourceRepository {
16     
17     private final File path;
18     private final ClassLoader classLoader;
19     private final THashSet<String> modules = new THashSet<String>();
20     
21     public FileModuleSourceRepository(File path, ClassLoader classLoader) throws IOException {
22         this.path = path;
23         this.classLoader = classLoader;
24         ModuleBrowsingUtil.collectModuleSourcesAt(modules, path);
25     }
26
27     @Override
28     public ModuleSource getModuleSource(String moduleName,
29             UpdateListener listener) {
30         if(!modules.contains(moduleName))
31             return null;
32         return new FileModuleSource(moduleName, classLoader, new File(path, moduleName + ".scl"), getBuiltinImports());
33     }
34
35     @Override
36     public void forAllModules(TObjectProcedure<String> procedure) {
37         modules.forEach(procedure);
38     }
39     
40     protected ImportDeclaration[] getBuiltinImports() {
41         return ClassModuleSource.DEFAULT_IMPORTS;
42     }
43
44     @Override
45     public void clear() {
46         
47     }
48 }