X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fadapter%2FNodeRequest.java;h=198b4b341114616aa75137b7a719f8162ccaf40d;hb=617b9475710b80a125597f222f9777224972ce72;hp=fba5de5065705053179ab50d695027d331369210;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/NodeRequest.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/NodeRequest.java index fba5de506..198b4b341 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/NodeRequest.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/NodeRequest.java @@ -11,6 +11,8 @@ *******************************************************************************/ package org.simantics.diagram.adapter; +import java.util.List; + import org.simantics.db.AsyncReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.primitiverequest.Adapter; @@ -20,14 +22,19 @@ import org.simantics.db.procedure.Listener; import org.simantics.diagram.synchronization.ErrorHandler; import org.simantics.g2d.canvas.ICanvasContext; import org.simantics.g2d.diagram.IDiagram; +import org.simantics.g2d.diagram.handler.SubstituteElementClass; import org.simantics.g2d.element.ElementClass; import org.simantics.g2d.element.IElement; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Antti Villberg */ public class NodeRequest extends BaseRequest2 { + private static final Logger LOGGER = LoggerFactory.getLogger(NodeRequest.class); + final IDiagram diagram; final Listener loadListener; @@ -101,18 +108,22 @@ public class NodeRequest extends BaseRequest2 { @Override public void exception(AsyncReadGraph graph, Throwable throwable) { - throwable.printStackTrace(); + LOGGER.error("Unexpected error in GetElementClassRequest", throwable); procedure.execute(graph, null); } @Override - public void execute(AsyncReadGraph graph, final ElementClass clazz) { - + public void execute(AsyncReadGraph graph, ElementClass mutableClazz) { + List substitutes = diagram.getDiagramClass().getItemsByClass(SubstituteElementClass.class); + for (SubstituteElementClass subs : substitutes) { + mutableClazz = subs.substitute(diagram, mutableClazz); + } + final ElementClass clazz = mutableClazz; graph.asyncRequest(new SpawnRequest(canvas, clazz, data), new TransientCacheAsyncListener() { @Override public void exception(AsyncReadGraph graph, Throwable throwable) { - throwable.printStackTrace(); + LOGGER.error("Unexpected error in SpawnRequest", throwable); procedure.execute(graph, null); } @@ -128,8 +139,7 @@ public class NodeRequest extends BaseRequest2 { factory.load(graph, canvas, diagram, data, element, new AsyncProcedure() { @Override public void exception(AsyncReadGraph graph, Throwable throwable) { - // TODO: proper logging - throwable.printStackTrace(); + LOGGER.error("Unexpected error in ElementFactory.load (factory=" + factory + ")", throwable); } @Override public void execute(AsyncReadGraph graph, IElement result) {