]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/scl/issue/SCLExpressionIssueProvider.java
Disable SCL Issue provider by default
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / scl / issue / SCLExpressionIssueProvider.java
index 46142247f47855efcb3a78ca351568a3404d89da..ccffb8e775daa086659fd17f8d5a7f9fc9f2fbca 100644 (file)
@@ -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<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;
@@ -185,7 +205,7 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider {
         }
     }
     
-    private static class ComponentSyncListenerAdapter extends AsyncListenerAdapter<Set<Resource>> implements Disposable {
+    private static class ComponentSyncListenerAdapter extends SyncListenerAdapter<Set<Resource>> implements Disposable {
 
         private ConcurrentHashMap<Resource, SCLValueDisposableSyncListener> currentlyListening = new ConcurrentHashMap<>();
         private boolean disposed;
@@ -196,7 +216,7 @@ public class SCLExpressionIssueProvider implements SCLIssueProvider {
         }
         
         @Override
-        public void execute(AsyncReadGraph 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;
@@ -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);
             }
         }