Skip to content

Commit a9e8151

Browse files
committed
KERML-43 Updated validation for Structure and Behavior.
1 parent 967ce0c commit a9e8151

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

org.omg.kerml.xtext/src/org/omg/kerml/xtext/validation/KerMLValidator.xtend

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ import org.omg.sysml.lang.sysml.FeatureDirectionKind
9090
import org.omg.sysml.lang.sysml.Metaclass
9191
import org.omg.sysml.lang.sysml.Import
9292
import org.omg.sysml.lang.sysml.VisibilityKind
93+
import org.omg.sysml.lang.sysml.Structure
9394

9495
/**
9596
* This class contains custom validation rules.
@@ -180,6 +181,9 @@ class KerMLValidator extends AbstractKerMLValidator {
180181
public static val INVALID_CLASS_SPECIALIZATION = "validateClassSpecialization"
181182
public static val INVALID_CLASS_SPECIALIZATION_MSG = "Cannot specialize data type or association"
182183

184+
public static val INVALID_STRUCTURE_SPECIALIZATION = "validateStructureSpecialization"
185+
public static val INVALID_STRUCTURE_SPECIALIZATION_MSG = "Cannot specialize behavior"
186+
183187
public static val INVALID_ASSOCIATION_BINARY_SPECIALIZATION = "validateAssociationBinarySpecialization"
184188
public static val INVALID_ASSOCIATION_BINARY_SPECIALIZATION_MSG = "Cannot have more than two ends"
185189
public static val INVALID_ASSOCIATION_RELATED_TYPES = "validateAssociationRelatedTypes"
@@ -203,6 +207,9 @@ class KerMLValidator extends AbstractKerMLValidator {
203207
public static val INVALID_CONNECTOR_TYPE_FEATURING = "validateConnectorTypeFeaturing"
204208
public static val INVALID_CONNECTOR_TYPE_FEATURING_MSG = "Should be an accessible feature (use dot notation for nesting)"
205209

210+
public static val INVALID_BEHAVIOR_SPECIALIZATION = "validateBehaviorSpecialization"
211+
public static val INVALID_BEHAVIOR_SPECIALIZATION_MSG = "Cannot specialize structure"
212+
206213
public static val INVALID_PARAMETER_MEMBERSHIP_OWNING_TYPE = "validateParameterMembershipOwningType"
207214
public static val INVALID_PARAMETER_MEMBERSHIP_OWNING_TYPE_MSG = "Parameter membership not allowed"
208215

@@ -598,6 +605,16 @@ class KerMLValidator extends AbstractKerMLValidator {
598605
}
599606
}
600607

608+
@Check
609+
def checkStructure(Structure c) {
610+
// validateStructureSpecialization
611+
for (s: c.ownedSpecialization) {
612+
if (s.general instanceof Behavior) {
613+
error(INVALID_STRUCTURE_SPECIALIZATION_MSG, s, SysMLPackage.eINSTANCE.specialization_General, INVALID_STRUCTURE_SPECIALIZATION)
614+
}
615+
}
616+
}
617+
601618
@Check
602619
def checkAssociation(Association a){
603620
// validateAssociationBinarySpecialization
@@ -733,6 +750,16 @@ class KerMLValidator extends AbstractKerMLValidator {
733750
}
734751
}
735752

753+
@Check
754+
def checkBehavior(Behavior b) {
755+
// validateStructureSpecialization
756+
for (s: b.ownedSpecialization) {
757+
if (s.general instanceof Structure) {
758+
error(INVALID_BEHAVIOR_SPECIALIZATION_MSG, s, SysMLPackage.eINSTANCE.specialization_General, INVALID_BEHAVIOR_SPECIALIZATION)
759+
}
760+
}
761+
}
762+
736763
@Check
737764
def checkParameterMembership(ParameterMembership m) {
738765
if (!(m instanceof ReturnParameterMembership)) {

0 commit comments

Comments
 (0)