]> gerrit.simantics Code Review - simantics/platform.git/blob
5a4e93ce57eb707530acd90cb09bc4177b3e2107
[simantics/platform.git] /
1 package org.simantics.scl.compiler.source.repository;
2
3 import gnu.trove.procedure.TObjectProcedure;
4 import gnu.trove.set.hash.THashSet;
5
6 import java.io.File;
7 import java.io.IOException;
8
9 import org.simantics.scl.compiler.module.ImportDeclaration;
10 import org.simantics.scl.compiler.module.repository.UpdateListener;
11 import org.simantics.scl.compiler.source.ClassModuleSource;
12 import org.simantics.scl.compiler.source.FileModuleSource;
13 import org.simantics.scl.compiler.source.ModuleSource;
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 }