Skip to content

Commit db5ecc5

Browse files
authored
Merge pull request #667 from Systems-Modeling/ST6RI-863
ST6RI-863 Actions in a case will cause a crash of the visualization (PlantUML)
2 parents 5454315 + 24c996f commit db5ecc5

4 files changed

Lines changed: 16 additions & 21 deletions

File tree

org.omg.sysml.plantuml/src/org/omg/sysml/plantuml/VBehavior.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@
4545

4646
public abstract class VBehavior extends VDefault {
4747
protected boolean isDoneAction(Feature f) {
48-
return "Actions::Action::done".equals(f.getQualifiedName());
48+
return f != null && f.specializesFromLibrary("Actions::Action::done");
4949
}
5050

5151
protected boolean isStartAction(Feature f) {
52-
return "Actions::Action::start".equals(f.getQualifiedName());
52+
return f != null && f.specializesFromLibrary("Actions::Action::start");
5353
}
5454

5555
protected boolean isEntryAction(ActionUsage au) {

org.omg.sysml.plantuml/src/org/omg/sysml/plantuml/VCase.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import java.util.List;
2828

29-
import org.omg.sysml.lang.sysml.CaseDefinition;
29+
import org.omg.sysml.lang.sysml.ActionUsage;
3030
import org.omg.sysml.lang.sysml.CaseUsage;
3131
import org.omg.sysml.lang.sysml.Membership;
3232
import org.omg.sysml.lang.sysml.Namespace;
@@ -39,7 +39,7 @@
3939
import org.omg.sysml.plantuml.SysML2PlantUMLStyle.StyleRelSwitch;
4040
import org.omg.sysml.plantuml.SysML2PlantUMLStyle.StyleSwitch;
4141

42-
public class VCase extends VTree {
42+
public class VCase extends VMixed {
4343
private static final SysML2PlantUMLStyle style
4444
= new SysML2PlantUMLStyle
4545
("VCase",
@@ -66,7 +66,7 @@ protected VTree newVTree(Namespace namespace, Membership membership) {
6666
return new VCase(this, namespace, membership);
6767
}
6868

69-
private String addCase(Type typ) {
69+
private String addAction(Type typ) {
7070
String name = extractTitleName(typ);
7171
int id = addRecLine(name, typ, true);
7272
addSpecializations(id, typ);
@@ -104,13 +104,14 @@ public String caseSubjectMembership(SubjectMembership sm) {
104104
}
105105

106106
@Override
107-
public String caseCaseUsage(CaseUsage ucu) {
108-
return addCase(ucu);
107+
public String caseActionUsage(ActionUsage au) {
108+
return addAction(au);
109109
}
110110

111111
@Override
112-
public String caseCaseDefinition(CaseDefinition ucd) {
113-
return addCase(ucd);
112+
public String caseCaseUsage(CaseUsage cu) {
113+
// We MUST override VMixed.caseCaseUsage()
114+
return addAction(cu);
114115
}
115116

116117
VCase(Visitor vt, Namespace namespace, Membership membership) {

org.omg.sysml.plantuml/src/org/omg/sysml/plantuml/VCaseMembers.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@
2727
import java.util.ArrayList;
2828
import java.util.List;
2929

30-
import org.omg.sysml.lang.sysml.CaseDefinition;
31-
import org.omg.sysml.lang.sysml.CaseUsage;
30+
import org.omg.sysml.lang.sysml.ActionUsage;
3231
import org.omg.sysml.lang.sysml.Element;
3332
import org.omg.sysml.lang.sysml.Membership;
3433
import org.omg.sysml.lang.sysml.ObjectiveMembership;
@@ -66,25 +65,20 @@ private void recElement(Element e, boolean inside) {
6665
rec(new VCase(this), e, inside);
6766
}
6867

69-
private String addCase(Type typ) {
68+
private String addAction(Type typ) {
7069
recElement(typ, true);
7170
return "";
7271
}
7372

7473
@Override
75-
public String caseCaseUsage(CaseUsage ucu) {
76-
return addCase(ucu);
77-
}
78-
79-
@Override
80-
public String caseCaseDefinition(CaseDefinition ucd) {
81-
return addCase(ucd);
74+
public String caseActionUsage(ActionUsage ucu) {
75+
return addAction(ucu);
8276
}
8377

8478
@Override
8579
public String caseMembership(Membership m) {
8680
Element e = m.getMemberElement();
87-
if ((e instanceof CaseUsage)
81+
if ((e instanceof ActionUsage) // Action-like elements are recursively rendered.
8882
|| (e instanceof Relationship)) {
8983
return super.caseMembership(m);
9084
}

org.omg.sysml.plantuml/src/org/omg/sysml/plantuml/VMixed.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public String caseCaseDefinition(CaseDefinition ucd) {
110110
}
111111

112112

113-
private VMixed(VTree vt, Namespace namespace, Membership membership) {
113+
protected VMixed(Visitor vt, Namespace namespace, Membership membership) {
114114
super(vt, namespace, membership);
115115
}
116116

0 commit comments

Comments
 (0)