import org.simantics.db.ReadGraph;
import org.simantics.db.common.request.UnaryRead;
import org.simantics.db.exception.DatabaseException;
+import org.simantics.scl.compiler.errors.Failable;
+import org.simantics.scl.compiler.errors.Failure;
+import org.simantics.scl.compiler.errors.Success;
+import org.simantics.scl.compiler.module.Module;
+import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;
+import org.simantics.scl.compiler.module.repository.ModuleRepository;
import org.simantics.scl.compiler.module.repository.UpdateListener;
import org.simantics.scl.compiler.source.ModuleSource;
-import org.simantics.scl.compiler.source.PrecompiledModuleSource;
import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOGGER = LoggerFactory.getLogger(OntologyModuleSourceRepository.class);
- static class ModuleSourceRequest extends UnaryRead<String, ModuleSource> {
+ static class ModuleRequest extends UnaryRead<String, Module> {
- public ModuleSourceRequest(String moduleName) {
+ public ModuleRequest(String moduleName) {
super(moduleName);
}
@Override
- public ModuleSource perform(ReadGraph graph) throws DatabaseException {
- return new PrecompiledModuleSource(new OntologyModule(graph, parameter), -1.0);
+ public Module perform(ReadGraph graph) throws DatabaseException {
+ return new OntologyModule(graph, parameter);
}
};
if(!moduleName.startsWith("http://"))
return null; // Don't do a graph request if this cannot be a resource
- try {
- return Simantics.getAvailableRequestProcessor().syncRequest(new ModuleSourceRequest(moduleName));
- } catch(DatabaseException e) {
- LOGGER.error("Failed to read ontology module " + moduleName + ".", e);
- return null;
- }
+ return new ModuleSource() {
+
+ @Override
+ public double getPriority() {
+ return -1.0;
+ }
+
+ @Override
+ public String getModuleName() {
+ return moduleName;
+ }
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return getClass().getClassLoader();
+ }
+
+ @Override
+ public Failable<Module> compileModule(ModuleRepository environment, UpdateListener listener,
+ ModuleCompilationOptions options) {
+ try {
+ return new Success<Module>(Simantics.getAvailableRequestProcessor().syncRequest(new ModuleRequest(moduleName)));
+ } catch(DatabaseException e) {
+ return new Failure(e);
+ }
+ }
+ };
}
@Override