X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2Fissue%2FSCLExpressionIssueProvider.java;h=46142247f47855efcb3a78ca351568a3404d89da;hb=0d9b90834ce56b292c00b1a39850ed842c3e4d42;hp=fbba1546ffbc2a0e81a75c95bea69c6e290b9584;hpb=aca33ac9ec17d1555f6413edaa339ad3692e29bb;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/issue/SCLExpressionIssueProvider.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/issue/SCLExpressionIssueProvider.java index fbba1546f..46142247f 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/issue/SCLExpressionIssueProvider.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/issue/SCLExpressionIssueProvider.java @@ -12,12 +12,13 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.simantics.Simantics; +import org.simantics.db.AsyncReadGraph; import org.simantics.db.Disposable; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.common.procedure.adapter.AsyncListenerAdapter; import org.simantics.db.common.procedure.adapter.DisposableListener; import org.simantics.db.common.procedure.adapter.DisposableSyncListener; -import org.simantics.db.common.procedure.adapter.SyncListenerAdapter; import org.simantics.db.common.request.TernaryRead; import org.simantics.db.common.request.UnaryRead; import org.simantics.db.common.request.UniqueRead; @@ -145,7 +146,11 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider { 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); @@ -180,7 +185,7 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider { } } - private static class ComponentSyncListenerAdapter extends SyncListenerAdapter> implements Disposable { + private static class ComponentSyncListenerAdapter extends AsyncListenerAdapter> implements Disposable { private ConcurrentHashMap currentlyListening = new ConcurrentHashMap<>(); private boolean disposed; @@ -191,7 +196,7 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider { } @Override - public void execute(ReadGraph graph, Set newComponents) { + public void execute(AsyncReadGraph graph, Set newComponents) { if (currentlyListening.isEmpty() && newComponents.isEmpty()) { // we can stop here as nothing will change return;