X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fprofile%2FVertexSymbolStyle.java;h=913ba201222bf705978d8abae418976475c7d935;hb=ed851f634703e8820e1f5ec93ced0365506630e6;hp=96ff439235971ec19438150e36ff8f2cb019b68b;hpb=5ef17426c5fb415e0e536d70ea870db90938ebe6;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network/src/org/simantics/district/network/profile/VertexSymbolStyle.java b/org.simantics.district.network/src/org/simantics/district/network/profile/VertexSymbolStyle.java index 96ff4392..913ba201 100644 --- a/org.simantics.district.network/src/org/simantics/district/network/profile/VertexSymbolStyle.java +++ b/org.simantics.district.network/src/org/simantics/district/network/profile/VertexSymbolStyle.java @@ -6,7 +6,6 @@ import org.simantics.db.Resource; import org.simantics.db.common.procedure.adapter.TransientCacheListener; import org.simantics.db.common.request.ResourceRead; import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.exception.PendingVariableException; import org.simantics.district.network.ontology.DistrictNetworkResource; import org.simantics.layer0.Layer0; import org.simantics.scenegraph.INode; @@ -19,30 +18,39 @@ import org.simantics.scl.runtime.function.FunctionImpl1; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Deprecated public class VertexSymbolStyle extends ThrottledStyleBase { private static final Logger LOGGER = LoggerFactory.getLogger(VertexSymbolStyle.class); - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public String calculateThrottledStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource groupItem) throws DatabaseException { - Function symbolFunction = getSymbolFunction(graph, entry); - if (symbolFunction == null) - return null; - - try { - return (String) Simantics.applySCLRead(graph, symbolFunction, groupItem); - } catch (PendingVariableException e) { - throw e; - } catch (Exception e) { - LOGGER.error("Getting dynamic symbol for " + groupItem + " (" + graph.getPossibleRelatedValue(groupItem, Layer0.getInstance(graph).HasName) + ") failed", e); - return null; - } - } + @Override + public String calculateThrottledStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource groupItem) throws DatabaseException { + return calculateStyle(graph, entry, groupItem); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public static String calculateStyle(ReadGraph graph, Resource entry, Resource groupItem) throws DatabaseException { + // Prevent PendingVariableExceptions from coming through + boolean wasSynchronous = graph.setSynchronous(true); + try { + Function symbolFunction = getSymbolFunction(graph, entry); + if (symbolFunction == null) + return null; + + try { + return (String) Simantics.applySCLRead(graph, symbolFunction, groupItem); + } catch (Exception e) { + LOGGER.error("Getting dynamic symbol for " + groupItem + " (" + + graph.getPossibleRelatedValue(groupItem, Layer0.getInstance(graph).HasName) + ") failed", e); + return null; + } + } finally { + graph.setSynchronous(wasSynchronous); + } + } @SuppressWarnings("rawtypes") - protected static Function getSymbolFunction(ReadGraph graph, Resource entry) throws DatabaseException { + public static Function getSymbolFunction(ReadGraph graph, Resource entry) throws DatabaseException { // Cache function read for profile entry return graph.syncRequest(new SymbolFunctionRequest(entry), TransientCacheListener.instance()); }