X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2FGraphModuleSourceRepository.java;h=a70844cd375c8956adb593cb71406e92d782e963;hp=3d767f520250e4c8d343fb55256183fd52bc4934;hb=4af526406642ed67a61c7cae4edc673a21aec8f5;hpb=92faf11646c0b547de0b609adde82aa11d1282ca diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java index 3d767f520..a70844cd3 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java @@ -12,9 +12,12 @@ import org.simantics.db.common.request.WriteRequest; import org.simantics.db.exception.DatabaseException; import org.simantics.db.procedure.SyncListener; import org.simantics.db.request.Read; +import org.simantics.db.request.ReadExt; +import org.simantics.db.request.RequestFlags; import org.simantics.layer0.Layer0; import org.simantics.modeling.ModelingUtils; import org.simantics.modeling.internal.Activator; +import org.simantics.modeling.scl.ontologymodule.OntologyModuleSourceRepository; import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidatorFactory; import org.simantics.scl.compiler.module.repository.UpdateListener; import org.simantics.scl.compiler.module.repository.UpdateListener.Observable; @@ -51,7 +54,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 +99,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 +129,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); } } @@ -131,6 +139,29 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { } } + static class PossibleResourceIU extends UnaryRead implements ReadExt { + + public PossibleResourceIU(String parameter) { + super(parameter); + } + + @Override + public Resource perform(ReadGraph graph) throws DatabaseException { + return graph.getPossibleResource(parameter); + } + + @Override + public boolean isImmutable(ReadGraph graph) throws DatabaseException { + return false; + } + + @Override + public int getType() { + return RequestFlags.IMMEDIATE_UPDATE; + } + + } + static class ReadModuleSource extends UnaryRead { public ReadModuleSource(String moduleName) { super(moduleName); @@ -138,7 +169,7 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { @Override public ModuleSource perform(ReadGraph graph) throws DatabaseException { - Resource moduleResource = graph.getPossibleResource(parameter); + Resource moduleResource = graph.syncRequest(new PossibleResourceIU(parameter)); if(moduleResource == null) return null; Layer0 L0 = Layer0.getInstance(graph); @@ -197,8 +228,9 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { @Override public void forAllModules(TObjectProcedure procedure) { + THashSet moduleURIs = null; try { - THashSet moduleURIs = Simantics.getAvailableRequestProcessor().syncRequest(new Read>() { + moduleURIs = Simantics.getAvailableRequestProcessor().syncRequest(new Read>() { @Override public THashSet perform(ReadGraph graph) throws DatabaseException { @@ -207,7 +239,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); } }