X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2Fissue%2FSCLExpressionIssueProvider.java;h=ccffb8e775daa086659fd17f8d5a7f9fc9f2fbca;hb=refs%2Fchanges%2F93%2F4893%2F1;hp=46142247f47855efcb3a78ca351568a3404d89da;hpb=9f0fd59be54719b1fe9322d8fd37e4950857308c;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 46142247f..ccffb8e77 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 @@ -1,6 +1,7 @@ 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; @@ -12,13 +13,12 @@ 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; @@ -46,11 +46,31 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider { @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 getIssues() { + return Collections.emptyList(); + } + + @Override + public void dispose() { + + } + } + private static final Logger LOGGER = LoggerFactory.getLogger(SCLExpressionIssueProvider.class); private boolean disposed = false; private ComponentSyncListenerAdapter listener; @@ -185,7 +205,7 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider { } } - private static class ComponentSyncListenerAdapter extends AsyncListenerAdapter> implements Disposable { + private static class ComponentSyncListenerAdapter extends SyncListenerAdapter> implements Disposable { private ConcurrentHashMap currentlyListening = new ConcurrentHashMap<>(); private boolean disposed; @@ -196,7 +216,7 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider { } @Override - public void execute(AsyncReadGraph graph, Set newComponents) { + public void execute(ReadGraph graph, Set newComponents) throws DatabaseException { if (currentlyListening.isEmpty() && newComponents.isEmpty()) { // we can stop here as nothing will change return; @@ -217,7 +237,7 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider { 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); } }