Skip to content

Commit fef4c8a

Browse files
committed
SYSML2_-173 Checked validateFlowConnectionDefinitionFlowConnectionEnds.
1 parent 6372ada commit fef4c8a

2 files changed

Lines changed: 26 additions & 6 deletions

File tree

org.omg.sysml.xpect.tests/src/org/omg/sysml/xpect/tests/validation/invalid/FlowConnectionUsage_Invalid.sysml.xt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,20 @@ package P {
4242
abstract flow def F;
4343
abstract flow def G;
4444

45+
abstract flow def H {
46+
end a;
47+
}
48+
49+
flow def I :> H {
50+
end a;
51+
end b;
52+
// XPECT errors --> "A flow connection definition can have at most two ends." at "end c;"
53+
end c;
54+
}
55+
56+
// XPECT errors --> "A flow connection definition can have at most two ends." at "flow def J :> I;"
57+
flow def J :> I;
58+
4559
part apart : A {
4660
part b;
4761
part c;

org.omg.sysml.xtext/src/org/omg/sysml/xtext/validation/SysMLValidator.xtend

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ import org.omg.sysml.lang.sysml.ReferenceUsage
135135
import org.omg.sysml.lang.sysml.IfActionUsage
136136
import org.omg.sysml.lang.sysml.WhileLoopActionUsage
137137
import org.omg.sysml.lang.sysml.TriggerKind
138+
import org.omg.sysml.util.TypeUtil
138139

139140
/**
140141
* This class contains custom validation rules.
@@ -214,8 +215,8 @@ class SysMLValidator extends KerMLValidator {
214215
public static val INVALID_CONNECTION_USAGE_TYPE = "validateConnectionUsageType_"
215216
public static val INVALID_CONNECTION_USAGE_TYPE_MSG = "A connection must be typed by connection definitions."
216217

217-
public static val INVALID_FLOW_CONNECTION_DEFINITION_END = "validateFlowConnectionEnd_"
218-
public static val INVALID_FLOW_CONNECTION_DEFINITION_END_MSG = "A flow connection definition can have only two ends."
218+
public static val INVALID_FLOW_CONNECTION_DEFINITION_END = "validateFlowConnectionDefinitionConnectionEnds"
219+
public static val INVALID_FLOW_CONNECTION_DEFINITION_END_MSG = "A flow connection definition can have at most two ends."
219220

220221
public static val INVALID_FLOW_CONNECTION_USAGE_TYPE = "validateFlowConnectionUsageType_"
221222
public static val INVALID_FLOW_CONNECTION_USAGE_TYPE_MSG = "A flow connection must be typed by flow connection definitions."
@@ -661,11 +662,16 @@ class SysMLValidator extends KerMLValidator {
661662

662663
@Check
663664
def checkFlowConnectionDefinition(FlowConnectionDefinition cdef) {
664-
//At most two owned ends
665-
val ends = cdef.ownedEndFeature
665+
// validateConnectionDefinitionConnectionEnds
666+
val ends = TypeUtil.getAllEndFeaturesOf(cdef)
666667
if (ends.size > 2) {
667-
for (var i = 2; i < ends.size; i++) {
668-
error(INVALID_FLOW_CONNECTION_DEFINITION_END_MSG, ends.get(i), null, INVALID_FLOW_CONNECTION_DEFINITION_END)
668+
val ownedEnds = cdef.ownedEndFeature
669+
if (ownedEnds.size <= 2) {
670+
error(INVALID_FLOW_CONNECTION_DEFINITION_END_MSG, cdef, null, INVALID_FLOW_CONNECTION_DEFINITION_END)
671+
} else {
672+
for (var i = 2; i < ends.size; i++) {
673+
error(INVALID_FLOW_CONNECTION_DEFINITION_END_MSG, ends.get(i), null, INVALID_FLOW_CONNECTION_DEFINITION_END)
674+
}
669675
}
670676
}
671677
}

0 commit comments

Comments
 (0)