Improved exceptions & logging & debugging of GraphModuleSourceRepository 30/1530/3
authorjsimomaa <jani.simomaa@gmail.com>
Wed, 7 Mar 2018 10:34:42 +0000 (12:34 +0200)
committerJani Simomaa <jani.simomaa@semantum.fi>
Wed, 7 Mar 2018 11:40:55 +0000 (13:40 +0200)
refs #7804

Change-Id: Ia3fcd7f9e42e704d544382cd8257b035526addb6

bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java

index 3d767f520250e4c8d343fb55256183fd52bc4934..f3f5b917067a887a992b948a52760a3813b13f6e 100644 (file)
@@ -51,7 +51,7 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
             else
                 return Simantics.getAvailableRequestProcessor().syncRequest(request);
         } catch (DatabaseException e) {
-            LOGGER.error("Failed to read graph module " + moduleName + ".", e);
+            LOGGER.error("Failed to read graph module {}.",  moduleName, e);
             return null;
         }
     }
@@ -96,10 +96,15 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
         @Override
         public void exception(ReadGraph graph, Throwable t)
                 throws DatabaseException {
-            t.printStackTrace();
+            LOGGER.error("Could not listen {}", this, t);
             if(alreadyExecutedOnce && listener != null)
                 fireUpdate(graph);
         }
+
+        @Override
+        public String toString() {
+            return moduleName + " " + listener + " (" + alreadyExecutedOnce + ") [" + getClass().toString() + "]";
+        }
     };
     
     public static class GraphModuleSource extends StringModuleSource {
@@ -121,7 +126,7 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
             try {
                 Simantics.getSession().syncRequest(new WriteModuleSource(getModuleName(), newSourceText));
             } catch (DatabaseException e) {
-                e.printStackTrace();
+                LOGGER.error("Could not update {} with newSourceText {}", this, newSourceText);
             }
         }
         
@@ -197,8 +202,9 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
     
     @Override
     public void forAllModules(TObjectProcedure<String> procedure) {
+        THashSet<String> moduleURIs = null;
         try {
-            THashSet<String> moduleURIs = Simantics.getAvailableRequestProcessor().syncRequest(new Read<THashSet<String>>() {
+            moduleURIs = Simantics.getAvailableRequestProcessor().syncRequest(new Read<THashSet<String>>() {
                 @Override
                 public THashSet<String> perform(ReadGraph graph)
                         throws DatabaseException {
@@ -207,7 +213,7 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
             });
             moduleURIs.forEach(procedure);
         } catch (DatabaseException e) {
-            e.printStackTrace();
+            LOGGER.error("Could not execute procedure {} for all modules {}", procedure, String.valueOf(moduleURIs), e);
         }
     }