X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fhandler%2FPaster.java;h=153199d6cfae6e81d47a095b9bd460e22c3a0a08;hp=a103ab8bc9fdca3f529d7534719937b194e9d90a;hb=b3da313f6d3b9143f8cbe90d4252e4347adc119a;hpb=5da68e793c68db0b155c4c505fe85716b5f31b6e diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java index a103ab8bc..153199d6c 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java @@ -902,6 +902,7 @@ public class Paster { boolean external = FlagUtil.isExternal(graph, flag); boolean inSingleDiagram = FlagUtil.isJoinedInSingleDiagram(graph, flag); if (!external && inSingleDiagram) { + // FIXME: this doesn't take into account local merged flags, which is a corner case but still possible Resource counterpart = FlagUtil.getPossibleCounterpart(graph, flag); if (selectedFlags.containsKey(counterpart)) { flagSelectedCounterpart.put(flag, counterpart); @@ -1268,7 +1269,11 @@ public class Paster { Resource dst = (Resource) resourceMap.get(src); for (Resource connectedToSrc : graph.getObjects(src, DIA.AreConnected)) { Resource connectedToDst = (Resource) resourceMap.get(connectedToSrc); - graph.claim(dst, DIA.AreConnected, DIA.AreConnected, connectedToDst); + if (connectedToDst != null) { + graph.claim(dst, DIA.AreConnected, DIA.AreConnected, connectedToDst); + } else { + throw new DatabaseException("Connection copying failed due to an invalid DIA.AreConnected link between source resources " + src + " <-> " + connectedToSrc); + } } } for (Statement hasConnector : sourceHasConnectors) {