Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian W. Damus2016-04-01 10:57:42 -0400
committerChristian W. Damus2016-04-01 13:29:35 -0400
commit91bb8fc92e41b1d98316f2a2cf1ae7d5daeafe99 (patch)
tree10bfbba0a559959d4e1cfc9e57595c616583a382
parent14f1c5e7f802a38c612dfdc85a131f77a475cad0 (diff)
downloadorg.eclipse.papyrus-91bb8fc92e41b1d98316f2a2cf1ae7d5daeafe99.tar.gz
org.eclipse.papyrus-91bb8fc92e41b1d98316f2a2cf1ae7d5daeafe99.tar.xz
org.eclipse.papyrus-91bb8fc92e41b1d98316f2a2cf1ae7d5daeafe99.zip
Bug 468207: [StateMachine Diagram] cannot delete elements
https://bugs.eclipse.org/bugs/show_bug.cgi?id=468207 When a state machine has only one region, that region's zone annotation is the empty string. When that region has a stereotype applied (as it does in Papyrus-RT real-time state machines), then the region has a stereotype-comment compartment. In that case, deletion of the region view fails with a SIOOBE on attempt to take a substring of the empty zone annotation value. (cherry-picked from Mars branch) Change-Id: Ifee3ba295690f61601da43edd2f996fdedcd441a
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/Zone.java33
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/META-INF/MANIFEST.MF6
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/build.properties3
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.di2
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.notation57
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.uml26
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/states.profile.uml31
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/tests/ZoneTest.java61
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/AllTests.java5
9 files changed, 205 insertions, 19 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/Zone.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/Zone.java
index ecfa457bdbb..4b73502d316 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/Zone.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/Zone.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2014 CEA LIST.
+ * Copyright (c) 2014, 2016 CEA LIST, Christian W. Damus, and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
*
* Contributors:
* CEA LIST - Initial API and implementation
+ * Christian W. Damus - bug 468207
*/
package org.eclipse.papyrus.uml.diagram.statemachine.custom.helpers;
@@ -28,6 +29,8 @@ import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.RegionEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.StateMachineEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLVisualIDRegistry;
+import com.google.common.base.Strings;
+
/**
* Helper class used to manage the encoding of a region position within a state
* machine or a state.
@@ -566,18 +569,20 @@ public class Zone {
* @return the counterpart zone
*/
private static String getZoneCounterpart(String s) {
- String cs = s.substring(0, s.length() - 1);
- if (Zone.isRight(s)) {
- return Zone.setLeft(cs);
- }
- if (Zone.isLeft(s)) {
- return Zone.setRight(cs);
- }
- if (Zone.isBottom(s)) {
- return Zone.setTop(cs);
- }
- if (Zone.isTop(s)) {
- return Zone.setBottom(cs);
+ if (!Strings.isNullOrEmpty(s)) {
+ String cs = s.substring(0, s.length() - 1);
+ if (Zone.isRight(s)) {
+ return Zone.setLeft(cs);
+ }
+ if (Zone.isLeft(s)) {
+ return Zone.setRight(cs);
+ }
+ if (Zone.isBottom(s)) {
+ return Zone.setTop(cs);
+ }
+ if (Zone.isTop(s)) {
+ return Zone.setBottom(cs);
+ }
}
return s;
}
@@ -805,7 +810,7 @@ public class Zone {
// get the region zone
String zone = getZone(region);
// get its counterpart
- if (zone == null) {
+ if (Strings.isNullOrEmpty(zone)) {
return;
}
String cZone = getZoneCounterpart(zone);
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/META-INF/MANIFEST.MF
index 1b9fe7c6d52..a33949441d0 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/META-INF/MANIFEST.MF
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/META-INF/MANIFEST.MF
@@ -14,11 +14,11 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.papyrus.infra.core.sasheditor;bundle-version="1.2.0",
org.junit;bundle-version="4.10.0",
org.eclipse.papyrus.junit.framework;bundle-version="1.2.0",
- org.eclipse.gmf.tooling.runtime;bundle-version="[3.3.0,
- 4.0.0)",
+ org.eclipse.gmf.tooling.runtime;bundle-version="[3.3.0,4.0.0)",
org.eclipse.papyrus.junit.utils;bundle-version="1.2.0",
org.eclipse.papyrus.tests.framework;bundle-version="1.2.0",
- org.eclipse.xtend.lib;bundle-version="2.8.1"
+ org.eclipse.xtend.lib;bundle-version="2.8.1",
+ org.eclipse.papyrus.infra.services.edit;bundle-version="[2.0.0,3.0.0)"
Export-Package: org.eclipse.papyrus.uml.diagram.statemachine.tests,
org.eclipse.papyrus.uml.diagram.statemachine.tests.canonical,
org.eclipse.papyrus.uml.diagram.statemachine.tests.generation
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/build.properties b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/build.properties
index 6dae0a7d910..16e44b21f4d 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/build.properties
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/build.properties
@@ -5,5 +5,6 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
about.html,\
- plugin.properties
+ plugin.properties,\
+ resources/
src.includes = about.html
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.di b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.notation b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.notation
new file mode 100644
index 00000000000..e14e655d55b
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.notation
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_e2dM8PgUEeW8Us5SRbfNZA" type="PapyrusUMLStateMachineDiagram" name="SmDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_e2dM8fgUEeW8Us5SRbfNZA" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_e2dM8vgUEeW8Us5SRbfNZA" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e2dM8_gUEeW8Us5SRbfNZA" width="700" height="16"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_e2dM9PgUEeW8Us5SRbfNZA" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_e2dM9fgUEeW8Us5SRbfNZA" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e2dM9vgUEeW8Us5SRbfNZA" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e2dM9_gUEeW8Us5SRbfNZA" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_e2dM-PgUEeW8Us5SRbfNZA" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_uy1CsPgXEeW8Us5SRbfNZA" type="8000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uy1CsvgXEeW8Us5SRbfNZA" type="8001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uy1Cs_gXEeW8Us5SRbfNZA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uy1CtPgXEeW8Us5SRbfNZA" type="8002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uy1CtfgXEeW8Us5SRbfNZA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Pseudostate" href="model.uml#_uywKMPgXEeW8Us5SRbfNZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uy1CsfgXEeW8Us5SRbfNZA" x="60" y="45"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e2dM-fgUEeW8Us5SRbfNZA"/>
+ </children>
+ <element xmi:type="uml:Region" href="model.uml#_e2cl4PgUEeW8Us5SRbfNZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e2dM-vgUEeW8Us5SRbfNZA" width="700" height="287"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uCACsPgXEeW8Us5SRbfNZA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uCACsfgXEeW8Us5SRbfNZA" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_uCACs_gXEeW8Us5SRbfNZA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Region" href="model.uml#_e2cl4PgUEeW8Us5SRbfNZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uCACsvgXEeW8Us5SRbfNZA" x="200"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e2dM-_gUEeW8Us5SRbfNZA" y="16" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="model.uml#_ejtQEPgUEeW8Us5SRbfNZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e2dM_PgUEeW8Us5SRbfNZA" x="30" y="30" width="700" height="303"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_e2dM_fgUEeW8Us5SRbfNZA" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_e2dM_vgUEeW8Us5SRbfNZA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_e2dM__gUEeW8Us5SRbfNZA">
+ <owner xmi:type="uml:Class" href="model.uml#_djwO8PgUEeW8Us5SRbfNZA"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="model.uml#_ejtQEPgUEeW8Us5SRbfNZA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_uCACtPgXEeW8Us5SRbfNZA" type="StereotypeCommentLink" source="_e2dM9fgUEeW8Us5SRbfNZA" target="_uCACsPgXEeW8Us5SRbfNZA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_uCACtfgXEeW8Us5SRbfNZA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_uCACufgXEeW8Us5SRbfNZA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Region" href="model.uml#_e2cl4PgUEeW8Us5SRbfNZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uCACtvgXEeW8Us5SRbfNZA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uCACt_gXEeW8Us5SRbfNZA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uCACuPgXEeW8Us5SRbfNZA"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.uml b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.uml
new file mode 100644
index 00000000000..86492b1ac59
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/model.uml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:states="http:///schemas/states/_pBeIEPgXEeW8Us5SRbfNZA/0" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/states/_pBeIEPgXEeW8Us5SRbfNZA/0 states.profile.uml#_pBhLYfgXEeW8Us5SRbfNZA">
+ <uml:Model xmi:id="_bgcTYPgUEeW8Us5SRbfNZA" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_djwO8PgUEeW8Us5SRbfNZA" name="Class1" classifierBehavior="_ejtQEPgUEeW8Us5SRbfNZA">
+ <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_ejtQEPgUEeW8Us5SRbfNZA" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_e2cl4PgUEeW8Us5SRbfNZA" name="Region1">
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_uywKMPgXEeW8Us5SRbfNZA" name="Initial1"/>
+ </region>
+ </ownedBehavior>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_sQXtAPgXEeW8Us5SRbfNZA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sQYUEfgXEeW8Us5SRbfNZA" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sQYUEvgXEeW8Us5SRbfNZA" key="Version" value="0.0.1"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sQYUE_gXEeW8Us5SRbfNZA" key="Comment" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sQYUFPgXEeW8Us5SRbfNZA" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sQYUFfgXEeW8Us5SRbfNZA" key="Date" value="2016-04-01"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sQYUFvgXEeW8Us5SRbfNZA" key="Author" value=""/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sQYUEPgXEeW8Us5SRbfNZA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="states.profile.uml#_pBhLYfgXEeW8Us5SRbfNZA"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="states.profile.uml#_f3edsPgXEeW8Us5SRbfNZA"/>
+ </profileApplication>
+ </uml:Model>
+ <states:S1 xmi:id="_uBtu0PgXEeW8Us5SRbfNZA" base_Region="_e2cl4PgUEeW8Us5SRbfNZA"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/states.profile.uml b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/states.profile.uml
new file mode 100644
index 00000000000..e669235e136
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/resources/bug468207/states.profile.uml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Profile xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_f3edsPgXEeW8Us5SRbfNZA" name="states" metaclassReference="_lA5OkPgXEeW8Us5SRbfNZA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pBhLYPgXEeW8Us5SRbfNZA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_pBhLYfgXEeW8Us5SRbfNZA" name="states" nsURI="http:///schemas/states/_pBeIEPgXEeW8Us5SRbfNZA/0" nsPrefix="states">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pBiZgfgXEeW8Us5SRbfNZA" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pBiZgvgXEeW8Us5SRbfNZA" key="Version" value="0.0.1"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pBiZg_gXEeW8Us5SRbfNZA" key="Comment" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pBiZhPgXEeW8Us5SRbfNZA" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pBiZhfgXEeW8Us5SRbfNZA" key="Date" value="2016-04-01"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pBiZhvgXEeW8Us5SRbfNZA" key="Author" value=""/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_pBhLYvgXEeW8Us5SRbfNZA" name="S1">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pBhLY_gXEeW8Us5SRbfNZA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_lsLAMPgXEeW8Us5SRbfNZA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_pBhLZPgXEeW8Us5SRbfNZA" name="base_Region" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Region"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ </eAnnotations>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_lA5OkPgXEeW8Us5SRbfNZA" alias="Region">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Region"/>
+ </elementImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_lsLAMPgXEeW8Us5SRbfNZA" name="S1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_nPZGcPgXEeW8Us5SRbfNZA" name="base_Region" association="_nPWqMPgXEeW8Us5SRbfNZA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Region"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_nPWqMPgXEeW8Us5SRbfNZA" name="E_S1_Region1" memberEnd="_nPYfYPgXEeW8Us5SRbfNZA _nPZGcPgXEeW8Us5SRbfNZA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_nPYfYPgXEeW8Us5SRbfNZA" name="extension_S1" type="_lsLAMPgXEeW8Us5SRbfNZA" aggregation="composite" association="_nPWqMPgXEeW8Us5SRbfNZA"/>
+ </packagedElement>
+</uml:Profile>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/tests/ZoneTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/tests/ZoneTest.java
new file mode 100644
index 00000000000..de974c094bc
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/custom/helpers/tests/ZoneTest.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.statemachine.custom.helpers.tests;
+
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.junit.framework.classification.tests.AbstractPapyrusTest;
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PapyrusEditorFixture;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.diagram.statemachine.custom.helpers.Zone;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.BehavioredClassifier;
+import org.junit.Rule;
+import org.junit.Test;
+
+/**
+ * Regression tests for the {@link Zone} utility class.
+ */
+public class ZoneTest extends AbstractPapyrusTest {
+ @Rule
+ public final PapyrusEditorFixture editor = new PapyrusEditorFixture();
+
+ /**
+ * Verifies that no exception occurs to block the deletion of a diagram
+ * that has a region with an empty zone annotation, as occurs in
+ * Papyrus-RT real-time state machine diagrams.
+ */
+ @Test
+ @PluginResource("resources/bug468207/model.di")
+ @ActiveDiagram("SmDiagram")
+ public void deleteDiagramWithEmptyZoneAnnotation_bug468207() {
+ Diagram smDiagram = editor.getActiveDiagram().getDiagramView();
+ Behavior stateMachine = ((BehavioredClassifier) editor.getModel().getOwnedType("Class1")).getOwnedBehaviors().get(0);
+
+ // Delete it, which deletes the diagram
+ DestroyElementRequest req = new DestroyElementRequest(editor.getEditingDomain(), stateMachine, false);
+ ICommand cmd = ElementEditServiceUtils.getCommandProvider(stateMachine.getContext()).getEditCommand(req);
+ editor.execute(cmd);
+
+ // The diagram was successfully deleted
+ assertThat(smDiagram.eResource(), nullValue());
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/AllTests.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/AllTests.java
index dec90cd0019..220cc13db69 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/AllTests.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/AllTests.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2014, 2015 CEA LIST, Christian W. Damus, and others.
+ * Copyright (c) 2014, 2016 CEA LIST, Christian W. Damus, and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -9,10 +9,12 @@
* Contributors:
* Patrick Tessier (CEA LIST) - Initial API and implementation
* Christian W. Damus - bug 464647
+ * Christian W. Damus - bug 468207
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.statemachine.tests;
import org.eclipse.papyrus.junit.framework.classification.ClassificationSuite;
+import org.eclipse.papyrus.uml.diagram.statemachine.custom.helpers.tests.ZoneTest;
import org.eclipse.papyrus.junit.framework.classification.ClassificationSuite.DynamicClasses;
import org.eclipse.papyrus.uml.diagram.statemachine.tests.canonical.AllCanonicalTests;
import org.junit.runner.RunWith;
@@ -28,6 +30,7 @@ import org.junit.runners.Suite.SuiteClasses;
RoundedCompartmentTest.class,
// load
// LoadTests.class,
+ZoneTest.class,
})
@DynamicClasses("org.eclipse.papyrus.uml.diagram.statemachine.test.AllGenTests")
public class AllTests {

Back to the top