import org.simantics.scl.compiler.top.SCLCompilerConfiguration;
import org.simantics.scl.compiler.top.ValueNotFound;
import org.simantics.scl.compiler.types.Types;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import gnu.trove.map.hash.THashMap;
import gnu.trove.map.hash.TObjectLongHashMap;
* @author Hannu Niemistö
*/
public class ModuleRepository {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ModuleRepository.class);
+
private final ModuleRepository parentRepository;
private final ModuleSourceRepository sourceRepository;
private ConcurrentHashMap<String, ModuleEntry> moduleCache = new ConcurrentHashMap<String, ModuleEntry>();
if(moduleCache.get(moduleName) == this) {
moduleCache.remove(moduleName);
if(SCLCompilerConfiguration.TRACE_MODULE_UPDATE) {
- System.out.println("Invalidate " + moduleName);
+ LOGGER.info("Invalidate " + moduleName);
for(UpdateListener l : listenersCopy)
- System.out.println(" " + l);
+ LOGGER.info(" " + l);
}
for(UpdateListener l : listenersCopy)
if(!l.stopListening())
compilationResult = DoesNotExist.getInstance();
else {
if(SCLCompilerConfiguration.TRACE_MODULE_UPDATE)
- System.out.println("Compile " + source);
+ LOGGER.info("Compile " + source);
beginModuleCompilation(moduleName);
compilationResult = source.compileModule(ModuleRepository.this, this, advisor == null ? null : advisor.getOptions(moduleName));
finishModuleCompilation(moduleName);
return getModule(moduleName, null);
}
+ public void update(String moduleName) {
+ getModuleEntry(moduleName, null).notifyAboutUpdate();
+ }
+
public Failable<RuntimeModule> getRuntimeModule(String moduleName, UpdateListener listener) {
return getModuleEntry(moduleName, listener).getRuntimeModule();
}