]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java
Improved exceptions & logging & debugging of GraphModuleSourceRepository
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / scl / GraphModuleSourceRepository.java
index b6d6caefd25c6a93de3eca1990e39fdb62cfbbd6..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);
             }
         }
         
@@ -185,7 +190,11 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
         Collection<Resource> ontologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE);
         for (Resource ontology : ontologies) {
             for(Resource module : ModelingUtils.searchByType(graph, ontology, L0.SCLModule))
-                result.add(graph.getURI(module));
+                try {
+                    result.add(graph.getURI(module));
+                } catch(DatabaseException e) {
+                    LOGGER.error("Failed to find uri for " + module + ".");
+                }
         }
         
         return result;
@@ -193,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 {
@@ -203,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);
         }
     }