Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCamille Letavernier2018-08-08 07:19:12 -0400
committerCamille Letavernier2018-08-09 05:10:01 -0400
commit16dacae03a19340a8a21f19c1be872547fb04263 (patch)
tree1f603d61ddf4ef0766905bf3640d7e9f3c34650f
parentb1c4f32cf9a29249bcde41def4d46cdfed6919ac (diff)
downloadorg.eclipse.papyrus-16dacae03a19340a8a21f19c1be872547fb04263.tar.gz
org.eclipse.papyrus-16dacae03a19340a8a21f19c1be872547fb04263.tar.xz
org.eclipse.papyrus-16dacae03a19340a8a21f19c1be872547fb04263.zip
Bug 536631: [Sequence Diagram] Support DurationConstraint/Observation as
a Connection between two events Bug 537561: [Sequence Diagram] Support GeneralOrdering as a Connection between two events - Add tests Change-Id: Ibfc943b7658839334c8fd67243053c702312423d Signed-off-by: Camille Letavernier <cletavernier@eclipsesource.com>
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/META-INF/MANIFEST.MF1
-rw-r--r--tests/junit/framework/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/PapyrusEditorFixture.java155
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.di2
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.notation607
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.uml112
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.di2
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.notation116
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.uml32
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkCreationTest.java311
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkTest.java285
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/BugTests.java6
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationConstraintCreationTest.java43
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationObservationCreationTest.java43
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/GeneralOrderingCreationTest.java43
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationConstraintDisplay.java72
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationObservationDisplay.java73
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestGeneralOrderingDisplay.java65
17 files changed, 1944 insertions, 24 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/META-INF/MANIFEST.MF b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/META-INF/MANIFEST.MF
index c4d23b7344f..7ed919715fb 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/META-INF/MANIFEST.MF
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/META-INF/MANIFEST.MF
@@ -1,5 +1,6 @@
Manifest-Version: 1.0
Export-Package: org.eclipse.papyrus.uml.diagram.sequence,
+ org.eclipse.papyrus.uml.diagram.sequence.anchors,
org.eclipse.papyrus.uml.diagram.sequence.edit.parts,
org.eclipse.papyrus.uml.diagram.sequence.edit.policies,
org.eclipse.papyrus.uml.diagram.sequence.figures,
diff --git a/tests/junit/framework/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/PapyrusEditorFixture.java b/tests/junit/framework/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/PapyrusEditorFixture.java
index 2d43a7db213..32090b0365d 100644
--- a/tests/junit/framework/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/PapyrusEditorFixture.java
+++ b/tests/junit/framework/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/PapyrusEditorFixture.java
@@ -10,6 +10,7 @@
* Christian W. Damus (CEA) - Initial API and implementation
* Christian W. Damus - bugs 433206, 465416, 434983, 483721, 469188, 485220, 491542, 497865, 533673, 533682, 533676, 533679
* Thanh Liem PHAN (ALL4TEC) thanhliem.phan@all4tec.net - Bug 521550
+ * EclipseSource - Bug 536631
*****************************************************************************/
package org.eclipse.papyrus.junit.utils.rules;
@@ -24,6 +25,7 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -68,7 +70,11 @@ import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.RootEditPart;
+import org.eclipse.gef.Tool;
+import org.eclipse.gef.palette.PaletteRoot;
+import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.requests.ChangeBoundsRequest;
+import org.eclipse.gef.requests.CreateRequest;
import org.eclipse.gef.ui.palette.PaletteViewer;
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
@@ -77,6 +83,7 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor;
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorWithFlyOutPalette;
+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramGraphicalViewer;
import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart;
import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;
import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor;
@@ -98,7 +105,10 @@ import org.eclipse.papyrus.infra.core.services.ServiceException;
import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
import org.eclipse.papyrus.infra.core.utils.ServiceUtils;
import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.infra.gmfdiag.common.service.palette.AspectUnspecifiedTypeConnectionTool;
+import org.eclipse.papyrus.infra.gmfdiag.common.service.palette.AspectUnspecifiedTypeConnectionTool.CreateAspectUnspecifiedTypeConnectionRequest;
import org.eclipse.papyrus.infra.gmfdiag.common.service.palette.AspectUnspecifiedTypeCreationTool;
+import org.eclipse.papyrus.infra.gmfdiag.common.service.palette.PaletteUtil;
import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramEditPartsUtil;
import org.eclipse.papyrus.infra.nattable.common.editor.AbstractEMFNattableEditor;
import org.eclipse.papyrus.infra.nattable.common.modelresource.PapyrusNattableModel;
@@ -136,6 +146,7 @@ import org.eclipse.ui.part.IPage;
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.Package;
import org.eclipse.uml2.uml.UMLPackage;
+import org.junit.Assert;
import org.junit.runner.Description;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
@@ -202,7 +213,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
* normal Papyrus run-time environment.
*
* @param ensureOperationHistoryIntegrity
- *
+ *
* @since 2.0
*/
public PapyrusEditorFixture(boolean ensureOperationHistoryIntegrity) {
@@ -513,7 +524,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
* {@link #open() opening} the test model again would actually re-initialize it from
* the deployed test resources, potentially replacing any changes in the model files
* that may be significant to the test.
- *
+ *
* @return the re-opened editor
* @since 2.0
*/
@@ -960,11 +971,11 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Get the shape compartment of an edit-part. Fails if the edit-part has no
* shape compartment.
- *
+ *
* @param shapeEditPart
* a shape edit part
* @return its shape compartment
- *
+ *
* @since 2.2
*/
public EditPart getShapeCompartment(EditPart shapeEditPart) {
@@ -976,7 +987,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Obtain a typed stream over a raw-typed collection from a legacy pre-generics API
* such as GEF.
- *
+ *
* @param rawCollection
* a raw-typed collection
* @param type
@@ -991,7 +1002,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Obtain a fake supplier that just fails the test with the given {@code message}
* instead of supplying a result.
- *
+ *
* @param message
* the failure message
* @return the fake supplier
@@ -1052,12 +1063,12 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Find an edit-part for a model element in a particular {@code scope}.
- *
+ *
* @param scope
* an edit part in which to search (its children) for an edit-part
* @param modelElement
* the model element visualized by the edit-part to search for
- *
+ *
* @return the matching edit-part, or {@code null} if none is found in the {@code scope}
*/
public EditPart findEditPart(EditPart scope, EObject modelElement) {
@@ -1092,14 +1103,14 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Require an edit-part for a model element in a particular {@code scope}.
- *
+ *
* @param scope
* an edit part in which to search (its children) for an edit-part
* @param modelElement
* the model element visualized by the edit-part to search for
- *
+ *
* @return the matching edit-part
- *
+ *
* @throws AssertionError
* if the required edit-part is found in the {@code scope}
*/
@@ -1506,7 +1517,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Create a new shape in the {@code parent}. Fails if the shape cannot be created or
* cannot be found in the diagram after creation.
- *
+ *
* @param parent
* the parent edit-part in which to create a shape
* @param type
@@ -1517,7 +1528,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
* the size of the shape to create, or {@code null} for the default size as
* would be created when just clicking in the diagram
* @return the newly created shape edit-part
- *
+ *
* @since 2.2
*/
public IGraphicalEditPart createShape(EditPart parent, IElementType type, Point location, Dimension size) {
@@ -1546,7 +1557,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Create a new shape in the current diagram by automating the creation tool.
* Fails if the shape cannot be created or cannot be found in the diagram after creation.
- *
+ *
* @param type
* the type of shape to create
* @param location
@@ -1555,7 +1566,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
* the size of the shape to create, or {@code null} for the default size as
* would be created when just clicking in the diagram
* @return the newly created shape edit-part
- *
+ *
* @since 2.2
*/
public IGraphicalEditPart createShape(IElementType type, Point location, Dimension size) {
@@ -1633,13 +1644,13 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Create a point location (useful as a static import for test readability).
- *
+ *
* @param x
* the x coördinate
* @param y
* the y coördinate
* @return the point
- *
+ *
* @since 2.2
*/
public static Point at(int x, int y) {
@@ -1651,7 +1662,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
* current viewport (taking zoom and scroll into account). This can be used to get
* a "Mouse Location" to configure requests. Useful as a static import for test
* readability
- *
+ *
* @param x
* the relative x coördinate
* @param y
@@ -1660,7 +1671,7 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
* the edit-part in which coördinate space the {@code x} and {@code y}
* are specified
* @return the point in absolute mouse-pointer coördinates
- *
+ *
* @since 2.2
*/
public static Point at(int x, int y, IGraphicalEditPart relativeTo) {
@@ -1678,13 +1689,13 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Create a size dimension (useful as a static import for test readability).
- *
+ *
* @param width
* the size width
* @param height
* the the size height
* @return the size
- *
+ *
* @since 2.2
*/
public static Dimension sized(int width, int height) {
@@ -1693,12 +1704,12 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
/**
* Delete one or more edit-parts from the diagram.
- *
+ *
* @param editPart
* the edit-parts to delete
- *
+ *
* @since 2.2
- *
+ *
* @throws IllegalArgumentException
* if no edit-parts are specified
*/
@@ -1711,4 +1722,100 @@ public class PapyrusEditorFixture extends AbstractModelFixture<TransactionalEdit
execute(delete);
}
+
+
+ /**
+ * <p>
+ * Return the Papyrus {@link CreateRequest} associated with the given palette tool.
+ * </p>
+ * <p>
+ * Note that this method is designed to work exclusively with Papyrus' AspectUnspecified tools and requests
+ * </p>
+ *
+ * @param tool
+ * @return
+ * @throws Exception
+ *
+ * @see AspectUnspecifiedTypeCreationTool
+ * @see AspectUnspecifiedTypeConnectionTool
+ * @see AspectUnspecifiedTypeConnectionTool.CreateAspectUnspecifiedTypeConnectionRequest
+ * @see AspectUnspecifiedTypeCreationTool.CreateAspectUnspecifiedTypeRequest
+ */
+ public Request getAspectUnspecifiedCreateRequest(final Tool tool) throws Exception {
+ final IDiagramGraphicalViewer viewer = getActiveDiagramEditor().getDiagramGraphicalViewer();
+
+ AtomicReference<Exception> exception = new AtomicReference<>();
+ Display.getDefault().syncExec(new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ tool.setViewer(viewer);
+ } catch (Exception ex) {
+ exception.set(ex);
+ }
+ }
+ });
+ if (exception.get() != null) {
+ throw exception.get();
+ }
+
+ if (tool instanceof AspectUnspecifiedTypeCreationTool) {
+ AspectUnspecifiedTypeCreationTool creationTool = (AspectUnspecifiedTypeCreationTool) tool;
+ return creationTool.createCreateRequest();
+ } else if (tool instanceof AspectUnspecifiedTypeConnectionTool) {
+ AspectUnspecifiedTypeConnectionTool connectionTool = (AspectUnspecifiedTypeConnectionTool) tool;
+ return connectionTool.new CreateAspectUnspecifiedTypeConnectionRequest(connectionTool.getElementTypes(), false, getPreferencesHint());
+ }
+
+ throw new Exception("Unexpected kind of creation tool.");
+ }
+
+ /**
+ * <p>
+ * Return the Palette Tool with the given toolId from the current active diagram editor
+ * </p>
+ *
+ * @param paletteToolId
+ * @return
+ */
+ public Tool getPaletteTool(String paletteToolId) {
+ PaletteRoot paletteRoot = getActiveDiagramEditor().getDiagramGraphicalViewer().getEditDomain().getPaletteViewer().getPaletteRoot();
+ List<ToolEntry> allToolEntries = PaletteUtil.getAllToolEntries(paletteRoot);
+ return allToolEntries.stream().filter(entry -> entry.getId().equals(paletteToolId)).findAny().map(ToolEntry::createTool).orElse(null);
+ }
+
+ /**
+ * Create a Link, using the given PaletteToolID (Which should match an {@link AspectUnspecifiedTypeConnectionTool}),
+ * from the given source to the given target edit part.
+ *
+ * @param paletteToolId
+ * The ID of the palette tool to use to create a new link. It should correspond to an {@link AspectUnspecifiedTypeConnectionTool}.
+ * @param sourceEditPart
+ * The edit part that is the source for the new link
+ * @param targetEditPart
+ * The edit part that is the target for the new link
+ * @param sourceLocation
+ * The location at which the connection source is created
+ * @param targetLocation
+ * The location at which the connection target is created
+ */
+ public void createLink(String paletteToolId, EditPart sourceEditPart, EditPart targetEditPart, Point sourceLocation, Point targetLocation) throws Exception {
+ Tool tool = getPaletteTool(paletteToolId);
+ Assert.assertNotNull("The requested tool (" + paletteToolId + ")wasn't found in the current active diagram", tool);
+ CreateAspectUnspecifiedTypeConnectionRequest request = (CreateAspectUnspecifiedTypeConnectionRequest) getAspectUnspecifiedCreateRequest(tool);
+
+ request.setLocation(sourceLocation);
+ request.setSourceEditPart(sourceEditPart);
+ request.setType(RequestConstants.REQ_CONNECTION_START);
+ org.eclipse.gef.commands.Command sourceCommand = sourceEditPart.getCommand(request); // Initialize the source
+ Assert.assertTrue("Impossible to create the requested connection (" + paletteToolId + ") on the requested source (" + sourceEditPart + ")", sourceCommand != null && sourceCommand.canExecute());
+
+ request.setTargetEditPart(targetEditPart);
+ request.setType(RequestConstants.REQ_CONNECTION_END);
+ request.setLocation(targetLocation);
+
+ org.eclipse.gef.commands.Command completeCommand = targetEditPart.getCommand(request);
+ execute(completeCommand);
+ }
}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.di b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.di
new file mode 100644
index 00000000000..8c549eecdc6
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.infra.services.edit.TypeContext"/>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.notation b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.notation
new file mode 100644
index 00000000000..05d3f46800f
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.notation
@@ -0,0 +1,607 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <css:StyleSheetReference xmi:id="_9bFrwJobEei5foLskM0Fzg" path="/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/style.css"/>
+ <notation:Diagram xmi:id="_DHfN4JocEei5foLskM0Fzg" type="PapyrusUMLSequenceDiagram" name="durationConstraintsLinksTest" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_DHfN4ZocEei5foLskM0Fzg" type="Interaction_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DHfN4pocEei5foLskM0Fzg" type="Interaction_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DHfN45ocEei5foLskM0Fzg" type="Interaction_SubfragmentCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_DHfN5JocEei5foLskM0Fzg" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DHfN5ZocEei5foLskM0Fzg" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_sfO8sJodEei5foLskM0Fzg" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinks.uml#_se9P4JodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sfO8sZodEei5foLskM0Fzg" x="40" y="66" width="20" height="301"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WTEHYJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DHfN6JocEei5foLskM0Fzg" x="74" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DHfN6ZocEei5foLskM0Fzg" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DHfN6pocEei5foLskM0Fzg" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_tJrA0JodEei5foLskM0Fzg" type="BehaviorExecutionSpecification_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJrn4JodEei5foLskM0Fzg" type="BehaviorExecutionSpecification_Behavior">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJrn4ZodEei5foLskM0Fzg" x="18" y="18"/>
+ </children>
+ <element xmi:type="uml:BehaviorExecutionSpecification" href="bug536631-durationLinks.uml#_tJdlcJodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tJrA0ZodEei5foLskM0Fzg" x="40" y="126" width="20" height="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7O85cJodEei5foLskM0Fzg" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinks.uml#_7OtB0JodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7O85cZodEei5foLskM0Fzg" x="50" y="146" width="20" height="100"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WfmHgJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DHfN7ZocEei5foLskM0Fzg" x="354" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DHfN7pocEei5foLskM0Fzg" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DHfN75ocEei5foLskM0Fzg" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_vmLfgJodEei5foLskM0Fzg" type="DestructionOccurrenceSpecification_Shape">
+ <element xmi:type="uml:DestructionOccurrenceSpecification" href="bug536631-durationLinks.uml#_vlp7EZodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vmLfgZodEei5foLskM0Fzg" x="40" y="426"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WmtcIJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DHfN8pocEei5foLskM0Fzg" x="634" y="10" height="466"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DHfN85ocEei5foLskM0Fzg"/>
+ </children>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinks.uml#_VJw9AJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DHfN9JocEei5foLskM0Fzg"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_DHfN9ZocEei5foLskM0Fzg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_DHfN9pocEei5foLskM0Fzg"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_DHfN95ocEei5foLskM0Fzg" diagramKindId="org.eclipse.papyrus.uml.diagram.sequence">
+ <owner xmi:type="uml:Model" href="bug536631-durationLinks.uml#_VI4MMJobEei5foLskM0Fzg"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_DHfN-JocEei5foLskM0Fzg" name="css_stylesheets" eObjectListValue="_9bFrwJobEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinks.uml#_VJw9AJobEei5foLskM0Fzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_t7v-AJodEei5foLskM0Fzg" type="Message_AsynchEdge" source="_DHfN5JocEei5foLskM0Fzg" target="_DHfN6ZocEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_t7v-A5odEei5foLskM0Fzg" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t7wlEJodEei5foLskM0Fzg" x="-43" y="7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t7wlEZodEei5foLskM0Fzg" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t7wlEpodEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_t7v-AZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_t7k-4JodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_t7v-ApodEei5foLskM0Fzg" points="[-10, -2, -290, -20]$[270, 18, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_t769IJodEei5foLskM0Fzg" id="(0.5,0.20857142857142857)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_t769IZodEei5foLskM0Fzg" id="(0.5,0.20857142857142857)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uLhfYJodEei5foLskM0Fzg" type="Message_AsynchEdge" source="_DHfN6ZocEei5foLskM0Fzg" target="_DHfN5JocEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uLhfY5odEei5foLskM0Fzg" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uLhfZJodEei5foLskM0Fzg" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uLhfZZodEei5foLskM0Fzg" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uLhfZpodEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uLhfYZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_uLZjkJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uLhfYpodEei5foLskM0Fzg" points="[-10, -1, 270, -40]$[-290, 39, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uLo0IJodEei5foLskM0Fzg" id="(0.5,0.29428571428571426)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uLpbMJodEei5foLskM0Fzg" id="(0.5,0.29428571428571426)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ucIuQJodEei5foLskM0Fzg" type="Message_AsynchEdge" source="_DHfN5JocEei5foLskM0Fzg" target="_DHfN6ZocEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ucIuQ5odEei5foLskM0Fzg" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ucIuRJodEei5foLskM0Fzg" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ucIuRZodEei5foLskM0Fzg" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ucIuRpodEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ucIuQZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_ucBZgJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ucIuQpodEei5foLskM0Fzg" points="[-10, 9, -290, -100]$[280, 109, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ucWJoJodEei5foLskM0Fzg" id="(0.5,0.43714285714285717)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ucWJoZodEei5foLskM0Fzg" id="(0.5,0.43714285714285717)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_u7cgcJodEei5foLskM0Fzg" type="Message_AsynchEdge" source="_DHfN5JocEei5foLskM0Fzg" target="_DHfN6ZocEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_u7cgc5odEei5foLskM0Fzg" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_u7cgdJodEei5foLskM0Fzg" x="-3" y="7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_u7cgdZodEei5foLskM0Fzg" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_u7cgdpodEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_u7cgcZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_u7PFEJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_u7cgcpodEei5foLskM0Fzg" points="[0, 0, -280, 0]$[280, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_u7otsJodEei5foLskM0Fzg" id="(0.5,0.78)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_u7otsZodEei5foLskM0Fzg" id="(0.5,0.78)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_vl3WcJodEei5foLskM0Fzg" type="Message_DeleteEdge" source="_DHfN6ZocEei5foLskM0Fzg" target="_DHfN7pocEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vl39gJodEei5foLskM0Fzg" type="Message_DeleteNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vl39gZodEei5foLskM0Fzg" x="-35" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vl39gpodEei5foLskM0Fzg" type="Message_DeleteStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vl39g5odEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vl3WcZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_vlos8JodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vl3WcpodEei5foLskM0Fzg" points="[0, 0, -280, -100]$[280, 100, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vmFY4JodEei5foLskM0Fzg" id="(0.5,0.5228571428571429)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vmFY4ZodEei5foLskM0Fzg" id="(0.5,0.9141630901287554)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_9uBj8JodEei5foLskM0Fzg" type="DurationConstraint_Edge" source="_sfO8sJodEei5foLskM0Fzg" target="_tJrA0JodEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_9uBj85odEei5foLskM0Fzg" type="DurationConstraint_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9uBj9JodEei5foLskM0Fzg" x="19" y="-6"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9uBj9ZodEei5foLskM0Fzg" type="DurationConstraint_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9uBj9podEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_9uBj8ZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:DurationConstraint" href="bug536631-durationLinks.uml#_9t4aAJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9uBj8podEei5foLskM0Fzg" points="[0, -150, -280, -130]$[280, -90, 0, -70]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9uNKIJodEei5foLskM0Fzg" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9uNKIZodEei5foLskM0Fzg" id="start"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__GWBwJodEei5foLskM0Fzg" type="DurationConstraint_Edge" source="_t7v-AJodEei5foLskM0Fzg" target="_t7v-AJodEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="__GWBw5odEei5foLskM0Fzg" type="DurationConstraint_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__GWBxJodEei5foLskM0Fzg" x="-40" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__GWBxZodEei5foLskM0Fzg" type="DurationConstraint_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__GWBxpodEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__GWBwZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:DurationConstraint" href="bug536631-durationLinks.uml#__GADgJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__GWBwpodEei5foLskM0Fzg" points="[-130, 7, -130, 7]$[130, 7, 130, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__GoVoJodEei5foLskM0Fzg" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__GoVoZodEei5foLskM0Fzg" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__-l4YJodEei5foLskM0Fzg" type="DurationConstraint_Edge" source="_7O85cJodEei5foLskM0Fzg" target="_uLhfYJodEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="__-l4Y5odEei5foLskM0Fzg" type="DurationConstraint_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__-l4ZJodEei5foLskM0Fzg" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__-l4ZZodEei5foLskM0Fzg" type="DurationConstraint_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__-l4ZpodEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__-l4YZodEei5foLskM0Fzg"/>
+ <element xmi:type="uml:DurationConstraint" href="bug536631-durationLinks.uml#__-bgUJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__-l4YpodEei5foLskM0Fzg" points="[0, -50, 150, -67]$[-280, 10, -130, -7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__-yssJodEei5foLskM0Fzg" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__-yssZodEei5foLskM0Fzg" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_A2FhEJoeEei5foLskM0Fzg" type="DurationConstraint_Edge" source="_7O85cJodEei5foLskM0Fzg" target="_tJrA0JodEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GIIJoeEei5foLskM0Fzg" type="DurationConstraint_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GIIZoeEei5foLskM0Fzg" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GIIpoeEei5foLskM0Fzg" type="DurationConstraint_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GII5oeEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_A2FhEZoeEei5foLskM0Fzg"/>
+ <element xmi:type="uml:DurationConstraint" href="bug536631-durationLinks.uml#_A19lQJoeEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A2FhEpoeEei5foLskM0Fzg" points="[0, 50, 10, 50]$[-10, 71, 0, 71]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2SVYJoeEei5foLskM0Fzg" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2SVYZoeEei5foLskM0Fzg" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CASqYJoeEei5foLskM0Fzg" type="DurationConstraint_Edge" source="_ucIuQJodEei5foLskM0Fzg" target="_vl3WcJodEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CASqY5oeEei5foLskM0Fzg" type="DurationConstraint_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CASqZJoeEei5foLskM0Fzg" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CASqZZoeEei5foLskM0Fzg" type="DurationConstraint_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CASqZpoeEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CASqYZoeEei5foLskM0Fzg"/>
+ <element xmi:type="uml:DurationConstraint" href="bug536631-durationLinks.uml#_CAI5YJoeEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CASqYpoeEei5foLskM0Fzg" points="[135, 7, -140, -110]$[135, 67, -140, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CAiiAJoeEei5foLskM0Fzg" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CAiiAZoeEei5foLskM0Fzg" id="start"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_DUQzsJoeEei5foLskM0Fzg" type="DurationConstraint_Edge" source="_vl3WcJodEei5foLskM0Fzg" target="_vmLfgJodEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DUQzs5oeEei5foLskM0Fzg" type="DurationConstraint_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DUQztJoeEei5foLskM0Fzg" x="11" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DUQztZoeEei5foLskM0Fzg" type="DurationConstraint_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DUQztpoeEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DUQzsZoeEei5foLskM0Fzg"/>
+ <element xmi:type="uml:DurationConstraint" href="bug536631-durationLinks.uml#_DT-f0JoeEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DUQzspoeEei5foLskM0Fzg" points="[-140, -50, -280, -100]$[140, 50, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DUgEQJoeEei5foLskM0Fzg" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DUgEQZoeEei5foLskM0Fzg" id="center"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_E9jswJoeEei5foLskM0Fzg" type="DurationConstraint_Edge" source="_sfO8sJodEei5foLskM0Fzg" target="_u7cgcJodEei5foLskM0Fzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_E9jsw5oeEei5foLskM0Fzg" type="DurationConstraint_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E9jsxJoeEei5foLskM0Fzg" x="15" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_E9jsxZoeEei5foLskM0Fzg" type="DurationConstraint_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E9jsxpoeEei5foLskM0Fzg" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_E9jswZoeEei5foLskM0Fzg"/>
+ <element xmi:type="uml:DurationConstraint" href="bug536631-durationLinks.uml#_E9YGkJoeEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E9jswpoeEei5foLskM0Fzg" points="[0, 151, -140, -172]$[280, 330, 140, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E9yWQJoeEei5foLskM0Fzg" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E9yWQZoeEei5foLskM0Fzg" id="end"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_JrvkQJpMEei-GLAJvy8iyw" type="PapyrusUMLSequenceDiagram" name="durationObservationsLinksTest" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_JrvkQZpMEei-GLAJvy8iyw" type="Interaction_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkQppMEei-GLAJvy8iyw" type="Interaction_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JrvkQ5pMEei-GLAJvy8iyw" type="Interaction_SubfragmentCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_JrvkRJpMEei-GLAJvy8iyw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkRZpMEei-GLAJvy8iyw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_JrvkRppMEei-GLAJvy8iyw" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinks.uml#_se9P4JodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkR5pMEei-GLAJvy8iyw" x="40" y="66" width="20" height="301"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WTEHYJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkSJpMEei-GLAJvy8iyw" x="74" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JrvkSZpMEei-GLAJvy8iyw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkSppMEei-GLAJvy8iyw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_JrvkS5pMEei-GLAJvy8iyw" type="BehaviorExecutionSpecification_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkTJpMEei-GLAJvy8iyw" type="BehaviorExecutionSpecification_Behavior">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkTZpMEei-GLAJvy8iyw" x="18" y="18"/>
+ </children>
+ <element xmi:type="uml:BehaviorExecutionSpecification" href="bug536631-durationLinks.uml#_tJdlcJodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkTppMEei-GLAJvy8iyw" x="40" y="126" width="20" height="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JrvkT5pMEei-GLAJvy8iyw" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinks.uml#_7OtB0JodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkUJpMEei-GLAJvy8iyw" x="50" y="146" width="20" height="100"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WfmHgJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkUZpMEei-GLAJvy8iyw" x="354" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JrvkUppMEei-GLAJvy8iyw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkU5pMEei-GLAJvy8iyw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_JrvkVJpMEei-GLAJvy8iyw" type="DestructionOccurrenceSpecification_Shape">
+ <element xmi:type="uml:DestructionOccurrenceSpecification" href="bug536631-durationLinks.uml#_vlp7EZodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkVZpMEei-GLAJvy8iyw" x="40" y="426"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WmtcIJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkVppMEei-GLAJvy8iyw" x="634" y="10" height="466"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkV5pMEei-GLAJvy8iyw"/>
+ </children>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinks.uml#_VJw9AJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrvkWJpMEei-GLAJvy8iyw"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_JrvkWZpMEei-GLAJvy8iyw" name="diagram_compatibility_version" stringValue="1.4.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_JrvkWppMEei-GLAJvy8iyw"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_JrvkW5pMEei-GLAJvy8iyw" diagramKindId="org.eclipse.papyrus.uml.diagram.sequence">
+ <owner xmi:type="uml:Model" href="bug536631-durationLinks.uml#_VI4MMJobEei5foLskM0Fzg"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_JrvkXJpMEei-GLAJvy8iyw" name="css_stylesheets" eObjectListValue="_9bFrwJobEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinks.uml#_VJw9AJobEei5foLskM0Fzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_JrvklppMEei-GLAJvy8iyw" type="Message_AsynchEdge" source="_JrvkRJpMEei-GLAJvy8iyw" target="_JrvkSZpMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jrvkl5pMEei-GLAJvy8iyw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkmJpMEei-GLAJvy8iyw" x="-43" y="7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkmZpMEei-GLAJvy8iyw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkmppMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Jrvkm5pMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_t7k-4JodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JrvknJpMEei-GLAJvy8iyw" points="[-10, -2, -290, -20]$[270, 18, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvknZpMEei-GLAJvy8iyw" id="(0.5,0.20857142857142857)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvknppMEei-GLAJvy8iyw" id="(0.5,0.20857142857142857)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Jrvkn5pMEei-GLAJvy8iyw" type="Message_AsynchEdge" source="_JrvkSZpMEei-GLAJvy8iyw" target="_JrvkRJpMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkoJpMEei-GLAJvy8iyw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkoZpMEei-GLAJvy8iyw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkoppMEei-GLAJvy8iyw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jrvko5pMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JrvkpJpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_uLZjkJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JrvkpZpMEei-GLAJvy8iyw" points="[-10, -1, 270, -40]$[-290, 39, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvkpppMEei-GLAJvy8iyw" id="(0.5,0.29428571428571426)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Jrvkp5pMEei-GLAJvy8iyw" id="(0.5,0.29428571428571426)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JrvkqJpMEei-GLAJvy8iyw" type="Message_AsynchEdge" source="_JrvkRJpMEei-GLAJvy8iyw" target="_JrvkSZpMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkqZpMEei-GLAJvy8iyw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkqppMEei-GLAJvy8iyw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jrvkq5pMEei-GLAJvy8iyw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkrJpMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JrvkrZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_ucBZgJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JrvkrppMEei-GLAJvy8iyw" points="[-10, 9, -290, -100]$[280, 109, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Jrvkr5pMEei-GLAJvy8iyw" id="(0.5,0.43714285714285717)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvksJpMEei-GLAJvy8iyw" id="(0.5,0.43714285714285717)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JrvksZpMEei-GLAJvy8iyw" type="Message_AsynchEdge" source="_JrvkRJpMEei-GLAJvy8iyw" target="_JrvkSZpMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvksppMEei-GLAJvy8iyw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jrvks5pMEei-GLAJvy8iyw" x="-3" y="7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvktJpMEei-GLAJvy8iyw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvktZpMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JrvktppMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_u7PFEJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Jrvkt5pMEei-GLAJvy8iyw" points="[0, 0, -280, 0]$[280, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvkuJpMEei-GLAJvy8iyw" id="(0.5,0.78)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvkuZpMEei-GLAJvy8iyw" id="(0.5,0.78)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JrvkuppMEei-GLAJvy8iyw" type="Message_DeleteEdge" source="_JrvkSZpMEei-GLAJvy8iyw" target="_JrvkUppMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jrvku5pMEei-GLAJvy8iyw" type="Message_DeleteNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkvJpMEei-GLAJvy8iyw" x="-35" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrvkvZpMEei-GLAJvy8iyw" type="Message_DeleteStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrvkvppMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Jrvkv5pMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_vlos8JodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JrvkwJpMEei-GLAJvy8iyw" points="[0, 0, -280, -100]$[280, 100, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvkwZpMEei-GLAJvy8iyw" id="(0.5,0.5228571428571429)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JrvkwppMEei-GLAJvy8iyw" id="(0.5,0.9141630901287554)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kB28YJpMEei-GLAJvy8iyw" type="DurationObservation_Edge" source="_JrvkRppMEei-GLAJvy8iyw" target="_JrvkS5pMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kB28Y5pMEei-GLAJvy8iyw" type="DurationObservation_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kB28ZJpMEei-GLAJvy8iyw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kB3jcJpMEei-GLAJvy8iyw" type="DurationObservation_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kB3jcZpMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kB28YZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:DurationObservation" href="bug536631-durationLinks.uml#_kB1uQJpMEei-GLAJvy8iyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kB28YppMEei-GLAJvy8iyw" points="[0, -150, -280, -130]$[280, -90, 0, -70]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kCGM8JpMEei-GLAJvy8iyw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kCGM8ZpMEei-GLAJvy8iyw" id="start"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_lRWOUJpMEei-GLAJvy8iyw" type="DurationObservation_Edge" source="_JrvklppMEei-GLAJvy8iyw" target="_JrvklppMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lRWOU5pMEei-GLAJvy8iyw" type="DurationObservation_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lRWOVJpMEei-GLAJvy8iyw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lRWOVZpMEei-GLAJvy8iyw" type="DurationObservation_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lRWOVppMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lRWOUZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:DurationObservation" href="bug536631-durationLinks.uml#_lRUZIJpMEei-GLAJvy8iyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lRWOUppMEei-GLAJvy8iyw" points="[-130, -4, -130, -4]$[130, -4, 130, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lRvP4JpMEei-GLAJvy8iyw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lRv28JpMEei-GLAJvy8iyw" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_l3u44JpMEei-GLAJvy8iyw" type="DurationObservation_Edge" source="_JrvkT5pMEei-GLAJvy8iyw" target="_Jrvkn5pMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l3vf8JpMEei-GLAJvy8iyw" type="DurationObservation_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l3vf8ZpMEei-GLAJvy8iyw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l3vf8ppMEei-GLAJvy8iyw" type="DurationObservation_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l3vf85pMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_l3u44ZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:DurationObservation" href="bug536631-durationLinks.uml#_l3tDsJpMEei-GLAJvy8iyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l3u44ppMEei-GLAJvy8iyw" points="[0, -50, 150, -67]$[-280, 10, -130, -7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l4HTYJpMEei-GLAJvy8iyw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l4HTYZpMEei-GLAJvy8iyw" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_m7W5EJpMEei-GLAJvy8iyw" type="DurationObservation_Edge" source="_JrvkT5pMEei-GLAJvy8iyw" target="_JrvkS5pMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_m7W5E5pMEei-GLAJvy8iyw" type="DurationObservation_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m7W5FJpMEei-GLAJvy8iyw" x="-51" y="-101"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m7W5FZpMEei-GLAJvy8iyw" type="DurationObservation_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m7W5FppMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_m7W5EZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:DurationObservation" href="bug536631-durationLinks.uml#_m7Vq8JpMEei-GLAJvy8iyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m7W5EppMEei-GLAJvy8iyw" points="[0, 50, 10, 50]$[-10, 71, 0, 71]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m7teYJpMEei-GLAJvy8iyw" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m7teYZpMEei-GLAJvy8iyw" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_oP308JpMEei-GLAJvy8iyw" type="DurationObservation_Edge" source="_JrvkqJpMEei-GLAJvy8iyw" target="_JrvkuppMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_oP3085pMEei-GLAJvy8iyw" type="DurationObservation_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oP309JpMEei-GLAJvy8iyw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oP309ZpMEei-GLAJvy8iyw" type="DurationObservation_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oP309ppMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_oP308ZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:DurationObservation" href="bug536631-durationLinks.uml#_oP2m0JpMEei-GLAJvy8iyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oP308ppMEei-GLAJvy8iyw" points="[135, 7, -140, -110]$[135, 67, -140, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQPoYJpMEei-GLAJvy8iyw" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQPoYZpMEei-GLAJvy8iyw" id="start"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_p9Rx8JpMEei-GLAJvy8iyw" type="DurationObservation_Edge" source="_JrvkuppMEei-GLAJvy8iyw" target="_JrvkVJpMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_p9Rx85pMEei-GLAJvy8iyw" type="DurationObservation_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p9Rx9JpMEei-GLAJvy8iyw" x="34" y="-76"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_p9Rx9ZpMEei-GLAJvy8iyw" type="DurationObservation_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p9Rx9ppMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_p9Rx8ZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:DurationObservation" href="bug536631-durationLinks.uml#_p9P8wJpMEei-GLAJvy8iyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_p9Rx8ppMEei-GLAJvy8iyw" points="[-140, -50, -280, -100]$[140, 50, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p9qzgJpMEei-GLAJvy8iyw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p9qzgZpMEei-GLAJvy8iyw" id="center"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_sy-zwJpMEei-GLAJvy8iyw" type="DurationObservation_Edge" source="_JrvkRppMEei-GLAJvy8iyw" target="_JrvksZpMEei-GLAJvy8iyw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_sy-zw5pMEei-GLAJvy8iyw" type="DurationObservation_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sy-zxJpMEei-GLAJvy8iyw" x="-69" y="41"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sy-zxZpMEei-GLAJvy8iyw" type="DurationObservation_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sy-zxppMEei-GLAJvy8iyw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_sy-zwZpMEei-GLAJvy8iyw"/>
+ <element xmi:type="uml:DurationObservation" href="bug536631-durationLinks.uml#_sy9loJpMEei-GLAJvy8iyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sy-zwppMEei-GLAJvy8iyw" points="[0, 151, -140, -183]$[280, 330, 140, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_szYcYJpMEei-GLAJvy8iyw" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_szYcYZpMEei-GLAJvy8iyw" id="end"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_aoBs4JsVEeiGQY78R_GwXw" type="PapyrusUMLSequenceDiagram" name="generalOrderingLinksTest" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_aoBs4ZsVEeiGQY78R_GwXw" type="Interaction_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBs4psVEeiGQY78R_GwXw" type="Interaction_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aoBs45sVEeiGQY78R_GwXw" type="Interaction_SubfragmentCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_aoBs5JsVEeiGQY78R_GwXw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBs5ZsVEeiGQY78R_GwXw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_aoBs5psVEeiGQY78R_GwXw" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinks.uml#_se9P4JodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs55sVEeiGQY78R_GwXw" x="40" y="66" width="20" height="301"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WTEHYJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs6JsVEeiGQY78R_GwXw" x="74" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aoBs6ZsVEeiGQY78R_GwXw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBs6psVEeiGQY78R_GwXw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_aoBs65sVEeiGQY78R_GwXw" type="BehaviorExecutionSpecification_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBs7JsVEeiGQY78R_GwXw" type="BehaviorExecutionSpecification_Behavior">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBs7ZsVEeiGQY78R_GwXw" x="18" y="18"/>
+ </children>
+ <element xmi:type="uml:BehaviorExecutionSpecification" href="bug536631-durationLinks.uml#_tJdlcJodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs7psVEeiGQY78R_GwXw" x="40" y="126" width="20" height="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aoBs75sVEeiGQY78R_GwXw" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinks.uml#_7OtB0JodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs8JsVEeiGQY78R_GwXw" x="50" y="146" width="20" height="100"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WfmHgJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs8ZsVEeiGQY78R_GwXw" x="354" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aoBs8psVEeiGQY78R_GwXw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBs85sVEeiGQY78R_GwXw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_aoBs9JsVEeiGQY78R_GwXw" type="DestructionOccurrenceSpecification_Shape">
+ <element xmi:type="uml:DestructionOccurrenceSpecification" href="bug536631-durationLinks.uml#_vlp7EZodEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs9ZsVEeiGQY78R_GwXw" x="40" y="426"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinks.uml#_WmtcIJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs9psVEeiGQY78R_GwXw" x="634" y="10" height="466"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs95sVEeiGQY78R_GwXw"/>
+ </children>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinks.uml#_VJw9AJobEei5foLskM0Fzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoBs-JsVEeiGQY78R_GwXw"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_aoBs-ZsVEeiGQY78R_GwXw" name="diagram_compatibility_version" stringValue="1.4.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_aoBs-psVEeiGQY78R_GwXw"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_aoBs-5sVEeiGQY78R_GwXw" diagramKindId="org.eclipse.papyrus.uml.diagram.sequence">
+ <owner xmi:type="uml:Model" href="bug536631-durationLinks.uml#_VI4MMJobEei5foLskM0Fzg"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_aoBs_JsVEeiGQY78R_GwXw" name="css_stylesheets" eObjectListValue="_9bFrwJobEei5foLskM0Fzg"/>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinks.uml#_VJw9AJobEei5foLskM0Fzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_aoBtNpsVEeiGQY78R_GwXw" type="Message_AsynchEdge" source="_aoBs5JsVEeiGQY78R_GwXw" target="_aoBs6ZsVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtN5sVEeiGQY78R_GwXw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtOJsVEeiGQY78R_GwXw" x="-43" y="7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtOZsVEeiGQY78R_GwXw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtOpsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aoBtO5sVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_t7k-4JodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aoBtPJsVEeiGQY78R_GwXw" points="[-10, -2, -290, -20]$[270, 18, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtPZsVEeiGQY78R_GwXw" id="(0.5,0.20857142857142857)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtPpsVEeiGQY78R_GwXw" id="(0.5,0.20857142857142857)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aoBtP5sVEeiGQY78R_GwXw" type="Message_AsynchEdge" source="_aoBs6ZsVEeiGQY78R_GwXw" target="_aoBs5JsVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtQJsVEeiGQY78R_GwXw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtQZsVEeiGQY78R_GwXw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtQpsVEeiGQY78R_GwXw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtQ5sVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aoBtRJsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_uLZjkJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aoBtRZsVEeiGQY78R_GwXw" points="[-10, -1, 270, -40]$[-290, 39, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtRpsVEeiGQY78R_GwXw" id="(0.5,0.29428571428571426)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtR5sVEeiGQY78R_GwXw" id="(0.5,0.29428571428571426)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aoBtSJsVEeiGQY78R_GwXw" type="Message_AsynchEdge" source="_aoBs5JsVEeiGQY78R_GwXw" target="_aoBs6ZsVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtSZsVEeiGQY78R_GwXw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtSpsVEeiGQY78R_GwXw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtS5sVEeiGQY78R_GwXw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtTJsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aoBtTZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_ucBZgJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aoBtTpsVEeiGQY78R_GwXw" points="[-10, 9, -290, -100]$[280, 109, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtT5sVEeiGQY78R_GwXw" id="(0.5,0.43714285714285717)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtUJsVEeiGQY78R_GwXw" id="(0.5,0.43714285714285717)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aoBtUZsVEeiGQY78R_GwXw" type="Message_AsynchEdge" source="_aoBs5JsVEeiGQY78R_GwXw" target="_aoBs6ZsVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtUpsVEeiGQY78R_GwXw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtU5sVEeiGQY78R_GwXw" x="-3" y="7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtVJsVEeiGQY78R_GwXw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtVZsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aoBtVpsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_u7PFEJodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aoBtV5sVEeiGQY78R_GwXw" points="[0, 0, -280, 0]$[280, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtWJsVEeiGQY78R_GwXw" id="(0.5,0.78)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtWZsVEeiGQY78R_GwXw" id="(0.5,0.78)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aoBtWpsVEeiGQY78R_GwXw" type="Message_DeleteEdge" source="_aoBs6ZsVEeiGQY78R_GwXw" target="_aoBs8psVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtW5sVEeiGQY78R_GwXw" type="Message_DeleteNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtXJsVEeiGQY78R_GwXw" x="-35" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoBtXZsVEeiGQY78R_GwXw" type="Message_DeleteStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoBtXpsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aoBtX5sVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinks.uml#_vlos8JodEei5foLskM0Fzg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aoBtYJsVEeiGQY78R_GwXw" points="[0, 0, -280, -100]$[280, 100, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtYZsVEeiGQY78R_GwXw" id="(0.5,0.5228571428571429)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aoBtYpsVEeiGQY78R_GwXw" id="(0.5,0.9141630901287554)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_eGFIIJsVEeiGQY78R_GwXw" type="GeneralOrdering_Edge" source="_aoBs5psVEeiGQY78R_GwXw" target="_aoBs65sVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_eGHkYJsVEeiGQY78R_GwXw" type="GeneralOrdering_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eGHkYZsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_eGFIIZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:GeneralOrdering" href="bug536631-durationLinks.uml#_eFRP0JsVEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eGFIIpsVEeiGQY78R_GwXw" points="[0, -150, -280, -130]$[280, -90, 0, -70]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eG5ngJsVEeiGQY78R_GwXw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eG5ngZsVEeiGQY78R_GwXw" id="start"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_goHnEJsVEeiGQY78R_GwXw" type="GeneralOrdering_Edge" source="_aoBtNpsVEeiGQY78R_GwXw" target="_aoBtNpsVEeiGQY78R_GwXw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hYHgoJsVEeiGQY78R_GwXw" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYIHsJsVEeiGQY78R_GwXw" key="routing" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_goIOIJsVEeiGQY78R_GwXw" type="GeneralOrdering_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_goIOIZsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_goHnEZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:GeneralOrdering" href="bug536631-durationLinks.uml#_gnwasJsVEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_goHnEpsVEeiGQY78R_GwXw" points="[-130, -4, -130, -4]$[-70, -36, -70, -36]$[26, -36, 26, -36]$[130, -4, 130, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gobJEJsVEeiGQY78R_GwXw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gobJEZsVEeiGQY78R_GwXw" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_nJEyoJsVEeiGQY78R_GwXw" type="GeneralOrdering_Edge" source="_aoBs75sVEeiGQY78R_GwXw" target="_aoBtP5sVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nJFZsJsVEeiGQY78R_GwXw" type="GeneralOrdering_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nJFZsZsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_nJEyoZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:GeneralOrdering" href="bug536631-durationLinks.uml#_nIxQoJsVEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nJEyopsVEeiGQY78R_GwXw" points="[0, -50, 150, -67]$[-280, 10, -130, -7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nJUDMJsVEeiGQY78R_GwXw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nJUDMZsVEeiGQY78R_GwXw" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_pxrzoJsVEeiGQY78R_GwXw" type="GeneralOrdering_Edge" source="_aoBs75sVEeiGQY78R_GwXw" target="_aoBs65sVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pxrzo5sVEeiGQY78R_GwXw" type="GeneralOrdering_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pxrzpJsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_pxrzoZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:GeneralOrdering" href="bug536631-durationLinks.uml#_pxZfwJsVEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pxrzopsVEeiGQY78R_GwXw" points="[0, 50, 10, 50]$[40, 50, 50, 50]$[40, 70, 50, 70]$[-10, 71, 0, 71]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_px7rQJsVEeiGQY78R_GwXw" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_px7rQZsVEeiGQY78R_GwXw" id="end"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_to3gkJsVEeiGQY78R_GwXw" type="GeneralOrdering_Edge" source="_aoBtSJsVEeiGQY78R_GwXw" target="_aoBtWpsVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_to4HoJsVEeiGQY78R_GwXw" type="GeneralOrdering_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_to4HoZsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_to3gkZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:GeneralOrdering" href="bug536631-durationLinks.uml#_tolMsJsVEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_to3gkpsVEeiGQY78R_GwXw" points="[135, 7, -140, -110]$[135, 67, -140, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tpH_QJsVEeiGQY78R_GwXw" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tpH_QZsVEeiGQY78R_GwXw" id="start"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_vK4F4JsVEeiGQY78R_GwXw" type="GeneralOrdering_Edge" source="_aoBtWpsVEeiGQY78R_GwXw" target="_aoBs9JsVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vK4F45sVEeiGQY78R_GwXw" type="GeneralOrdering_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vK4F5JsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vK4F4ZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:GeneralOrdering" href="bug536631-durationLinks.uml#_vKlyAJsVEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vK4F4psVEeiGQY78R_GwXw" points="[-140, -50, -280, -100]$[9, -21, -131, -71]$[140, 50, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vLGIUJsVEeiGQY78R_GwXw" id="start"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vLGIUZsVEeiGQY78R_GwXw" id="center"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wn9H4JsVEeiGQY78R_GwXw" type="GeneralOrdering_Edge" source="_aoBs5psVEeiGQY78R_GwXw" target="_aoBtUZsVEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wn9H45sVEeiGQY78R_GwXw" type="GeneralOrdering_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wn9H5JsVEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wn9H4ZsVEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:GeneralOrdering" href="bug536631-durationLinks.uml#_wnq0AJsVEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wn9H4psVEeiGQY78R_GwXw" points="[0, 151, -140, -183]$[280, 330, 140, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_woLxYJsVEeiGQY78R_GwXw" id="end"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_woMYcJsVEeiGQY78R_GwXw" id="end"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.uml b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.uml
new file mode 100644
index 00000000000..14b9ea2f875
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinks.uml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_VI4MMJobEei5foLskM0Fzg" name="durationLinksTest">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_VQ4RoJobEei5foLskM0Fzg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Interaction" xmi:id="_VJw9AJobEei5foLskM0Fzg" name="Interaction1">
+ <ownedRule xmi:type="uml:DurationConstraint" xmi:id="_9t4aAJodEei5foLskM0Fzg" name="DurationConstraint1" constrainedElement="_se-eAJodEei5foLskM0Fzg _tJeMgJodEei5foLskM0Fzg">
+ <specification xmi:type="uml:DurationInterval" xmi:id="_9t5BEJodEei5foLskM0Fzg" max="_9t5oIZodEei5foLskM0Fzg" min="_9t5oIJodEei5foLskM0Fzg"/>
+ </ownedRule>
+ <ownedRule xmi:type="uml:DurationConstraint" xmi:id="__GADgJodEei5foLskM0Fzg" name="DurationConstraint2" constrainedElement="_t7ll8JodEei5foLskM0Fzg _t7mNAJodEei5foLskM0Fzg">
+ <specification xmi:type="uml:DurationInterval" xmi:id="__GAqkJodEei5foLskM0Fzg" max="__GBRoZodEei5foLskM0Fzg" min="__GBRoJodEei5foLskM0Fzg"/>
+ </ownedRule>
+ <ownedRule xmi:type="uml:DurationConstraint" xmi:id="__-bgUJodEei5foLskM0Fzg" name="DurationConstraint3" constrainedElement="_7OuP8JodEei5foLskM0Fzg _uLaxsJodEei5foLskM0Fzg">
+ <specification xmi:type="uml:DurationInterval" xmi:id="__-cHYJodEei5foLskM0Fzg" max="__-cucZodEei5foLskM0Fzg" min="__-cucJodEei5foLskM0Fzg"/>
+ </ownedRule>
+ <ownedRule xmi:type="uml:DurationConstraint" xmi:id="_A19lQJoeEei5foLskM0Fzg" name="DurationConstraint4" constrainedElement="_7OuP8ZodEei5foLskM0Fzg _tJeMgZodEei5foLskM0Fzg">
+ <specification xmi:type="uml:DurationInterval" xmi:id="_A1-zYJoeEei5foLskM0Fzg" max="_A1-zYpoeEei5foLskM0Fzg" min="_A1-zYZoeEei5foLskM0Fzg"/>
+ </ownedRule>
+ <ownedRule xmi:type="uml:DurationConstraint" xmi:id="_CAI5YJoeEei5foLskM0Fzg" name="DurationConstraint5" constrainedElement="_ucCAkJodEei5foLskM0Fzg _vlp7EJodEei5foLskM0Fzg">
+ <specification xmi:type="uml:DurationInterval" xmi:id="_CAJgcJoeEei5foLskM0Fzg" max="_CAJgcpoeEei5foLskM0Fzg" min="_CAJgcZoeEei5foLskM0Fzg"/>
+ </ownedRule>
+ <ownedRule xmi:type="uml:DurationConstraint" xmi:id="_DT-f0JoeEei5foLskM0Fzg" name="DurationConstraint6" constrainedElement="_vlp7EJodEei5foLskM0Fzg _vlp7EZodEei5foLskM0Fzg">
+ <specification xmi:type="uml:DurationInterval" xmi:id="_DT_t8JoeEei5foLskM0Fzg" max="_DUAVAJoeEei5foLskM0Fzg" min="_DT_t8ZoeEei5foLskM0Fzg"/>
+ </ownedRule>
+ <ownedRule xmi:type="uml:DurationConstraint" xmi:id="_E9YGkJoeEei5foLskM0Fzg" name="DurationConstraint7" constrainedElement="_se_FEJodEei5foLskM0Fzg _u7QTMZodEei5foLskM0Fzg">
+ <specification xmi:type="uml:DurationInterval" xmi:id="_E9YtoJoeEei5foLskM0Fzg" max="_E9YtopoeEei5foLskM0Fzg" min="_E9YtoZoeEei5foLskM0Fzg"/>
+ </ownedRule>
+ <generalOrdering xmi:type="uml:GeneralOrdering" xmi:id="_eFRP0JsVEeiGQY78R_GwXw" name="GeneralOrdering1" after="_tJeMgJodEei5foLskM0Fzg" before="_se-eAJodEei5foLskM0Fzg"/>
+ <generalOrdering xmi:type="uml:GeneralOrdering" xmi:id="_gnwasJsVEeiGQY78R_GwXw" name="GeneralOrdering2" after="_t7mNAJodEei5foLskM0Fzg" before="_t7ll8JodEei5foLskM0Fzg"/>
+ <generalOrdering xmi:type="uml:GeneralOrdering" xmi:id="_nIxQoJsVEeiGQY78R_GwXw" name="GeneralOrdering3" after="_uLaxsJodEei5foLskM0Fzg" before="_7OuP8JodEei5foLskM0Fzg"/>
+ <generalOrdering xmi:type="uml:GeneralOrdering" xmi:id="_pxZfwJsVEeiGQY78R_GwXw" name="GeneralOrdering4" after="_tJeMgZodEei5foLskM0Fzg" before="_7OuP8ZodEei5foLskM0Fzg"/>
+ <generalOrdering xmi:type="uml:GeneralOrdering" xmi:id="_tolMsJsVEeiGQY78R_GwXw" name="GeneralOrdering5" after="_vlp7EJodEei5foLskM0Fzg" before="_ucCAkJodEei5foLskM0Fzg"/>
+ <generalOrdering xmi:type="uml:GeneralOrdering" xmi:id="_vKlyAJsVEeiGQY78R_GwXw" name="GeneralOrdering6" after="_vlp7EZodEei5foLskM0Fzg" before="_vlp7EJodEei5foLskM0Fzg"/>
+ <generalOrdering xmi:type="uml:GeneralOrdering" xmi:id="_wnq0AJsVEeiGQY78R_GwXw" name="GeneralOrdering7" after="_u7QTMZodEei5foLskM0Fzg" before="_se_FEJodEei5foLskM0Fzg"/>
+ <lifeline xmi:type="uml:Lifeline" xmi:id="_WTEHYJobEei5foLskM0Fzg" name="Lifeline1" coveredBy="_se-eAJodEei5foLskM0Fzg _se9P4JodEei5foLskM0Fzg _t7ll8JodEei5foLskM0Fzg _uLaxsJodEei5foLskM0Fzg _ucBZgZodEei5foLskM0Fzg _se_FEJodEei5foLskM0Fzg _u7QTMJodEei5foLskM0Fzg"/>
+ <lifeline xmi:type="uml:Lifeline" xmi:id="_WfmHgJobEei5foLskM0Fzg" name="Lifeline2" coveredBy="_tJeMgJodEei5foLskM0Fzg _tJdlcJodEei5foLskM0Fzg _7OuP8JodEei5foLskM0Fzg _7OtB0JodEei5foLskM0Fzg _t7mNAJodEei5foLskM0Fzg _uLaKoJodEei5foLskM0Fzg _7OuP8ZodEei5foLskM0Fzg _tJeMgZodEei5foLskM0Fzg _ucCAkJodEei5foLskM0Fzg _vlp7EJodEei5foLskM0Fzg _u7QTMZodEei5foLskM0Fzg"/>
+ <lifeline xmi:type="uml:Lifeline" xmi:id="_WmtcIJobEei5foLskM0Fzg" name="Lifeline3" coveredBy="_vlp7EZodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_se-eAJodEei5foLskM0Fzg" name="ActionExecutionSpecification1Start" covered="_WTEHYJobEei5foLskM0Fzg" toAfter="_eFRP0JsVEeiGQY78R_GwXw" execution="_se9P4JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ActionExecutionSpecification" xmi:id="_se9P4JodEei5foLskM0Fzg" name="ActionExecutionSpecification1" covered="_WTEHYJobEei5foLskM0Fzg" finish="_se_FEJodEei5foLskM0Fzg" start="_se-eAJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_tJeMgJodEei5foLskM0Fzg" name="BehaviorExecutionSpecification2Start" covered="_WfmHgJobEei5foLskM0Fzg" toBefore="_eFRP0JsVEeiGQY78R_GwXw" execution="_tJdlcJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_tJdlcJodEei5foLskM0Fzg" name="BehaviorExecutionSpecification2" covered="_WfmHgJobEei5foLskM0Fzg" finish="_tJeMgZodEei5foLskM0Fzg" start="_tJeMgJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_t7ll8JodEei5foLskM0Fzg" name="Message1SendEvent" covered="_WTEHYJobEei5foLskM0Fzg" toAfter="_gnwasJsVEeiGQY78R_GwXw" message="_t7k-4JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_7OuP8JodEei5foLskM0Fzg" name="ActionExecutionSpecification3Start" covered="_WfmHgJobEei5foLskM0Fzg" toAfter="_nIxQoJsVEeiGQY78R_GwXw" execution="_7OtB0JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ActionExecutionSpecification" xmi:id="_7OtB0JodEei5foLskM0Fzg" name="ActionExecutionSpecification3" covered="_WfmHgJobEei5foLskM0Fzg" finish="_7OuP8ZodEei5foLskM0Fzg" start="_7OuP8JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_t7mNAJodEei5foLskM0Fzg" name="Message1ReceiveEvent" covered="_WfmHgJobEei5foLskM0Fzg" toBefore="_gnwasJsVEeiGQY78R_GwXw" message="_t7k-4JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_uLaKoJodEei5foLskM0Fzg" name="Message2SendEvent" covered="_WfmHgJobEei5foLskM0Fzg" message="_uLZjkJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_uLaxsJodEei5foLskM0Fzg" name="Message2ReceiveEvent" covered="_WTEHYJobEei5foLskM0Fzg" toBefore="_nIxQoJsVEeiGQY78R_GwXw" message="_uLZjkJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_7OuP8ZodEei5foLskM0Fzg" name="ActionExecutionSpecification3Finish" covered="_WfmHgJobEei5foLskM0Fzg" toAfter="_pxZfwJsVEeiGQY78R_GwXw" execution="_7OtB0JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_tJeMgZodEei5foLskM0Fzg" name="BehaviorExecutionSpecification2Finish" covered="_WfmHgJobEei5foLskM0Fzg" toBefore="_pxZfwJsVEeiGQY78R_GwXw" execution="_tJdlcJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_ucBZgZodEei5foLskM0Fzg" name="Message3SendEvent" covered="_WTEHYJobEei5foLskM0Fzg" message="_ucBZgJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_ucCAkJodEei5foLskM0Fzg" name="Message3ReceiveEvent" covered="_WfmHgJobEei5foLskM0Fzg" toAfter="_tolMsJsVEeiGQY78R_GwXw" message="_ucBZgJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_vlp7EJodEei5foLskM0Fzg" name="Message5SendEvent" covered="_WfmHgJobEei5foLskM0Fzg" toAfter="_vKlyAJsVEeiGQY78R_GwXw" toBefore="_tolMsJsVEeiGQY78R_GwXw" message="_vlos8JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_se_FEJodEei5foLskM0Fzg" name="ActionExecutionSpecification1Finish" covered="_WTEHYJobEei5foLskM0Fzg" toAfter="_wnq0AJsVEeiGQY78R_GwXw" execution="_se9P4JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:DestructionOccurrenceSpecification" xmi:id="_vlp7EZodEei5foLskM0Fzg" name="Message5ReceiveDestroyEvent" covered="_WmtcIJobEei5foLskM0Fzg" toBefore="_vKlyAJsVEeiGQY78R_GwXw" message="_vlos8JodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_u7QTMJodEei5foLskM0Fzg" name="Message4SendEvent" covered="_WTEHYJobEei5foLskM0Fzg" message="_u7PFEJodEei5foLskM0Fzg"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_u7QTMZodEei5foLskM0Fzg" name="Message4ReceiveEvent" covered="_WfmHgJobEei5foLskM0Fzg" toBefore="_wnq0AJsVEeiGQY78R_GwXw" message="_u7PFEJodEei5foLskM0Fzg"/>
+ <message xmi:type="uml:Message" xmi:id="_t7k-4JodEei5foLskM0Fzg" name="Message1" messageSort="asynchCall" receiveEvent="_t7mNAJodEei5foLskM0Fzg" sendEvent="_t7ll8JodEei5foLskM0Fzg"/>
+ <message xmi:type="uml:Message" xmi:id="_uLZjkJodEei5foLskM0Fzg" name="Message2" messageSort="asynchCall" receiveEvent="_uLaxsJodEei5foLskM0Fzg" sendEvent="_uLaKoJodEei5foLskM0Fzg"/>
+ <message xmi:type="uml:Message" xmi:id="_ucBZgJodEei5foLskM0Fzg" name="Message3" messageSort="asynchCall" receiveEvent="_ucCAkJodEei5foLskM0Fzg" sendEvent="_ucBZgZodEei5foLskM0Fzg"/>
+ <message xmi:type="uml:Message" xmi:id="_u7PFEJodEei5foLskM0Fzg" name="Message4" messageSort="asynchCall" receiveEvent="_u7QTMZodEei5foLskM0Fzg" sendEvent="_u7QTMJodEei5foLskM0Fzg"/>
+ <message xmi:type="uml:Message" xmi:id="_vlos8JodEei5foLskM0Fzg" name="Message5" messageSort="deleteMessage" receiveEvent="_vlp7EZodEei5foLskM0Fzg" sendEvent="_vlp7EJodEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_9t5oIJodEei5foLskM0Fzg" name="MinDuration1">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_9t5oIpodEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_9t5oIZodEei5foLskM0Fzg" name="MaxDuration1">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_9t5oI5odEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="__GBRoJodEei5foLskM0Fzg" name="MinDuration2">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="__GBRopodEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="__GBRoZodEei5foLskM0Fzg" name="MaxDuration2">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="__GBRo5odEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="__-cucJodEei5foLskM0Fzg" name="MinDuration3">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="__-cucpodEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="__-cucZodEei5foLskM0Fzg" name="MaxDuration3">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="__-cuc5odEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_A1-zYZoeEei5foLskM0Fzg" name="MinDuration4">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_A1-zY5oeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_A1-zYpoeEei5foLskM0Fzg" name="MaxDuration4">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_A1-zZJoeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_CAJgcZoeEei5foLskM0Fzg" name="MinDuration5">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_CAJgc5oeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_CAJgcpoeEei5foLskM0Fzg" name="MaxDuration5">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_CAJgdJoeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_DT_t8ZoeEei5foLskM0Fzg" name="MinDuration6">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_DUAVAZoeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_DUAVAJoeEei5foLskM0Fzg" name="MaxDuration6">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_DUAVApoeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_E9YtoZoeEei5foLskM0Fzg" name="MinDuration7">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_E9ZUsJoeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Duration" xmi:id="_E9YtopoeEei5foLskM0Fzg" name="MaxDuration7">
+ <expr xmi:type="uml:LiteralInteger" xmi:id="_E9ZUsZoeEei5foLskM0Fzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:DurationObservation" xmi:id="_kB1uQJpMEei-GLAJvy8iyw" name="DurationObservation1" event="_se-eAJodEei5foLskM0Fzg _tJeMgJodEei5foLskM0Fzg"/>
+ <packagedElement xmi:type="uml:DurationObservation" xmi:id="_lRUZIJpMEei-GLAJvy8iyw" name="DurationObservation2" event="_t7ll8JodEei5foLskM0Fzg _t7mNAJodEei5foLskM0Fzg"/>
+ <packagedElement xmi:type="uml:DurationObservation" xmi:id="_l3tDsJpMEei-GLAJvy8iyw" name="DurationObservation3" event="_7OuP8JodEei5foLskM0Fzg _uLaxsJodEei5foLskM0Fzg"/>
+ <packagedElement xmi:type="uml:DurationObservation" xmi:id="_m7Vq8JpMEei-GLAJvy8iyw" name="DurationObservation4" event="_7OuP8ZodEei5foLskM0Fzg _tJeMgZodEei5foLskM0Fzg"/>
+ <packagedElement xmi:type="uml:DurationObservation" xmi:id="_oP2m0JpMEei-GLAJvy8iyw" name="DurationObservation5" event="_ucCAkJodEei5foLskM0Fzg _vlp7EJodEei5foLskM0Fzg"/>
+ <packagedElement xmi:type="uml:DurationObservation" xmi:id="_p9P8wJpMEei-GLAJvy8iyw" name="DurationObservation6" event="_vlp7EJodEei5foLskM0Fzg _vlp7EZodEei5foLskM0Fzg"/>
+ <packagedElement xmi:type="uml:DurationObservation" xmi:id="_sy9loJpMEei-GLAJvy8iyw" name="DurationObservation7" event="_se_FEJodEei5foLskM0Fzg _u7QTMZodEei5foLskM0Fzg"/>
+</uml:Model>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.di b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.di
new file mode 100644
index 00000000000..8c549eecdc6
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.infra.services.edit.TypeContext"/>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.notation b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.notation
new file mode 100644
index 00000000000..b6533625ca4
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.notation
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_nHl9MJsbEeiGQY78R_GwXw" type="PapyrusUMLSequenceDiagram" name="durationLinksCreation" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_nHl9MZsbEeiGQY78R_GwXw" type="Interaction_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nHl9MpsbEeiGQY78R_GwXw" type="Interaction_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nHl9M5sbEeiGQY78R_GwXw" type="Interaction_SubfragmentCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_q4xv0JsbEeiGQY78R_GwXw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_q4xv0psbEeiGQY78R_GwXw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_uoMA0JsbEeiGQY78R_GwXw" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinksCreation.uml#_uoF6MJsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uoMA0ZsbEeiGQY78R_GwXw" x="40" y="86" width="20" height="261"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinksCreation.uml#_q4usgJsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q4xv0ZsbEeiGQY78R_GwXw" x="34" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_q-WMUJsbEeiGQY78R_GwXw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_q-WMUpsbEeiGQY78R_GwXw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_4AdXwJsbEeiGQY78R_GwXw" type="BehaviorExecutionSpecification_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4Ad-0ZsbEeiGQY78R_GwXw" type="BehaviorExecutionSpecification_Behavior">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4Ad-0psbEeiGQY78R_GwXw" x="18" y="18"/>
+ </children>
+ <element xmi:type="uml:BehaviorExecutionSpecification" href="bug536631-durationLinksCreation.uml#_4AU04JsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Ad-0JsbEeiGQY78R_GwXw" x="40" y="146" width="20" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_E1H9EJscEeiGQY78R_GwXw" type="ActionExecutionSpecification_Shape">
+ <element xmi:type="uml:ActionExecutionSpecification" href="bug536631-durationLinksCreation.uml#_E07IwJscEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E1H9EZscEeiGQY78R_GwXw" x="40" y="386" width="20" height="100"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinksCreation.uml#_q-TwEJsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q-WMUZsbEeiGQY78R_GwXw" x="274" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rSkI0JsbEeiGQY78R_GwXw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rSkI0psbEeiGQY78R_GwXw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_5eSocJuvEeiGQY78R_GwXw" type="DestructionOccurrenceSpecification_Shape">
+ <element xmi:type="uml:DestructionOccurrenceSpecification" href="bug536631-durationLinksCreation.uml#_5auXEJuvEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5eSocZuvEeiGQY78R_GwXw" x="40" y="366"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinksCreation.uml#_rSgecJsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rSkI0ZsbEeiGQY78R_GwXw" x="514" y="10" height="406"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ra2iIJsbEeiGQY78R_GwXw" type="Lifeline_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ra2iIpsbEeiGQY78R_GwXw" type="Lifeline_NameLabel"/>
+ <children xmi:type="notation:Shape" xmi:id="_tcJrgJsbEeiGQY78R_GwXw" type="DestructionOccurrenceSpecification_Shape">
+ <element xmi:type="uml:DestructionOccurrenceSpecification" href="bug536631-durationLinksCreation.uml#_tb0UUZsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tcJrgZsbEeiGQY78R_GwXw" x="40" y="286"/>
+ </children>
+ <element xmi:type="uml:Lifeline" href="bug536631-durationLinksCreation.uml#_raze0JsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ra2iIZsbEeiGQY78R_GwXw" x="794" y="10" height="326"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nHl9NJsbEeiGQY78R_GwXw"/>
+ </children>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinksCreation.uml#_nHeocJsbEeiGQY78R_GwXw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nHl9NZsbEeiGQY78R_GwXw"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_nHl9NpsbEeiGQY78R_GwXw" name="diagram_compatibility_version" stringValue="1.4.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_nHl9N5sbEeiGQY78R_GwXw"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_nHl9OJsbEeiGQY78R_GwXw" diagramKindId="org.eclipse.papyrus.uml.diagram.sequence">
+ <owner xmi:type="uml:Model" href="bug536631-durationLinksCreation.uml#_nG8c8JsbEeiGQY78R_GwXw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_EleasJsgEeiGQY78R_GwXw" name="css_stylesheets" eObjectListValue="_ElaJQJsgEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Interaction" href="bug536631-durationLinksCreation.uml#_nHeocJsbEeiGQY78R_GwXw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_tb7CAJsbEeiGQY78R_GwXw" type="Message_DeleteEdge" source="_rSkI0JsbEeiGQY78R_GwXw" target="_ra2iIJsbEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tb7CA5sbEeiGQY78R_GwXw" type="Message_DeleteNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tb7CBJsbEeiGQY78R_GwXw" x="29" y="-33"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tb7CBZsbEeiGQY78R_GwXw" type="Message_DeleteStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tb7CBpsbEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tb7CAZsbEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinksCreation.uml#_tbzGMJsbEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tb7CApsbEeiGQY78R_GwXw" points="[0, 0, -280, -100]$[280, 100, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tcEL8JsbEeiGQY78R_GwXw" id="(0.5,0.5566502463054186)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tcEL8ZsbEeiGQY78R_GwXw" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5n8S8JsbEeiGQY78R_GwXw" type="Message_AsynchEdge" source="_q4xv0JsbEeiGQY78R_GwXw" target="_q-WMUJsbEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5n8S85sbEeiGQY78R_GwXw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5n8S9JsbEeiGQY78R_GwXw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5n8S9ZsbEeiGQY78R_GwXw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5n8S9psbEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5n8S8ZsbEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinksCreation.uml#_5n2zYJsbEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5n8S8psbEeiGQY78R_GwXw" points="[0, 0, -240, 0]$[240, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5oGD8JsbEeiGQY78R_GwXw" id="(0.5,0.78)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5oGrAJsbEeiGQY78R_GwXw" id="(0.5,0.78)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_54kv8JsbEeiGQY78R_GwXw" type="Message_AsynchEdge" source="_q-WMUJsbEeiGQY78R_GwXw" target="_q4xv0JsbEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_54lXAJsbEeiGQY78R_GwXw" type="Message_AsynchNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_54lXAZsbEeiGQY78R_GwXw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_54lXApsbEeiGQY78R_GwXw" type="Message_AsynchStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_54lXA5sbEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_54kv8ZsbEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinksCreation.uml#_54Zw0JsbEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_54kv8psbEeiGQY78R_GwXw" points="[0, 0, 240, 0]$[-240, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_55Lz8JsbEeiGQY78R_GwXw" id="(0.5,0.8942857142857142)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_55Lz8ZsbEeiGQY78R_GwXw" id="(0.5,0.8942857142857142)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5d2jkJuvEeiGQY78R_GwXw" type="Message_DeleteEdge" source="_q-WMUJsbEeiGQY78R_GwXw" target="_rSkI0JsbEeiGQY78R_GwXw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5d2jk5uvEeiGQY78R_GwXw" type="Message_DeleteNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5d3KoJuvEeiGQY78R_GwXw" x="1" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5d3KoZuvEeiGQY78R_GwXw" type="Message_DeleteStereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5d3KopuvEeiGQY78R_GwXw" x="1" y="-33"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5d2jkZuvEeiGQY78R_GwXw"/>
+ <element xmi:type="uml:Message" href="bug536631-durationLinksCreation.uml#_5ar60JuvEeiGQY78R_GwXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5d2jkpuvEeiGQY78R_GwXw" points="[0, 0, -240, -120]$[240, 120, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5eHpUJuvEeiGQY78R_GwXw" id="(0.5,0.4085714285714286)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5eHpUZuvEeiGQY78R_GwXw" id="(0.5,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <css:StyleSheetReference xmi:id="_ElaJQJsgEeiGQY78R_GwXw" path="/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/style.css"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.uml b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.uml
new file mode 100644
index 00000000000..0a7cdae9ea9
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/resource/bugs/bug536631-durationLinksCreation.uml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_nG8c8JsbEeiGQY78R_GwXw" name="durationLinksCreation">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_nLnhkJsbEeiGQY78R_GwXw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Interaction" xmi:id="_nHeocJsbEeiGQY78R_GwXw" name="Interaction1">
+ <lifeline xmi:type="uml:Lifeline" xmi:id="_q4usgJsbEeiGQY78R_GwXw" name="Lifeline1" coveredBy="_uoHvYJsbEeiGQY78R_GwXw _uoF6MJsbEeiGQY78R_GwXw _uoHvYZsbEeiGQY78R_GwXw _5n4BgJsbEeiGQY78R_GwXw _54aX4ZsbEeiGQY78R_GwXw"/>
+ <lifeline xmi:type="uml:Lifeline" xmi:id="_q-TwEJsbEeiGQY78R_GwXw" name="Lifeline2" coveredBy="_4AWDAJsbEeiGQY78R_GwXw _4AU04JsbEeiGQY78R_GwXw _5atwAJuvEeiGQY78R_GwXw _E0898JscEeiGQY78R_GwXw _E07IwJscEeiGQY78R_GwXw _E09lAJscEeiGQY78R_GwXw _5n4BgZsbEeiGQY78R_GwXw _54aX4JsbEeiGQY78R_GwXw"/>
+ <lifeline xmi:type="uml:Lifeline" xmi:id="_rSgecJsbEeiGQY78R_GwXw" name="Lifeline3" coveredBy="_tb0UUJsbEeiGQY78R_GwXw _5auXEJuvEeiGQY78R_GwXw"/>
+ <lifeline xmi:type="uml:Lifeline" xmi:id="_raze0JsbEeiGQY78R_GwXw" name="Lifeline4" coveredBy="_tb0UUZsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_uoHvYJsbEeiGQY78R_GwXw" name="ActionExecutionSpecification1Start" covered="_q4usgJsbEeiGQY78R_GwXw" execution="_uoF6MJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:ActionExecutionSpecification" xmi:id="_uoF6MJsbEeiGQY78R_GwXw" name="ActionExecutionSpecification1" covered="_q4usgJsbEeiGQY78R_GwXw" finish="_uoHvYZsbEeiGQY78R_GwXw" start="_uoHvYJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_4AWDAJsbEeiGQY78R_GwXw" name="BehaviorExecutionSpecification2Start" covered="_q-TwEJsbEeiGQY78R_GwXw" execution="_4AU04JsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_4AU04JsbEeiGQY78R_GwXw" name="BehaviorExecutionSpecification2" covered="_q-TwEJsbEeiGQY78R_GwXw" finish="_5atwAJuvEeiGQY78R_GwXw" start="_4AWDAJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_tb0UUJsbEeiGQY78R_GwXw" name="Message2SendEvent" covered="_rSgecJsbEeiGQY78R_GwXw" message="_tbzGMJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_5atwAJuvEeiGQY78R_GwXw" name="Message1SendEvent" covered="_q-TwEJsbEeiGQY78R_GwXw" message="_5ar60JuvEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:DestructionOccurrenceSpecification" xmi:id="_tb0UUZsbEeiGQY78R_GwXw" name="Message2ReceiveDestroyEvent" covered="_raze0JsbEeiGQY78R_GwXw" message="_tbzGMJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_uoHvYZsbEeiGQY78R_GwXw" name="ActionExecutionSpecification1Finish" covered="_q4usgJsbEeiGQY78R_GwXw" execution="_uoF6MJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_E0898JscEeiGQY78R_GwXw" name="ActionExecutionSpecification3Start" covered="_q-TwEJsbEeiGQY78R_GwXw" execution="_E07IwJscEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:ActionExecutionSpecification" xmi:id="_E07IwJscEeiGQY78R_GwXw" name="ActionExecutionSpecification3" covered="_q-TwEJsbEeiGQY78R_GwXw" finish="_E09lAJscEeiGQY78R_GwXw" start="_E0898JscEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:DestructionOccurrenceSpecification" xmi:id="_5auXEJuvEeiGQY78R_GwXw" name="Message1ReceiveDestroyEvent" covered="_rSgecJsbEeiGQY78R_GwXw" message="_5ar60JuvEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_E09lAJscEeiGQY78R_GwXw" name="ActionExecutionSpecification3Finish" covered="_q-TwEJsbEeiGQY78R_GwXw" execution="_E07IwJscEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_5n4BgJsbEeiGQY78R_GwXw" name="Message3SendEvent" covered="_q4usgJsbEeiGQY78R_GwXw" message="_5n2zYJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_5n4BgZsbEeiGQY78R_GwXw" name="Message3ReceiveEvent" covered="_q-TwEJsbEeiGQY78R_GwXw" message="_5n2zYJsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_54aX4JsbEeiGQY78R_GwXw" name="Message4SendEvent" covered="_q-TwEJsbEeiGQY78R_GwXw" message="_54Zw0JsbEeiGQY78R_GwXw"/>
+ <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_54aX4ZsbEeiGQY78R_GwXw" name="Message4ReceiveEvent" covered="_q4usgJsbEeiGQY78R_GwXw" message="_54Zw0JsbEeiGQY78R_GwXw"/>
+ <message xmi:type="uml:Message" xmi:id="_tbzGMJsbEeiGQY78R_GwXw" name="Message2" messageSort="deleteMessage" receiveEvent="_tb0UUZsbEeiGQY78R_GwXw" sendEvent="_tb0UUJsbEeiGQY78R_GwXw"/>
+ <message xmi:type="uml:Message" xmi:id="_5n2zYJsbEeiGQY78R_GwXw" name="Message3" messageSort="asynchCall" receiveEvent="_5n4BgZsbEeiGQY78R_GwXw" sendEvent="_5n4BgJsbEeiGQY78R_GwXw"/>
+ <message xmi:type="uml:Message" xmi:id="_54Zw0JsbEeiGQY78R_GwXw" name="Message4" messageSort="asynchCall" receiveEvent="_54aX4ZsbEeiGQY78R_GwXw" sendEvent="_54aX4JsbEeiGQY78R_GwXw"/>
+ <message xmi:type="uml:Message" xmi:id="_5ar60JuvEeiGQY78R_GwXw" name="Message1" messageSort="deleteMessage" receiveEvent="_5auXEJuvEeiGQY78R_GwXw" sendEvent="_5atwAJuvEeiGQY78R_GwXw"/>
+ </packagedElement>
+</uml:Model>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkCreationTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkCreationTest.java
new file mode 100644
index 00000000000..391e0904c4b
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkCreationTest.java
@@ -0,0 +1,311 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import java.util.Random;
+import java.util.Set;
+
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.junit.framework.classification.tests.AbstractPapyrusTest;
+import org.eclipse.papyrus.junit.utils.rules.PapyrusEditorFixture;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.CenterAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.ConnectionSourceAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.ConnectionTargetAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.NodeBottomAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.NodeTopAnchor;
+import org.eclipse.uml2.uml.ActionExecutionSpecification;
+import org.eclipse.uml2.uml.BehaviorExecutionSpecification;
+import org.eclipse.uml2.uml.DestructionOccurrenceSpecification;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Message;
+import org.eclipse.uml2.uml.NamedElement;
+import org.hamcrest.core.IsInstanceOf;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+public abstract class AbstractOccurrenceLinkCreationTest<T extends NamedElement> extends AbstractPapyrusTest {
+
+ @Rule
+ public final PapyrusEditorFixture editor = new PapyrusEditorFixture();
+
+ IGraphicalEditPart exec1, exec2, exec3, destruction1, destruction2;
+ ConnectionNodeEditPart message3, message4;
+ ConnectionNodeEditPart[] links;
+
+ private Class<T> umlClass;
+
+ private String paletteToolId;
+
+ private Class<? extends Connection> figureClass;
+
+ public AbstractOccurrenceLinkCreationTest(Class<T> umlClass, String paletteToolId, Class<? extends Connection> figureClass) {
+ this.umlClass = umlClass;
+ this.paletteToolId = paletteToolId;
+ this.figureClass = figureClass;
+ }
+
+ @Before
+ public void getElements() {
+ exec1 = (IGraphicalEditPart) editor.findEditPart("ActionExecutionSpecification1", ActionExecutionSpecification.class);
+ exec2 = (IGraphicalEditPart) editor.findEditPart("BehaviorExecutionSpecification2", BehaviorExecutionSpecification.class);
+ exec3 = (IGraphicalEditPart) editor.findEditPart("ActionExecutionSpecification3", ActionExecutionSpecification.class);
+ destruction1 = (IGraphicalEditPart) editor.findEditPart("Message1ReceiveDestroyEvent", DestructionOccurrenceSpecification.class);
+ destruction2 = (IGraphicalEditPart) editor.findEditPart("Message2ReceiveDestroyEvent", DestructionOccurrenceSpecification.class);
+
+ message3 = (ConnectionNodeEditPart) editor.findEditPart("Message3", Message.class);
+ message4 = (ConnectionNodeEditPart) editor.findEditPart("Message4", Message.class);
+ }
+
+ @Test
+ public void testLinkCreationOnMessageSourceToTarget() throws Exception {
+ editor.getActiveDiagramEditor().getDiagramGraphicalViewer().reveal(message4);
+
+ Point message3Source = findSourcePoint(message3);
+ Point message4Target = findTargetPoint(message4);
+
+ editor.createLink(paletteToolId, message3, message4, message3Source, message4Target);
+
+ Message umlMessage3 = (Message) EMFHelper.getEObject(message3);
+ Message umlMessage4 = (Message) EMFHelper.getEObject(message4);
+
+ // There's no T in the model before we create the link, so just find the only one
+ Set<T> allInstances = EMFHelper.allInstances(umlMessage3.eResource(), umlClass);
+ T newLink = allInstances.iterator().next();
+
+ EditPart newLinkEditPart = editor.findEditPart(newLink);
+ Assert.assertThat(newLinkEditPart, IsInstanceOf.instanceOf(ConnectionNodeEditPart.class));
+ ConnectionNodeEditPart newConnection = (ConnectionNodeEditPart) newLinkEditPart;
+
+ Element source = getSemanticSource(newLink);
+ Element target = getSemanticTarget(newLink);
+
+ Assert.assertEquals(umlMessage3.getSendEvent(), source);
+ Assert.assertEquals(umlMessage4.getReceiveEvent(), target);
+ Assert.assertThat(newConnection.getConnectionFigure(), IsInstanceOf.instanceOf(figureClass));
+ Assert.assertThat(newConnection.getConnectionFigure().getSourceAnchor(), IsInstanceOf.instanceOf(ConnectionSourceAnchor.class));
+ Assert.assertThat(newConnection.getConnectionFigure().getTargetAnchor(), IsInstanceOf.instanceOf(ConnectionTargetAnchor.class));
+ }
+
+ @Test
+ public void testLinkCreationOnMessageTargetToSource() throws Exception {
+ editor.getActiveDiagramEditor().getDiagramGraphicalViewer().reveal(message4);
+
+ Point message3Target = findTargetPoint(message3);
+ Point message4Source = findSourcePoint(message4);
+
+ editor.createLink(paletteToolId, message3, message4, message3Target, message4Source);
+
+ Message umlMessage3 = (Message) EMFHelper.getEObject(message3);
+ Message umlMessage4 = (Message) EMFHelper.getEObject(message4);
+
+ // There's no T in the model before we create the link, so just find the only one
+ Set<T> allInstances = EMFHelper.allInstances(umlMessage3.eResource(), umlClass);
+ T newLink = allInstances.iterator().next();
+
+ EditPart newLinkEditPart = editor.findEditPart(newLink);
+ Assert.assertThat(newLinkEditPart, IsInstanceOf.instanceOf(ConnectionNodeEditPart.class));
+ ConnectionNodeEditPart newConnection = (ConnectionNodeEditPart) newLinkEditPart;
+
+ Element source = getSemanticSource(newLink);
+ Element target = getSemanticTarget(newLink);
+
+ Assert.assertEquals(umlMessage3.getReceiveEvent(), source);
+ Assert.assertEquals(umlMessage4.getSendEvent(), target);
+ Assert.assertThat(newConnection.getConnectionFigure(), IsInstanceOf.instanceOf(figureClass));
+ Assert.assertThat(newConnection.getConnectionFigure().getSourceAnchor(), IsInstanceOf.instanceOf(ConnectionTargetAnchor.class));
+ Assert.assertThat(newConnection.getConnectionFigure().getTargetAnchor(), IsInstanceOf.instanceOf(ConnectionSourceAnchor.class));
+ }
+
+ @Test
+ public void testLinkCreationOnExecSpecStartToFinish() throws Exception {
+ editor.getActiveDiagramEditor().getDiagramGraphicalViewer().reveal(exec2);
+
+ Point exec1Start = findStartPoint(exec1);
+ Point exec2Finish = findFinishPoint(exec2);
+
+ editor.createLink(paletteToolId, exec1, exec2, exec1Start, exec2Finish);
+
+ ActionExecutionSpecification umlExec1 = (ActionExecutionSpecification) EMFHelper.getEObject(exec1);
+ BehaviorExecutionSpecification umlExec2 = (BehaviorExecutionSpecification) EMFHelper.getEObject(exec2);
+
+ // There's no T in the model before we create the link, so just find the only one
+ Set<T> allInstances = EMFHelper.allInstances(umlExec1.eResource(), umlClass);
+ T newLink = allInstances.iterator().next();
+
+ EditPart newLinkEditPart = editor.findEditPart(newLink);
+ Assert.assertThat(newLinkEditPart, IsInstanceOf.instanceOf(ConnectionNodeEditPart.class));
+ ConnectionNodeEditPart newConnection = (ConnectionNodeEditPart) newLinkEditPart;
+
+ Element source = getSemanticSource(newLink);
+ Element target = getSemanticTarget(newLink);
+
+ Assert.assertEquals(umlExec1.getStart(), source);
+ Assert.assertEquals(umlExec2.getFinish(), target);
+ Assert.assertThat(newConnection.getConnectionFigure(), IsInstanceOf.instanceOf(figureClass));
+ Assert.assertThat(newConnection.getConnectionFigure().getSourceAnchor(), IsInstanceOf.instanceOf(NodeTopAnchor.class));
+ Assert.assertThat(newConnection.getConnectionFigure().getTargetAnchor(), IsInstanceOf.instanceOf(NodeBottomAnchor.class));
+ }
+
+ @Test
+ public void testLinkCreationOnExecSpecFinishToStart() throws Exception {
+ editor.getActiveDiagramEditor().getDiagramGraphicalViewer().reveal(exec3);
+
+ Point exec1Finish = findFinishPoint(exec1);
+ Point exec3Start = findStartPoint(exec3);
+
+ editor.createLink(paletteToolId, exec1, exec3, exec1Finish, exec3Start);
+
+ ActionExecutionSpecification umlExec1 = (ActionExecutionSpecification) EMFHelper.getEObject(exec1);
+ ActionExecutionSpecification umlExec3 = (ActionExecutionSpecification) EMFHelper.getEObject(exec3);
+
+ // There's no T in the model before we create the link, so just find the only one
+ Set<T> allInstances = EMFHelper.allInstances(umlExec1.eResource(), umlClass);
+ T newLink = allInstances.iterator().next();
+
+ EditPart newLinkEditPart = editor.findEditPart(newLink);
+ Assert.assertThat(newLinkEditPart, IsInstanceOf.instanceOf(ConnectionNodeEditPart.class));
+ ConnectionNodeEditPart newConnection = (ConnectionNodeEditPart) newLinkEditPart;
+
+ Element source = getSemanticSource(newLink);
+ Element target = getSemanticTarget(newLink);
+
+ Assert.assertEquals(umlExec1.getFinish(), source);
+ Assert.assertEquals(umlExec3.getStart(), target);
+ Assert.assertThat(newConnection.getConnectionFigure(), IsInstanceOf.instanceOf(figureClass));
+ Assert.assertThat(newConnection.getConnectionFigure().getSourceAnchor(), IsInstanceOf.instanceOf(NodeBottomAnchor.class));
+ Assert.assertThat(newConnection.getConnectionFigure().getTargetAnchor(), IsInstanceOf.instanceOf(NodeTopAnchor.class));
+ }
+
+ @Test
+ public void testLinkCreationOnDestruction() throws Exception {
+ editor.getActiveDiagramEditor().getDiagramGraphicalViewer().reveal(destruction2);
+
+ Point destruction1Any = findAnyPoint(destruction1);
+ Point destruction2Any = findAnyPoint(destruction2);
+
+ editor.createLink(paletteToolId, destruction1, destruction2, destruction1Any, destruction2Any);
+
+ DestructionOccurrenceSpecification umlDest1 = (DestructionOccurrenceSpecification) EMFHelper.getEObject(destruction1);
+ DestructionOccurrenceSpecification umlDest2 = (DestructionOccurrenceSpecification) EMFHelper.getEObject(destruction2);
+
+ // There's no T in the model before we create the link, so just find the only one
+ Set<T> allInstances = EMFHelper.allInstances(umlDest1.eResource(), umlClass);
+ T newLink = allInstances.iterator().next();
+
+ EditPart newLinkEditPart = editor.findEditPart(newLink);
+ Assert.assertThat(newLinkEditPart, IsInstanceOf.instanceOf(ConnectionNodeEditPart.class));
+ ConnectionNodeEditPart newConnection = (ConnectionNodeEditPart) newLinkEditPart;
+
+ Element source = getSemanticSource(newLink);
+ Element target = getSemanticTarget(newLink);
+
+ Assert.assertEquals(umlDest1, source);
+ Assert.assertEquals(umlDest2, target);
+ Assert.assertThat(newConnection.getConnectionFigure(), IsInstanceOf.instanceOf(figureClass));
+ Assert.assertThat(newConnection.getConnectionFigure().getSourceAnchor(), IsInstanceOf.instanceOf(CenterAnchor.class));
+ Assert.assertThat(newConnection.getConnectionFigure().getTargetAnchor(), IsInstanceOf.instanceOf(CenterAnchor.class));
+ }
+
+ protected abstract Element getSemanticSource(T link);
+
+ protected abstract Element getSemanticTarget(T link);
+
+ private Point findSourcePoint(ConnectionNodeEditPart editPart) {
+ PolylineConnection connection = (PolylineConnection) editPart.getConnectionFigure();
+ Point start = connection.getStart().getCopy();
+ Point end = connection.getEnd().getCopy();
+
+ connection.translateToAbsolute(start);
+ connection.translateToAbsolute(end);
+
+ // Messages are straight lines, so just shift the X/Y slightly towards the source side
+ int newX = (int) (0.75 * start.x() + 0.25 * end.x());
+ int newY = (int) (0.75 * start.y() + 0.25 * end.y());
+
+ return new Point(newX, newY);
+ }
+
+ private Point findTargetPoint(ConnectionNodeEditPart editPart) {
+ PolylineConnection connection = (PolylineConnection) editPart.getConnectionFigure();
+ Point end = connection.getEnd().getCopy();
+ Point start = connection.getStart().getCopy();
+
+ connection.translateToAbsolute(start);
+ connection.translateToAbsolute(end);
+
+ // Messages are straight lines, so just shift the X/Y slightly towards the target side
+ int newX = (int) (0.75 * end.x() + 0.25 * start.x());
+ int newY = (int) (0.75 * end.y() + 0.25 * start.y());
+
+ return new Point(newX, newY);
+ }
+
+ private Point findStartPoint(IGraphicalEditPart editPart) {
+ IFigure figure = editPart.getFigure();
+ Rectangle bounds = figure.getBounds();
+
+ Point top = bounds.getTop().getCopy();
+ Point bottom = bounds.getBottom().getCopy();
+ figure.translateToAbsolute(top);
+ figure.translateToAbsolute(bottom);
+
+ int newX = top.x() + 7; // Slightly shift to the right (arbitrary small value)
+ int newY = (int) (0.75 * top.y() + 0.25 * bottom.y()); // Shift to the bottom (We just need to be on the upper half of the ExecSpec to target the start event)
+
+ return new Point(newX, newY);
+ }
+
+ private Point findFinishPoint(IGraphicalEditPart editPart) {
+ IFigure figure = editPart.getFigure();
+ Rectangle bounds = figure.getBounds();
+
+ Point top = bounds.getTop().getCopy();
+ Point bottom = bounds.getBottom().getCopy();
+ figure.translateToAbsolute(top);
+ figure.translateToAbsolute(bottom);
+
+ int newX = bottom.x() - 4; // Slightly shift to the left (arbitrary value between -10 and 10)
+ int newY = (int) (0.25 * top.y() + 0.75 * bottom.y()); // Shift to the top (We just need to be on the lower half of the ExecSpec to target the finish event)
+
+ return new Point(newX, newY);
+ }
+
+ private Point findAnyPoint(IGraphicalEditPart editPart) {
+ IFigure figure = editPart.getFigure();
+ Rectangle bounds = figure.getBounds();
+
+ Point topLeft = bounds.getTopLeft().getCopy();
+ Point bottomRight = bounds.getBottomRight().getCopy();
+
+ Random r = new Random();
+ int x = topLeft.x() + r.nextInt(bottomRight.x() - topLeft.x());
+ int y = topLeft.y() + r.nextInt(bottomRight.y() - topLeft.y());
+
+ return new Point(x, y);
+ }
+
+
+
+}
+
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkTest.java
new file mode 100644
index 00000000000..17e396563ed
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/AbstractOccurrenceLinkTest.java
@@ -0,0 +1,285 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import java.util.Arrays;
+
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.requests.ChangeBoundsRequest;
+import org.eclipse.gef.requests.ReconnectRequest;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.junit.framework.classification.tests.AbstractPapyrusTest;
+import org.eclipse.papyrus.junit.utils.rules.PapyrusEditorFixture;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.CenterAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.ConnectionSourceAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.ConnectionTargetAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.NodeBottomAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.anchors.NodeTopAnchor;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UpdateWeakReferenceForExecSpecEditPolicy;
+import org.eclipse.uml2.uml.ActionExecutionSpecification;
+import org.eclipse.uml2.uml.DestructionOccurrenceSpecification;
+import org.eclipse.uml2.uml.Lifeline;
+import org.eclipse.uml2.uml.Message;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OccurrenceSpecification;
+import org.hamcrest.core.IsEqual;
+import org.hamcrest.core.IsInstanceOf;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+/**
+ * <p>
+ * Base test class for DurationLinks (DurationConstraint and DurationObservation) and GeneralOrdering
+ * </p>
+ * <p>
+ * These links are really similar in that they use the same Anchors representing
+ * {@link OccurrenceSpecification}s, thus mostly behave the same. The only differences
+ * are semantic, and they use a different figure.
+ * </p>
+ */
+public abstract class AbstractOccurrenceLinkTest<T extends NamedElement> extends AbstractPapyrusTest {
+
+ @Rule
+ public final PapyrusEditorFixture editor = new PapyrusEditorFixture();
+
+ IGraphicalEditPart lifeline1, lifeline3, exec1, exec3, destruction;
+ ConnectionNodeEditPart message1, message4;
+ ConnectionNodeEditPart[] links;
+
+ private String[] linkNames;
+
+ private Class<T> umlClass;
+
+ private Class<? extends Connection> connectionFigure;
+
+ public AbstractOccurrenceLinkTest(String[] linkNames, Class<T> umlClass, Class<? extends Connection> connectionFigure) {
+ Assert.assertTrue("Test setup error: there should be at least 7 links defined for this test class", linkNames.length >= 7);
+ this.linkNames = linkNames;
+ this.umlClass = umlClass;
+ this.connectionFigure = connectionFigure;
+ }
+
+ @Before
+ public void getElements() {
+ lifeline1 = (IGraphicalEditPart) editor.findEditPart("Lifeline1", Lifeline.class);
+ lifeline3 = (IGraphicalEditPart) editor.findEditPart("Lifeline3", Lifeline.class);
+ exec1 = (IGraphicalEditPart) editor.findEditPart("ActionExecutionSpecification1", ActionExecutionSpecification.class);
+ exec3 = (IGraphicalEditPart) editor.findEditPart("ActionExecutionSpecification3", ActionExecutionSpecification.class);
+ destruction = (IGraphicalEditPart) editor.findEditPart("Message5ReceiveDestroyEvent", DestructionOccurrenceSpecification.class);
+
+ message1 = (ConnectionNodeEditPart) editor.findEditPart("Message1", Message.class);
+ message4 = (ConnectionNodeEditPart) editor.findEditPart("Message4", Message.class);
+
+ links = Arrays.stream(linkNames).map(name -> editor.findEditPart(name, umlClass))
+ .map(ConnectionNodeEditPart.class::cast)
+ .toArray(ConnectionNodeEditPart[]::new);
+ }
+
+ @Test
+ public void testLinksAnchors() {
+ checkFixedAnchors(links[0], NodeTopAnchor.class, NodeTopAnchor.class);
+ checkFixedAnchors(links[1], ConnectionSourceAnchor.class, ConnectionTargetAnchor.class);
+ checkFixedAnchors(links[2], NodeTopAnchor.class, ConnectionTargetAnchor.class);
+ checkFixedAnchors(links[3], NodeBottomAnchor.class, NodeBottomAnchor.class);
+ checkFixedAnchors(links[4], ConnectionTargetAnchor.class, ConnectionSourceAnchor.class);
+ checkFixedAnchors(links[5], ConnectionSourceAnchor.class, CenterAnchor.class);
+ checkFixedAnchors(links[6], NodeBottomAnchor.class, ConnectionTargetAnchor.class);
+ }
+
+ @Test
+ public void testLinksDisplay() {
+ for (ConnectionNodeEditPart link : links) {
+ Assert.assertThat(link.getFigure(), IsInstanceOf.instanceOf(connectionFigure));
+ }
+
+ // Check the initial anchors. Note that this test is fragile, since the anchors
+ // depend on the start/finish position of ExecSpecs, Messages and the position of
+ // destruction events.
+ // If any of these elements change, the assertions will fail, even if the Link
+ // anchor itself is correct.
+ // Anchors are aligned on the grid (Or in the middle of two points on the grid, e.g. for the X location
+ // on an ExecutionSpecification).
+ // It seems that message anchors are not always perfectly aligned on the grid (Values "301", "401")
+ checkPosition(links[0], 130, 100, 410, 160);
+ checkPosition(links[1], 140, 180, 400, 180);
+ checkPosition(links[2], 420, 180, 140, 240);
+ checkPosition(links[3], 420, 280, 410, 301);
+ checkPosition(links[4], 410, 340, 410, 400);
+ checkPosition(links[5], 410, 400, 690, 500);
+ checkPosition(links[6], 130, 401, 410, 580);
+ }
+
+ @Test
+ public void testAnchorUpdateOnMessages() {
+ // Move a message
+ ReconnectRequest request = new ReconnectRequest(RequestConstants.REQ_RECONNECT_SOURCE);
+ request.setConnectionEditPart(message1);
+
+ Point sourceLocation = ((PolylineConnection) message1.getConnectionFigure()).getStart().getCopy();
+ sourceLocation.setY(sourceLocation.y() - 40);
+ // sourceLocation.setX(sourceLocation.x() + 3); // Move slightly to the right, to make sure we hover the lifeline and not the exec spec
+ request.setLocation(sourceLocation);
+
+ EditPart targetEditPart = lifeline1.getTargetEditPart(request);
+ request.setTargetEditPart(targetEditPart);
+
+ editor.execute(targetEditPart.getCommand(request));
+
+ // Check that the duration link follows
+ /**
+ * FIXME: newStartX should be 140, but the Message Reconnect is incorrect, and the DurationLink simply follows
+ * The Message Start Anchor is moved to the left side of the ExecSpec, instead of the right side.
+ * When the MessageReconnect bug is fixed, this should be changed back to 140
+ */
+ int newStartX = 120;
+ checkPosition(links[1], newStartX, 140, 400, 180);
+ }
+
+ @Test
+ public void testAnchorUpdateOnExecSpec() {
+ // Move an ExecutionSpecification
+ ChangeBoundsRequest request = new ChangeBoundsRequest(RequestConstants.REQ_MOVE);
+ request.setEditParts(exec1);
+ request.setMoveDelta(new Point(0, 40));
+
+ Point center = exec1.getFigure().getBounds().getCenter().getCopy();
+ center.setY(center.y() + 40);
+ request.setLocation(center); // Probably doesn't matter
+
+ // By default, messages located below an ExecSpec will move with it. We don't want that here.
+ disableMoveMessages(request, exec1);
+
+ EditPart targetPart = exec1.getTargetEditPart(request);
+ editor.execute(targetPart.getCommand(request));
+
+ // Check that the duration links (1 and 7) follow
+ checkPosition(links[0], 130, 140, 410, 160);
+ checkPosition(links[6], 130, 440, 410, 580);
+ }
+
+ private void disableMoveMessages(ChangeBoundsRequest request, IGraphicalEditPart editPart) {
+ // Unfortunately, there is no request constant to specify this; this is done via a Keyboard
+ // listener installed on a specific EditPolicy, so we have to fake the Shift key-press
+ EditPolicy editPolicy = editPart.getEditPolicy(UpdateWeakReferenceForExecSpecEditPolicy.UDPATE_WEAK_REFERENCE_FOR_EXECSPEC);
+ ((UpdateWeakReferenceForExecSpecEditPolicy) editPolicy).setKeyPressState(true);
+ }
+
+ @Test
+ public void testAnchorUpdateOnDestruction() {
+ // Move a DestructionOccurrence. Note: it's currently not possible to move the Destruction directly,
+ // so we move the lifeline horizontally instead.
+ ChangeBoundsRequest request = new ChangeBoundsRequest(RequestConstants.REQ_MOVE);
+ request.setEditParts(lifeline3); // Lifeline3 owns a DestructionOccurrenceSpecification
+ request.setMoveDelta(new Point(120, 0));
+
+ Point center = lifeline3.getFigure().getBounds().getCenter().getCopy();
+ center.setX(center.x() + 120);
+ request.setLocation(center); // Probably doesn't matter
+
+ EditPart targetPart = lifeline3.getTargetEditPart(request);
+ editor.execute(targetPart.getCommand(request));
+
+ // Check that the duration link follows
+ checkPosition(links[5], 410, 400, 810, 500);
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testLinkDisappearOnSemanticChange() {
+ T link = (T) EMFHelper.getEObject(links[0]);
+
+ // First change doesn't change source/target; the link should remain
+ doUnrelatedChange(link);
+ Assert.assertTrue("The edit part for " + linkNames[0] + " should still be active", links[0].isActive());
+
+ // Second change modifies the target; the link should be deleted
+ doChangeTarget(link);
+ checkDeleted(links[0]);
+ }
+
+ /**
+ * Execute a semantic change on the given link that doesn't affect
+ * its source or target
+ *
+ * @param linkToChange
+ */
+ protected abstract void doUnrelatedChange(T linkToChange);
+
+ /**
+ * Execute a semantic change on the given link that modifies its target
+ *
+ * @param linkToChange
+ */
+ protected abstract void doChangeTarget(T linkToChange);
+
+ @Test
+ public void testLinkDisappearOnAnchorageChange() {
+ editor.delete(message1);
+ checkDeleted(links[1]);
+
+ editor.delete(exec3);
+ checkDeleted(links[2]);
+ checkDeleted(links[3]);
+
+ editor.delete(destruction);
+ checkDeleted(links[5]);
+ checkDeleted(links[4]); // This is indirect: the deletion of the Destruction removes the Delete Message as well, on which link5 is anchored
+
+ // Other durations are still present & active
+ Assert.assertTrue(linkNames[0] + " should still be active", links[0].isActive());
+ Assert.assertTrue(linkNames[6] + " should still be active", links[6].isActive());
+ }
+
+ private static void checkDeleted(EditPart editPart) {
+ Assert.assertFalse("The edit part should be destroyed", editPart.isActive());
+ View view = (View) editPart.getModel();
+ Assert.assertNull("The edit part's view should no longer be contained in the model", view.eContainer());
+ }
+
+ private static void checkPosition(ConnectionNodeEditPart connection, int startX, int startY, int endX, int endY) {
+ PolylineConnection polyline = (PolylineConnection) connection.getConnectionFigure();
+ int[] expected = new int[] { startX, startY, endX, endY };
+
+ Point start = absolute(polyline, polyline.getStart());
+ Point end = absolute(polyline, polyline.getEnd());
+ int[] actual = new int[] { start.x(), start.y(), end.x(), end.y() };
+
+ Assert.assertThat(actual, IsEqual.equalTo(expected));
+ }
+
+ private static Point absolute(IFigure reference, Point pointInReference) {
+ Point result = pointInReference.getCopy();
+ reference.translateToAbsolute(result);
+ return result;
+ }
+
+ private static void checkFixedAnchors(ConnectionNodeEditPart connection, Class<? extends ConnectionAnchor> sourceAnchor, Class<? extends ConnectionAnchor> targetAnchor) {
+ String connectionName = ((NamedElement) EMFHelper.getEObject(connection)).getName();
+
+ Assert.assertThat("Invalid source anchor for " + connectionName, connection.getConnectionFigure().getSourceAnchor(), IsInstanceOf.instanceOf(sourceAnchor));
+ Assert.assertThat("Invalid target anchor for " + connectionName, connection.getConnectionFigure().getTargetAnchor(), IsInstanceOf.instanceOf(targetAnchor));
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/BugTests.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/BugTests.java
index 011abe01e00..4d10f16e886 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/BugTests.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/BugTests.java
@@ -39,6 +39,12 @@ import org.junit.runners.Suite.SuiteClasses;
TestCFOperandsCoveredNodes.class,
TestCFOperandsSemanticCoverage.class,
TestCFOperandsReorder.class,
+ TestDurationConstraintDisplay.class,
+ TestDurationObservationDisplay.class,
+ TestGeneralOrderingDisplay.class,
+ DurationConstraintCreationTest.class,
+ DurationObservationCreationTest.class,
+ GeneralOrderingCreationTest.class,
})
public class BugTests {
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationConstraintCreationTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationConstraintCreationTest.java
new file mode 100644
index 00000000000..7415acafe78
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationConstraintCreationTest.java
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.diagram.sequence.figures.DurationLinkFigure;
+import org.eclipse.uml2.uml.DurationConstraint;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * Creation test for DurationConstraintLinks
+ */
+@PluginResource({ "resource/bugs/bug536631-durationLinksCreation.di", "resource/bugs/style.css" })
+@ActiveDiagram("durationLinksCreation")
+public class DurationConstraintCreationTest extends AbstractOccurrenceLinkCreationTest<DurationConstraint> {
+
+ public DurationConstraintCreationTest() {
+ super(DurationConstraint.class, "createDurationConstraintEdgeTool", DurationLinkFigure.class);
+ }
+
+ @Override
+ protected Element getSemanticSource(DurationConstraint link) {
+ return link.getConstrainedElements().get(0);
+ }
+
+ @Override
+ protected Element getSemanticTarget(DurationConstraint link) {
+ return link.getConstrainedElements().size() > 1 ? link.getConstrainedElements().get(1) : link.getConstrainedElements().get(0);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationObservationCreationTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationObservationCreationTest.java
new file mode 100644
index 00000000000..59ac3a0cc1b
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/DurationObservationCreationTest.java
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.diagram.sequence.figures.DurationLinkFigure;
+import org.eclipse.uml2.uml.DurationObservation;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * Creation test for DurationObservationLinks
+ */
+@PluginResource({ "resource/bugs/bug536631-durationLinksCreation.di", "resource/bugs/style.css" })
+@ActiveDiagram("durationLinksCreation")
+public class DurationObservationCreationTest extends AbstractOccurrenceLinkCreationTest<DurationObservation> {
+
+ public DurationObservationCreationTest() {
+ super(DurationObservation.class, "createDurationObservationEdgeTool", DurationLinkFigure.class);
+ }
+
+ @Override
+ protected Element getSemanticSource(DurationObservation link) {
+ return link.getEvents().get(0);
+ }
+
+ @Override
+ protected Element getSemanticTarget(DurationObservation link) {
+ return link.getEvents().size() > 1 ? link.getEvents().get(1) : link.getEvents().get(0);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/GeneralOrderingCreationTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/GeneralOrderingCreationTest.java
new file mode 100644
index 00000000000..262d07caa04
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/GeneralOrderingCreationTest.java
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.diagram.sequence.figures.GeneralOrderingDescriptor;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.GeneralOrdering;
+
+/**
+ * Creation test for GeneralOrdering Links
+ */
+@PluginResource({ "resource/bugs/bug536631-durationLinksCreation.di", "resource/bugs/style.css" })
+@ActiveDiagram("durationLinksCreation")
+public class GeneralOrderingCreationTest extends AbstractOccurrenceLinkCreationTest<GeneralOrdering> {
+
+ public GeneralOrderingCreationTest() {
+ super(GeneralOrdering.class, "createGeneralOrdering8CreationTool", GeneralOrderingDescriptor.class);
+ }
+
+ @Override
+ protected Element getSemanticSource(GeneralOrdering link) {
+ return link.getBefore();
+ }
+
+ @Override
+ protected Element getSemanticTarget(GeneralOrdering link) {
+ return link.getAfter();
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationConstraintDisplay.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationConstraintDisplay.java
new file mode 100644
index 00000000000..fb12695f6e4
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationConstraintDisplay.java
@@ -0,0 +1,72 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.service.IElementEditService;
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.diagram.sequence.figures.DurationLinkFigure;
+import org.eclipse.uml2.uml.DurationConstraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.UMLPackage.Literals;
+
+/**
+ * Test class to verify that DurationConstraint links are properly displayed, and properly
+ * react to changes in the diagram around them (Visual or semantic).
+ */
+@PluginResource({ "resource/bugs/bug536631-durationLinks.di", "resource/bugs/style.css" })
+@ActiveDiagram("durationConstraintsLinksTest")
+public class TestDurationConstraintDisplay extends AbstractOccurrenceLinkTest<DurationConstraint> {
+
+ public TestDurationConstraintDisplay() {
+ super(new String[] {
+ "DurationConstraint1",
+ "DurationConstraint2",
+ "DurationConstraint3",
+ "DurationConstraint4",
+ "DurationConstraint5",
+ "DurationConstraint6",
+ "DurationConstraint7",
+ }, DurationConstraint.class, DurationLinkFigure.class);
+ }
+
+ @Override
+ protected void doUnrelatedChange(DurationConstraint linkToChange) {
+ DurationConstraint duration2 = (DurationConstraint) EMFHelper.getEObject(links[1]);
+
+ List<Element> values = new ArrayList<>(linkToChange.getConstrainedElements());
+ values.add(duration2.getConstrainedElements().get(1));
+
+ IElementEditService provider = ElementEditServiceUtils.getCommandProvider(linkToChange);
+ SetRequest request = new SetRequest(linkToChange, Literals.CONSTRAINT__CONSTRAINED_ELEMENT, values);
+ editor.execute(provider.getEditCommand(request));
+ }
+
+ @Override
+ protected void doChangeTarget(DurationConstraint linkToChange) {
+ List<Element> values = new ArrayList<>(linkToChange.getConstrainedElements());
+ values.remove(1);
+
+ IElementEditService provider = ElementEditServiceUtils.getCommandProvider(linkToChange);
+ SetRequest request = new SetRequest(linkToChange, Literals.CONSTRAINT__CONSTRAINED_ELEMENT, values);
+ editor.execute(provider.getEditCommand(request));
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationObservationDisplay.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationObservationDisplay.java
new file mode 100644
index 00000000000..3c2fdc08be2
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestDurationObservationDisplay.java
@@ -0,0 +1,73 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.service.IElementEditService;
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.diagram.sequence.figures.DurationLinkFigure;
+import org.eclipse.uml2.uml.DurationObservation;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.UMLPackage.Literals;
+
+/**
+ * Test class to verify that DurationObservation links are properly displayed, and properly
+ * react to changes in the diagram around them (Visual or semantic).
+ */
+@PluginResource({ "resource/bugs/bug536631-durationLinks.di", "resource/bugs/style.css" })
+@ActiveDiagram("durationObservationsLinksTest")
+public class TestDurationObservationDisplay extends AbstractOccurrenceLinkTest<DurationObservation> {
+
+ public TestDurationObservationDisplay() {
+ super(new String[] {
+ "DurationObservation1",
+ "DurationObservation2",
+ "DurationObservation3",
+ "DurationObservation4",
+ "DurationObservation5",
+ "DurationObservation6",
+ "DurationObservation7"
+ }, DurationObservation.class,
+ DurationLinkFigure.class);
+ }
+
+ @Override
+ protected void doUnrelatedChange(DurationObservation linkToChange) {
+ DurationObservation duration2 = (DurationObservation) EMFHelper.getEObject(links[1]);
+
+ List<Element> values = new ArrayList<>(linkToChange.getEvents());
+ values.add(duration2.getEvents().get(1));
+
+ IElementEditService provider = ElementEditServiceUtils.getCommandProvider(linkToChange);
+ SetRequest request = new SetRequest(linkToChange, Literals.DURATION_OBSERVATION__EVENT, values);
+ editor.execute(provider.getEditCommand(request));
+ }
+
+ @Override
+ protected void doChangeTarget(DurationObservation linkToChange) {
+ List<Element> values = new ArrayList<>(linkToChange.getEvents());
+ values.remove(1);
+
+ IElementEditService provider = ElementEditServiceUtils.getCommandProvider(linkToChange);
+ SetRequest request = new SetRequest(linkToChange, Literals.DURATION_OBSERVATION__EVENT, values);
+ editor.execute(provider.getEditCommand(request));
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestGeneralOrderingDisplay.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestGeneralOrderingDisplay.java
new file mode 100644
index 00000000000..8c836a832d2
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/TestGeneralOrderingDisplay.java
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST, EclipseSource and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug;
+
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.service.IElementEditService;
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.diagram.sequence.figures.GeneralOrderingDescriptor;
+import org.eclipse.uml2.uml.GeneralOrdering;
+import org.eclipse.uml2.uml.UMLPackage.Literals;
+
+/**
+ * Test class to verify that DurationObservation links are properly displayed, and properly
+ * react to changes in the diagram around them (Visual or semantic).
+ */
+@PluginResource({ "resource/bugs/bug536631-durationLinks.di", "resource/bugs/style.css" })
+@ActiveDiagram("generalOrderingLinksTest")
+public class TestGeneralOrderingDisplay extends AbstractOccurrenceLinkTest<GeneralOrdering> {
+
+ public TestGeneralOrderingDisplay() {
+ super(new String[] {
+ "GeneralOrdering1",
+ "GeneralOrdering2",
+ "GeneralOrdering3",
+ "GeneralOrdering4",
+ "GeneralOrdering5",
+ "GeneralOrdering6",
+ "GeneralOrdering7"
+ }, GeneralOrdering.class,
+ GeneralOrderingDescriptor.class);
+ }
+
+ @Override
+ protected void doUnrelatedChange(GeneralOrdering linkToChange) {
+ // Rename the GeneralOrdering (This part of the test doesn't make much sense for GO; it
+ // was mostly designed for DurationLinks, which use a generic list to hold their source/target)
+ IElementEditService provider = ElementEditServiceUtils.getCommandProvider(linkToChange);
+ SetRequest request = new SetRequest(linkToChange, Literals.NAMED_ELEMENT__NAME, linkToChange.getName() + "Renamed");
+ editor.execute(provider.getEditCommand(request));
+ }
+
+ @Override
+ protected void doChangeTarget(GeneralOrdering linkToChange) {
+ GeneralOrdering ordering2 = (GeneralOrdering) EMFHelper.getEObject(links[1]);
+
+ IElementEditService provider = ElementEditServiceUtils.getCommandProvider(linkToChange);
+ SetRequest request = new SetRequest(linkToChange, Literals.GENERAL_ORDERING__AFTER, ordering2.getAfter());
+ editor.execute(provider.getEditCommand(request));
+ }
+
+}

Back to the top