@@ -30,111 +30,107 @@ import org.eclipse.emf.ecore.EReference
3030import org.eclipse.emf.ecore.EStructuralFeature
3131import org.eclipse.xtext.validation.Check
3232import org.omg.kerml.xtext.validation.KerMLValidator
33+ import org.omg.sysml.lang.sysml.AcceptActionUsage
34+ import org.omg.sysml.lang.sysml.ActionDefinition
3335import org.omg.sysml.lang.sysml.ActionUsage
36+ import org.omg.sysml.lang.sysml.ActorMembership
3437import org.omg.sysml.lang.sysml.AllocationDefinition
3538import org.omg.sysml.lang.sysml.AllocationUsage
3639import org.omg.sysml.lang.sysml.AnalysisCaseDefinition
3740import org.omg.sysml.lang.sysml.AnalysisCaseUsage
41+ import org.omg.sysml.lang.sysml.AssertConstraintUsage
42+ import org.omg.sysml.lang.sysml.AssignmentActionUsage
3843import org.omg.sysml.lang.sysml.Association
44+ import org.omg.sysml.lang.sysml.AttributeDefinition
3945import org.omg.sysml.lang.sysml.AttributeUsage
4046import org.omg.sysml.lang.sysml.Behavior
4147import org.omg.sysml.lang.sysml.CalculationUsage
4248import org.omg.sysml.lang.sysml.CaseDefinition
4349import org.omg.sysml.lang.sysml.CaseUsage
50+ import org.omg.sysml.lang.sysml.Classifier
51+ import org.omg.sysml.lang.sysml.ConjugatedPortDefinition
4452import org.omg.sysml.lang.sysml.ConnectionUsage
4553import org.omg.sysml.lang.sysml.ConstraintUsage
54+ import org.omg.sysml.lang.sysml.ControlNode
4655import org.omg.sysml.lang.sysml.DataType
56+ import org.omg.sysml.lang.sysml.DecisionNode
4757import org.omg.sysml.lang.sysml.Definition
4858import org.omg.sysml.lang.sysml.EnumerationDefinition
4959import org.omg.sysml.lang.sysml.EnumerationUsage
60+ import org.omg.sysml.lang.sysml.EventOccurrenceUsage
61+ import org.omg.sysml.lang.sysml.ExhibitStateUsage
62+ import org.omg.sysml.lang.sysml.Expose
63+ import org.omg.sysml.lang.sysml.Expression
5064import org.omg.sysml.lang.sysml.Feature
65+ import org.omg.sysml.lang.sysml.FeatureChainExpression
5166import org.omg.sysml.lang.sysml.FeatureMembership
67+ import org.omg.sysml.lang.sysml.FeatureReferenceExpression
68+ import org.omg.sysml.lang.sysml.FlowDefinition
69+ import org.omg.sysml.lang.sysml.FlowUsage
70+ import org.omg.sysml.lang.sysml.ForLoopActionUsage
71+ import org.omg.sysml.lang.sysml.ForkNode
72+ import org.omg.sysml.lang.sysml.FramedConcernMembership
5273import org.omg.sysml.lang.sysml.Function
74+ import org.omg.sysml.lang.sysml.IfActionUsage
75+ import org.omg.sysml.lang.sysml.IncludeUseCaseUsage
76+ import org.omg.sysml.lang.sysml.Interaction
5377import org.omg.sysml.lang.sysml.InterfaceDefinition
5478import org.omg.sysml.lang.sysml.InterfaceUsage
55- import org.omg.sysml.lang.sysml.ItemUsage
79+ import org.omg.sysml.lang.sysml.JoinNode
80+ import org.omg.sysml.lang.sysml.MergeNode
81+ import org.omg.sysml.lang.sysml.Metaclass
82+ import org.omg.sysml.lang.sysml.MetadataUsage
83+ import org.omg.sysml.lang.sysml.Namespace
5684import org.omg.sysml.lang.sysml.ObjectiveMembership
5785import org.omg.sysml.lang.sysml.OccurrenceDefinition
5886import org.omg.sysml.lang.sysml.OccurrenceUsage
87+ import org.omg.sysml.lang.sysml.OperatorExpression
5988import org.omg.sysml.lang.sysml.ParameterMembership
60- import org.omg.sysml.lang.sysml.PartDefinition
61- import org.omg.sysml.lang.sysml.PartUsage
89+ import org.omg.sysml.lang.sysml.PerformActionUsage
6290import org.omg.sysml.lang.sysml.PortDefinition
6391import org.omg.sysml.lang.sysml.PortUsage
6492import org.omg.sysml.lang.sysml.Predicate
93+ import org.omg.sysml.lang.sysml.ReferenceUsage
94+ import org.omg.sysml.lang.sysml.Relationship
6595import org.omg.sysml.lang.sysml.RenderingDefinition
6696import org.omg.sysml.lang.sysml.RenderingUsage
97+ import org.omg.sysml.lang.sysml.RequirementConstraintKind
98+ import org.omg.sysml.lang.sysml.RequirementConstraintMembership
6799import org.omg.sysml.lang.sysml.RequirementDefinition
68100import org.omg.sysml.lang.sysml.RequirementUsage
69101import org.omg.sysml.lang.sysml.RequirementVerificationMembership
102+ import org.omg.sysml.lang.sysml.SatisfyRequirementUsage
103+ import org.omg.sysml.lang.sysml.SendActionUsage
104+ import org.omg.sysml.lang.sysml.StakeholderMembership
105+ import org.omg.sysml.lang.sysml.StateDefinition
106+ import org.omg.sysml.lang.sysml.StateSubactionKind
107+ import org.omg.sysml.lang.sysml.StateSubactionMembership
70108import org.omg.sysml.lang.sysml.StateUsage
71109import org.omg.sysml.lang.sysml.Step
72- import org.omg.sysml.lang.sysml.Structure
73110import org.omg.sysml.lang.sysml.SubjectMembership
111+ import org.omg.sysml.lang.sysml.Succession
74112import org.omg.sysml.lang.sysml.SysMLPackage
113+ import org.omg.sysml.lang.sysml.TransitionFeatureKind
114+ import org.omg.sysml.lang.sysml.TransitionFeatureMembership
115+ import org.omg.sysml.lang.sysml.TransitionUsage
116+ import org.omg.sysml.lang.sysml.TriggerInvocationExpression
117+ import org.omg.sysml.lang.sysml.TriggerKind
118+ import org.omg.sysml.lang.sysml.Type
75119import org.omg.sysml.lang.sysml.Usage
120+ import org.omg.sysml.lang.sysml.UseCaseDefinition
121+ import org.omg.sysml.lang.sysml.UseCaseUsage
76122import org.omg.sysml.lang.sysml.VariantMembership
77123import org.omg.sysml.lang.sysml.VerificationCaseDefinition
78124import org.omg.sysml.lang.sysml.VerificationCaseUsage
79125import org.omg.sysml.lang.sysml.ViewDefinition
126+ import org.omg.sysml.lang.sysml.ViewRenderingMembership
80127import org.omg.sysml.lang.sysml.ViewUsage
81128import org.omg.sysml.lang.sysml.ViewpointDefinition
82129import org.omg.sysml.lang.sysml.ViewpointUsage
83- import org.omg.sysml.lang.sysml.TransitionUsage
84- import org.omg.sysml.lang.sysml.Succession
85- import org.omg.sysml.lang.sysml.StateDefinition
86- import org.omg.sysml.lang.sysml.Type
87- import org.omg.sysml.lang.sysml.StateSubactionKind
88- import org.omg.sysml.lang.sysml.UseCaseUsage
89- import org.omg.sysml.lang.sysml.UseCaseDefinition
90- import org.omg.sysml.lang.sysml.MetadataUsage
91- import org.omg.sysml.lang.sysml.Metaclass
92- import org.omg.sysml.lang.sysml.Interaction
93- import org.omg.sysml.lang.sysml.SendActionUsage
94- import org.omg.sysml.lang.sysml.FeatureReferenceExpression
95- import org.omg.sysml.lang.sysml.FeatureChainExpression
96- import org.omg.sysml.lang.sysml.OperatorExpression
97- import org.omg.sysml.lang.sysml.util.SysMLLibraryUtil
98- import org.omg.sysml.lang.sysml.Expression
99- import org.omg.sysml.lang.sysml.EventOccurrenceUsage
100- import org.omg.sysml.lang.sysml.ConjugatedPortDefinition
101- import org.omg.sysml.lang.sysml.AssignmentActionUsage
102- import org.omg.sysml.lang.sysml.TriggerInvocationExpression
103- import org.omg.sysml.lang.sysml.ControlNode
104- import org.omg.sysml.lang.sysml.DecisionNode
105- import org.omg.sysml.lang.sysml.ForkNode
106- import org.omg.sysml.lang.sysml.JoinNode
107- import org.omg.sysml.lang.sysml.MergeNode
108- import org.omg.sysml.lang.sysml.PerformActionUsage
109- import org.omg.sysml.lang.sysml.ExhibitStateUsage
110- import org.omg.sysml.lang.sysml.StateSubactionMembership
111- import org.omg.sysml.lang.sysml.TransitionFeatureMembership
112- import org.omg.sysml.lang.sysml.AssertConstraintUsage
113- import org.omg.sysml.lang.sysml.FramedConcernMembership
114- import org.omg.sysml.lang.sysml.RequirementConstraintMembership
115- import org.omg.sysml.lang.sysml.SatisfyRequirementUsage
116- import org.omg.sysml.lang.sysml.StakeholderMembership
117- import org.omg.sysml.lang.sysml.AcceptActionUsage
118- import org.omg.sysml.lang.sysml.IncludeUseCaseUsage
119- import org.omg.sysml.lang.sysml.Expose
120- import org.omg.sysml.lang.sysml.ViewRenderingMembership
121- import org.omg.sysml.lang.sysml.AttributeDefinition
122- import org.omg.sysml.lang.sysml.Namespace
123- import org.omg.sysml.lang.sysml.ActionDefinition
124- import org.omg.sysml.lang.sysml.TransitionFeatureKind
125- import org.omg.sysml.lang.sysml.ActorMembership
126- import org.omg.sysml.lang.sysml.RequirementConstraintKind
127- import org.omg.sysml.lang.sysml.ForLoopActionUsage
128- import org.omg.sysml.lang.sysml.ReferenceUsage
129- import org.omg.sysml.lang.sysml.IfActionUsage
130130import org.omg.sysml.lang.sysml.WhileLoopActionUsage
131- import org.omg.sysml.lang.sysml.TriggerKind
132- import org.omg.sysml.lang.sysml.FlowDefinition
133- import org.omg.sysml.lang.sysml.FlowUsage
134- import org.omg.sysml.lang.sysml.Relationship
131+ import org.omg.sysml.lang.sysml.util.SysMLLibraryUtil
135132import org.omg.sysml.util.FeatureUtil
136133import org.omg.sysml.util.UsageUtil
137- import org.omg.sysml.lang.sysml.Classifier
138134
139135/**
140136 * This class contains custom validation rules.
@@ -181,7 +177,7 @@ class SysMLValidator extends KerMLValidator {
181177 public static val INVALID_EVENT_OCCURRENCE_USAGE_REFERENCE_MSG = " Must reference an occurrence."
182178
183179 public static val INVALID_OCCURRENCE_USAGE_TYPE = " validateOccurrenceUsageType_"
184- public static val INVALID_OCCURRENCE_USAGE_TYPE_MSG = " An occurrence must be typed by occurrence definitions."
180+ public static val INVALID_OCCURRENCE_USAGE_TYPE_MSG = " An occurrence, item or part must be typed by occurrence definitions."
185181 public static val INVALID_OCCURRENCE_USAGE_INDIVIDUAL_DEFINITION = " validateOccurrenceUsageIndividualDefinition"
186182 public static val INVALID_OCCURRENCE_USAGE_INDIVIDUAL_DEFINITION_MSG = " At most one individual definition is allowed."
187183 public static val INVALID_OCCURRENCE_USAGE_INDIVIDUAL_USAGE = " validateOccurrenceUsageIndividualUsage"
@@ -580,7 +576,7 @@ class SysMLValidator extends KerMLValidator {
580576 @Check
581577 def checkOccurrenceUsage (OccurrenceUsage usg ) {
582578 // All types must be Classes
583- if (! (usg instanceof ItemUsage || usg instanceof PortUsage || usg instanceof Step ))
579+ if (! (usg instanceof PortUsage || usg instanceof ConnectionUsage || usg instanceof MetadataUsage || usg instanceof Step ))
584580 checkAllTypes(usg, org.omg.sysml.lang.sysml. Class , INVALID_OCCURRENCE_USAGE_TYPE_MSG , SysMLPackage . eINSTANCE. occurrenceUsage_OccurrenceDefinition, INVALID_OCCURRENCE_USAGE_TYPE )
585581
586582 // validateOccurrenceUsageIndividualDefinition
@@ -607,20 +603,13 @@ class SysMLValidator extends KerMLValidator {
607603
608604 }
609605
610- @Check
611- def checkItemUsage (ItemUsage iu ) {
612- // All types must be Structures
613- if (! (iu instanceof PartUsage || iu instanceof PortUsage || iu instanceof MetadataUsage ))
614- checkAllTypes(iu, Structure , INVALID_ITEM_USAGE_TYPE_MSG , SysMLPackage . eINSTANCE. itemUsage_ItemDefinition, INVALID_ITEM_USAGE_TYPE )
615- }
606+ // @Check
607+ // def checkItemUsage(ItemUsage iu) {
608+ // }
616609
617- @Check
618- def checkPartUsage (PartUsage pu ){
619- if (! (pu instanceof ConnectionUsage ))
620- if (checkAllTypes(pu, Structure , INVALID_PART_USAGE_TYPE_MSG , SysMLPackage . eINSTANCE. itemUsage_ItemDefinition, INVALID_PART_USAGE_TYPE ))
621- // validatePartUsagePartDefinition
622- checkAtLeastOneType(pu, PartDefinition , INVALID_PART_USAGE_PART_DEFINITION_MSG , SysMLPackage . eINSTANCE. partUsage_PartDefinition, INVALID_PART_USAGE_PART_DEFINITION )
623- }
610+ // @Check
611+ // def checkPartUsage(PartUsage pu){
612+ // }
624613
625614 @Check
626615 def checkConjugatedPortDefinition (ConjugatedPortDefinition cpd ) {
@@ -868,7 +857,7 @@ class SysMLValidator extends KerMLValidator {
868857 if ((featureMembership instanceof StateSubactionMembership ||
869858 featureMembership instanceof TransitionFeatureMembership ) &&
870859 usg. payloadArgument == = null ) {
871- error(org.omg.sysml.xtext.validation . SysMLValidator. INVALID_SEND_ACTION_USAGE_PAYLOAD_ARGUMENT_MSG , usg, null , org.omg.sysml.xtext.validation . SysMLValidator. INVALID_SEND_ACTION_USAGE_PAYLOAD_ARGUMENT_MSG )
860+ error(SysMLValidator . INVALID_SEND_ACTION_USAGE_PAYLOAD_ARGUMENT_MSG , usg, null , SysMLValidator . INVALID_SEND_ACTION_USAGE_PAYLOAD_ARGUMENT_MSG )
872861 }
873862 }
874863
0 commit comments