package org.simantics.modeling.scl.issue;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
@Override
public SCLIssueProvider getSCLIssueProvider() {
- return new SCLExpressionIssueProvider();
+ if (Boolean.getBoolean("org.simantics.scl.issues"))
+ return new SCLExpressionIssueProvider();
+ else
+ return new DummyIssueProvider();
}
}
+ public static class DummyIssueProvider implements SCLIssueProvider {
+ @Override
+ public void listenIssues(Runnable callback) {
+
+ }
+
+ @Override
+ public List<SCLIssuesTableEntry> getIssues() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void dispose() {
+
+ }
+ }
+
private static final Logger LOGGER = LoggerFactory.getLogger(SCLExpressionIssueProvider.class);
private boolean disposed = false;
private ComponentSyncListenerAdapter listener;
if (!graph.hasStatement(parameter))
return null;
- Variable componentVariable = Variables.getVariable(graph, parameter);
+ Variable componentVariable = Variables.getPossibleVariable(graph, parameter);
+ if (componentVariable == null) {
+ // Resource might be deleted already and therefore no URI available for variable building
+ return null;
+ }
Variable propertyVariable = componentVariable.getProperty(graph, parameter2);
Variable typeVariable = Variables.getVariable(graph, type);
}
@Override
- public void execute(ReadGraph graph, Set<Resource> newComponents) {
+ public void execute(ReadGraph graph, Set<Resource> newComponents) throws DatabaseException {
if (currentlyListening.isEmpty() && newComponents.isEmpty()) {
// we can stop here as nothing will change
return;
for (Resource addedComponent : addedComponents) {
SCLValueDisposableSyncListener listener = new SCLValueDisposableSyncListener(callback);
currentlyListening.put(addedComponent, listener);
- graph.asyncRequest(new SCLValueRequest(addedComponent), listener);
+ graph.syncRequest(new SCLValueRequest(addedComponent), listener);
}
}