From 21fa2ed57a8d7f4d113cd7e860547bec040722b8 Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Mon, 18 Nov 2024 17:07:01 +0100 Subject: [PATCH 01/12] ST6RI-799 Marked semantic constraint related code with comments - Semantic constraints marked from SysmlV2 abstract syntax from 8.3.6.2 to 8.3.16.13 --- .../adapter/AcceptActionUsageAdapter.java | 2 +- .../omg/sysml/adapter/ActionUsageAdapter.java | 12 ++++ .../adapter/AssignmentActionUsageAdapter.java | 1 + .../sysml/adapter/AttributeUsageAdapter.java | 1 + .../adapter/ConnectionDefinitionAdapter.java | 8 ++- .../sysml/adapter/ConnectionUsageAdapter.java | 6 +- .../adapter/EventOccurrenceUsageAdapter.java | 1 + .../org/omg/sysml/adapter/FeatureAdapter.java | 1 + .../adapter/FlowConnectionUsageAdapter.java | 1 + .../adapter/ForLoopActionUsageAdapter.java | 1 + .../sysml/adapter/IfActionUsageAdapter.java | 1 + .../omg/sysml/adapter/ItemUsageAdapter.java | 5 +- .../omg/sysml/adapter/LifeClassAdapter.java | 4 ++ .../sysml/adapter/OccurrenceUsageAdapter.java | 6 ++ .../omg/sysml/adapter/PartUsageAdapter.java | 4 ++ .../omg/sysml/adapter/PortUsageAdapter.java | 2 + .../org/omg/sysml/adapter/UsageAdapter.java | 5 +- .../sysml/util/ImplicitGeneralizationMap.java | 72 ++++++++++++++++++- 18 files changed, 125 insertions(+), 8 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AcceptActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AcceptActionUsageAdapter.java index 6befee69a..36fb09d10 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AcceptActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AcceptActionUsageAdapter.java @@ -45,7 +45,7 @@ public void computeImplicitGeneralTypes() { @Override public void addDefaultGeneralType() { // Don't add a default type for a transition trigger action because such - // an action will always redefine TransitionAction::accepter anyway. + // an action will always redefine TransitionAction::accepter anyway: checkAcceptActionUsageTriggerActionSpecialization if (!isTriggerAction()) { super.addDefaultGeneralType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java index 29795bb86..1a8489e58 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java @@ -74,7 +74,18 @@ protected boolean isSuboccurrence() { } protected String getSubactionType() { + //TODO checkAcceptActionUsageSpecialization? + + //checkAcceptActionUsageSubactionSpecialization + //checkActionUsageSubactionSpecialization + //checkDecisionNodeSpecialization + //checkForkNodeSpecialization + //checkForLoopActionUsageSubactionSpecialization + //checkIfActionUsageSubactionSpecialization + //checkJoinNodeSpecialization + //checkMergeNodeSpecialization return isActionOwnedComposite()? "subaction": + //checkActionUsageOwnedActionSpecialization isPartOwnedComposite()? "ownedAction": null; } @@ -92,6 +103,7 @@ public boolean isPerformedAction() { */ @Override public boolean isComputeRedefinitions() { + //checkActionUsageStateActionRedefinition String redefinedFeature = getRedefinedFeature(getTarget()); return redefinedFeature != null? isComputeRedefinitions: super.isComputeRedefinitions(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java index 7f527f536..293f32791 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java @@ -36,6 +36,7 @@ public AssignmentActionUsage getTarget() { protected void addTargetRedefinitions() { AssignmentActionUsage target = getTarget(); + //checkAssignmentActionUsageAccessedFeatureRedefinition addFeatureWriteTypes(TypeUtil.getOwnedParametersOf(target), target.getReferent()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AttributeUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AttributeUsageAdapter.java index 720f49053..3bf00b2f2 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AttributeUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AttributeUsageAdapter.java @@ -35,6 +35,7 @@ public AttributeUsage getTarget() { @Override public void doTransform() { + //checkAttributeUsageSpecialization -> TypeAdapter.computeImplicitGeneralTypes super.doTransform(); addDefaultMultiplicity(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java index bc02e7466..69689cbf1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java @@ -36,8 +36,14 @@ public ConnectionDefinition getTarget() { @Override protected String getDefaultSupertype() { - return getTarget().getOwnedEndFeature().size() != 2 ? + return getTarget().getOwnedEndFeature().size() != 2 ? + //checkConnectionDefinitionSpecializations + //checkInterfaceDefinitionSpecialization + //checkAllocationDefinitionSpecialization getDefaultSupertype("base") : + //checkConnectionDefinitionBinarySpecialization + //checkInterfaceDefinitionBinarySpecialization + //checkAllocationDefinitionSpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java index 2d15b7f93..6cebba9a9 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java @@ -39,8 +39,12 @@ public ConnectionUsage getTarget() { @Override protected String getDefaultSupertype() { int numEnds = TypeUtil.getOwnedEndFeaturesOf(getTarget()).size(); - return numEnds != 2? + return numEnds != 2? + //checkConnectionUsageSpecialization + //checkAllocationUsageSpecialization getDefaultSupertype("base"): + //checkConnectionUsageBinarySpecialization + //checkAllocationUsageSpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java index a6828df10..689fcd829 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java @@ -48,6 +48,7 @@ public void addDefaultGeneralType() { @Override protected String getDefaultSupertype() { + //checkEventOccurrenceUsageSpecialization return isSuboccurrence()? getDefaultSupertype("suboccurrence"): super.getDefaultSupertype(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index 2c96e2ffa..c084e796a 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -567,6 +567,7 @@ protected void addFeatureWriteTypes(List parameters, Feature referent) features = startingAtFeature.getOwnedFeature(); if (!features.isEmpty()) { Feature accessedFeature = features.get(0); + //checkAssignmentActionUsageAccessedFeatureRedefinition TypeUtil.addDefaultGeneralTypeTo(accessedFeature, SysMLPackage.eINSTANCE.getRedefinition(), getDefaultSupertype("accessedFeature")); if (referent != null) { TypeUtil.addImplicitGeneralTypeTo(accessedFeature, SysMLPackage.eINSTANCE.getRedefinition(), referent); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java index 0d6538aa3..ee0871456 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java @@ -59,6 +59,7 @@ public void addDefaultGeneralType() { @Override protected String getDefaultSupertype() { + //checkFlowConnectionUsageSpecialization return UsageUtil.isMessageConnection(getTarget())? getDefaultSupertype("message"): getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java index 40c5b7fc7..a58fcd8a4 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java @@ -59,6 +59,7 @@ public void transformLoopVariable() { @Override public void doTransform() { super.doTransform(); + //checkForLoopActionUsageVarRedefinition transformLoopVariable(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java index 70119f4e5..167488f0d 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java @@ -38,6 +38,7 @@ public IfActionUsage getTarget() { public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isIfThenElse()) { + //checkIfActionUsageSpecialization addDefaultGeneralType("ifThenElse"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java index ecabeb6c6..0de4d98ce 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java @@ -39,8 +39,11 @@ public ItemUsage getTarget() { @Override protected String getDefaultSupertype() { - return isSubitem()? + return isSubitem()? + //checkItemUsageSubitemSpecialization + //checkPartUsageSubpartSpecialization getDefaultSupertype("subitem"): + //checkItemUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/LifeClassAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/LifeClassAdapter.java index bc176545d..0ecd53e14 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/LifeClassAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/LifeClassAdapter.java @@ -42,7 +42,10 @@ public LifeClass getTarget() { @Override public void addDefaultGeneralType() { + //checkLifeClassLifeSpecialization super.addDefaultGeneralType(); + + //checkLifeClassOccurrenceSpecialization Namespace owner = getTarget().getOwningNamespace(); if (owner instanceof Classifier) { addImplicitGeneralType(SysMLPackage.eINSTANCE.getSubclassification(), (Classifier)owner); @@ -52,6 +55,7 @@ public void addDefaultGeneralType() { @Override public void doTransform() { super.doTransform(); + //checkLifeClassMultiplicitySpecialization FeatureUtil.addMultiplicityTo(getTarget()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java index baebe6315..e98d4837b 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java @@ -42,10 +42,15 @@ public OccurrenceUsage getTarget() { @Override public void addDefaultGeneralType() { + //checkOccurrenceUsageSpecialization super.addDefaultGeneralType(); + + //checkOccurrenceUsageSuboccurrenceSpecialization if (isSuboccurrence()) { addDefaultGeneralType("suboccurrence"); } + + //checkPortioningFeatureRedefinition PortionKind portionKind = getTarget().getPortionKind(); if (portionKind == PortionKind.SNAPSHOT) { addDefaultGeneralType("snapshot"); @@ -96,6 +101,7 @@ protected void addOccurrenceFeaturing() { @Override public void computeImplicitGeneralTypes() { + //checkOccurrenceUsageTypeFeaturing addOccurrenceTyping(); addOccurrenceFeaturing(); super.computeImplicitGeneralTypes(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java index 8e7941000..0ef1afd00 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java @@ -41,6 +41,10 @@ public PartUsage getTarget() { @Override protected String getDefaultSupertype() { + //checkPartUsageActorSpecialization + //checkPartUsageStakeholderSpecialization + //checkPartUsageSubpartSpecialization + //checkPartUsageSpecialization return isRequirementActor()? getDefaultSupertype("requirementActor"): isRequirementStakeholder()? getDefaultSupertype("requirementStakeholder"): isCaseActor()? getDefaultSupertype("caseActor"): diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java index 9a6fc6122..c99ccbf6f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java @@ -42,7 +42,9 @@ protected String getDefaultSupertype() { return isOwnedPort()? getDefaultSupertype("ownedPort"): isSubport()? + //checkPortUsageSubportSpecialization getDefaultSupertype("subport"): + //checkPortUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java index 4355037e9..e4aabb94b 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java @@ -90,7 +90,7 @@ protected void addSubsetting(String subsettedFeatureName) { addImplicitGeneralType(SysMLPackage.eINSTANCE.getSubsetting(), feature); } } - + protected void addVariationTyping() { Usage usage = getTarget(); if (UsageUtil.isVariant(usage)) { @@ -108,7 +108,10 @@ protected void addVariationTyping() { @Override public void addDefaultGeneralType() { + //checkUsageVariationDefinitionSpecialization + //checkUsageVariationUsageSpecialization addVariationTyping(); + super.addDefaultGeneralType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index 6abfe66f3..dd18c2066 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -73,12 +73,17 @@ protected ImplicitGeneralizationMap() { put(FeatureImpl.class, "base", "Base::things"); put(FeatureImpl.class, "dataValue", "Base::dataValues"); put(FeatureImpl.class, "occurrence", "Occurrences::occurrences"); + + //checkOccurrenceUsageSuboccurrenceSpecialization put(FeatureImpl.class, "suboccurrence", "Occurrences::Occurrence::suboccurrences"); + put(FeatureImpl.class, "portion", "Occurrences::Occurrence::portions"); put(FeatureImpl.class, "object", "Objects::objects"); put(FeatureImpl.class, "subobject", "Objects::Object::subobjects"); put(FeatureImpl.class, "participant", "Links::Link::participant"); + //checkAssignmentActionUsageStartingAtRedefinition put(FeatureImpl.class, "startingAt", "FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt"); + //checkAssignmentActionUsageAccessedFeatureRedefinition put(FeatureImpl.class, "accessedFeature", "FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt::accessedFeature"); put(FeatureChainExpressionImpl.class, "target", "ControlFunctions::'.'::source::target"); @@ -148,25 +153,39 @@ protected ImplicitGeneralizationMap() { // SysML + //checkAcceptActionUsageSpecialization put(AcceptActionUsageImpl.class, "base", "Actions::acceptActions"); + //checkAcceptActionUsageSubactionSpecialization put(AcceptActionUsageImpl.class, "subaction", "Actions::Action::acceptSubactions"); - put(ActionDefinitionImpl.class, "base", "Actions::Action"); + //checkActionDefinitionSpecialization + put(ActionDefinitionImpl.class, "base", "Actions::Action"); + + //checkActionUsageSpecialization put(ActionUsageImpl.class, "base", "Actions::actions"); + //checkActionUsageSubactionSpecialization put(ActionUsageImpl.class, "subaction", "Actions::Action::subactions"); + //checkActionUsageOwnedActionSpecialization put(ActionUsageImpl.class, "ownedAction", "Parts::Part::ownedActions"); put(ActionUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); put(ActionUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "entry", "States::StateAction::entryAction"); + //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "do", "States::StateAction::doAction"); + //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "exit", "States::StateAction::exitAction"); put(ActionUsageImpl.class, "trigger", "Actions::TransitionAction::accepter"); put(ActionUsageImpl.class, "guard", "Actions::TransitionAction::guard"); put(ActionUsageImpl.class, "effect", "Actions::TransitionAction::effect"); + //checkAllocationDefinitionSpecialization put(AllocationDefinitionImpl.class, "base", "Allocations::Allocation"); + //checkAllocationDefinitionSpecialization put(AllocationDefinitionImpl.class, "binary", "Allocations::Allocation"); + //checkAllocationUsageSpecialization put(AllocationUsageImpl.class, "base", "Allocations::allocations"); + //checkAllocationUsageSpecialization put(AllocationUsageImpl.class, "binary", "Allocations::allocations"); put(AnalysisCaseDefinitionImpl.class, "base", "AnalysisCases::AnalysisCase"); @@ -176,11 +195,15 @@ protected ImplicitGeneralizationMap() { put(AssertConstraintUsageImpl.class, "base", "Constraints::assertedConstraintChecks"); put(AssertConstraintUsageImpl.class, "negated", "Constraints::negatedConstraintChecks"); + //checkAssignmentActionUsageSpecialization put(AssignmentActionUsageImpl.class, "base", "Actions::assignmentActions"); + //checkAssignmentActionUsageSpecialization put(AssignmentActionUsageImpl.class, "subaction", "Actions::Action::assignments"); put(AssignmentActionUsageImpl.class, "featureWrite", "Actions::AssignmentAction"); put(AttributeDefinitionImpl.class, "base", "Base::DataValue"); + + //checkAttributeUsageSpecialization put(AttributeUsageImpl.class, "base", "Base::dataValues"); put(BindingConnectorAsUsageImpl.class, "base", "Links::links"); @@ -198,9 +221,13 @@ protected ImplicitGeneralizationMap() { put(ConcernUsageImpl.class, "base", "Requirements::concernChecks"); put(ConcernUsageImpl.class, "concern", "Requirements::RequirementCheck::concerns"); + //checkConnectionDefinitionSpecializations put(ConnectionDefinitionImpl.class, "base", "Connections::Connection"); + //checkConnectionDefinitionBinarySpecialization put(ConnectionDefinitionImpl.class, "binary", "Connections::BinaryConnection"); + //checkConnectionUsageSpecialization put(ConnectionUsageImpl.class, "base", "Connections::connections"); + //checkConnectionUsageBinarySpecialization put(ConnectionUsageImpl.class, "binary", "Connections::binaryConnections"); put(ConstraintDefinitionImpl.class, "base", "Constraints::ConstraintCheck"); @@ -212,45 +239,64 @@ protected ImplicitGeneralizationMap() { put(ConstraintUsageImpl.class, "assumption", "Requirements::RequirementCheck::assumptions"); put(ConstraintUsageImpl.class, "requirement", "Requirements::RequirementCheck::constraints"); + //checkDecisionNodeSpecialization put(DecisionNodeImpl.class, "subaction", "Actions::Action::decisions"); + //checkEventOccurrenceUsageSpecialization put(EventOccurrenceUsageImpl.class, "suboccurrence", "Occurrences::Occurrence::timeEnclosedOccurrences"); put(ExhibitStateUsageImpl.class, "performedAction", "Parts::Part::exhibitedStates"); - put(FlowConnectionDefinitionImpl.class, "binary", "Connections::MessageConnection"); + //checkFlowConnectionDefinitionSpecialization + put(FlowConnectionDefinitionImpl.class, "binary", "Connections::MessageConnection"); + //checkFlowConnectionUsageSpecialization put(FlowConnectionUsageImpl.class, "base", "Connections::flowConnections"); + //checkFlowConnectionUsageSpecialization put(FlowConnectionUsageImpl.class, "message", "Connections::messageConnections"); + put(FlowConnectionUsageImpl.class, "subaction", "Actions::Action::subactions"); put(FlowConnectionUsageImpl.class, "ownedAction", "Parts::Part::ownedActions"); put(FlowConnectionUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); put(FlowConnectionUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); put(FlowConnectionUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + //checkForLoopActionUsageSubactionSpecialization put(ForLoopActionUsageImpl.class, "base", "Actions::forLoopActions"); + //checkForLoopActionUsageSubactionSpecialization put(ForLoopActionUsageImpl.class, "subaction", "Actions::Action::forLoops"); + //checkForLoopActionUsageVarRedefinition put(ForLoopActionUsageImpl.class, "loopVariable", "Actions::ForLoopAction::var"); + //checkForkNodeSpecialization put(ForkNodeImpl.class, "subaction", "Actions::Action::forks"); + //checkIfActionUsageSpecialization put(IfActionUsageImpl.class, "base", "Actions::ifThenActions"); + //checkIfActionUsageSpecialization put(IfActionUsageImpl.class, "ifThenElse", "Actions::ifThenElseActions"); put(IfActionUsageImpl.class, "subaction", "Actions::Action::ifSubactions"); put(IncludeUseCaseUsageImpl.class, "subUseCase", "UseCases::UseCase::includedUseCases"); put(IncludeUseCaseUsageImpl.class, "performedAction", "Parts::Part::performedActions"); + //checkInterfaceDefinitionSpecialization put(InterfaceDefinitionImpl.class, "base", "Interfaces::Interface"); put(InterfaceDefinitionImpl.class, "binary", "Interfaces::BinaryInterface"); put(InterfaceUsageImpl.class, "base", "Interfaces::interfaces"); put(InterfaceUsageImpl.class, "binary", "Interfaces::binaryInterfaces"); + //checkItemDefinitionSpecialization put(ItemDefinitionImpl.class, "base", "Items::Item"); + + //checkItemUsageSpecialization put(ItemUsageImpl.class, "base", "Items::items"); + //checkItemUsageSubitemSpecialization put(ItemUsageImpl.class, "subitem", "Items::Item::subitems"); + //checkJoinNodeSpecialization put(JoinNodeImpl.class, "subaction", "Actions::Action::joins"); + //checkLifeClassLifeSpecialization put(LifeClassImpl.class, "base", "Occurrences::Life"); put(MetadataDefinitionImpl.class, "base", "Metadata::MetadataItem"); @@ -258,25 +304,40 @@ protected ImplicitGeneralizationMap() { put(MetadataUsageImpl.class, "annotatedElement", "Metaobjects::Metaobject::annotatedElement"); put(MetadataUsageImpl.class, "baseType", "Metaobjects::SemanticMetadata::baseType"); + //checkMergeNodeSpecialization put(MergeNodeImpl.class, "subaction", "Actions::Action::merges"); put(OccurrenceDefinitionImpl.class, "base", "Occurrences::Occurrence"); + + //checkOccurrenceUsageSpecialization put(OccurrenceUsageImpl.class, "base", "Occurrences::occurrences"); + //checkPortioningFeatureRedefinition put(OccurrenceUsageImpl.class, "timeslice", "Occurrences::Occurrence::timeSlices"); + //checkPortioningFeatureRedefinition put(OccurrenceUsageImpl.class, "snapshot", "Occurrences::Occurrence::snapshots"); + //checkPartDefinitionSpecialization put(PartDefinitionImpl.class, "base", "Parts::Part"); + //checkPartUsageSpecialization put(PartUsageImpl.class, "base", "Parts::parts"); + //checkPartUsageSubpartSpecialization put(PartUsageImpl.class, "subitem", "Items::Item::subparts"); + //checkPartUsageActorSpecialization put(PartUsageImpl.class, "requirementActor", "Requirements::RequirementCheck::actors"); - put(PartUsageImpl.class, "requirementStakeholder", "Requirements::RequirementCheck::stakeholders"); + //checkPartUsageActorSpecialization put(PartUsageImpl.class, "caseActor", "Cases::Case::actors"); + //checkPartUsageStakeholderSpecialization + put(PartUsageImpl.class, "requirementStakeholder", "Requirements::RequirementCheck::stakeholders"); put(PerformActionUsageImpl.class, "performedAction", "Parts::Part::performedActions"); + //checkPortDefinitionSpecialization put(PortDefinitionImpl.class, "base", "Ports::Port"); + //checkPortUsageSpecialization put(PortUsageImpl.class, "base", "Ports::ports"); + //TODO: find semantic constraint put(PortUsageImpl.class, "ownedPort", "Parts::Part::ownedPort"); + //checkPortUsageSubportSpecialization put(PortUsageImpl.class, "subport", "Ports::Port::subports"); put(RenderingDefinitionImpl.class, "base", "Views::Rendering"); @@ -304,15 +365,20 @@ protected ImplicitGeneralizationMap() { put(SuccessionAsUsageImpl.class, "base", "Links::links"); put(SuccessionAsUsageImpl.class, "binary", "Occurrences::happensBeforeLinks"); + //checkSuccessionFlowConnectionUsageSpecialization put(SuccessionFlowConnectionUsageImpl.class, "base", "Connections::successionFlowConnections"); + //TODO: find semantic constraint put(SuccessionFlowConnectionUsageImpl.class, "message", "Connections::successionFlowConnections"); put(TransitionUsageImpl.class, "base", "Actions::transitionActions"); put(TransitionUsageImpl.class, "actionTransition", "Actions::Action::decisionTransitions"); put(TransitionUsageImpl.class, "stateTransition", "States::StateAction::stateTransitions"); + //checkTriggerInvocationExpressionSpecialization put(TriggerInvocationExpressionImpl.class, "when", "Triggers::TriggerWhen"); + //checkTriggerInvocationExpressionSpecialization put(TriggerInvocationExpressionImpl.class, "at", "Triggers::TriggerAt"); + //checkTriggerInvocationExpressionSpecialization put(TriggerInvocationExpressionImpl.class, "after", "Triggers::TriggerAfter"); put(UseCaseDefinitionImpl.class, "base", "UseCases::UseCase"); From 93f269075ce76e43223eedeb9deff474c874e135 Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Tue, 19 Nov 2024 17:12:07 +0100 Subject: [PATCH 02/12] ST6RI-799 Marked more semantic constraint related code with comments --- .../omg/sysml/adapter/ActionUsageAdapter.java | 2 ++ .../adapter/AssertConstraintUsageAdapter.java | 1 + .../adapter/CalculationUsageAdapter.java | 2 ++ .../sysml/adapter/ConcernUsageAdapter.java | 1 + .../sysml/adapter/ConstraintUsageAdapter.java | 2 ++ .../omg/sysml/adapter/PortUsageAdapter.java | 1 + .../sysml/adapter/ReferenceUsageAdapter.java | 2 ++ .../adapter/RequirementUsageAdapter.java | 7 +++- .../omg/sysml/adapter/StateUsageAdapter.java | 2 ++ .../sysml/adapter/TransitionUsageAdapter.java | 5 +++ .../TriggerInvocationExpressionAdapter.java | 1 + .../sysml/util/ImplicitGeneralizationMap.java | 33 +++++++++++++++++-- 12 files changed, 55 insertions(+), 4 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java index 1a8489e58..6e991049d 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java @@ -86,6 +86,7 @@ protected String getSubactionType() { //checkMergeNodeSpecialization return isActionOwnedComposite()? "subaction": //checkActionUsageOwnedActionSpecialization + //checkStateUsageOwnedStateSpecialization isPartOwnedComposite()? "ownedAction": null; } @@ -124,6 +125,7 @@ protected List getRelevantFeatures(Type type, Element skip) { } protected static String getRedefinedFeature(Feature target) { + //checkTransitionUsageTransitionFeatureSpecialization FeatureMembership membership = target.getOwningFeatureMembership(); String kind = membership instanceof StateSubactionMembership? diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java index 4925e3bfd..71c2d8825 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java @@ -38,6 +38,7 @@ public AssertConstraintUsage getTarget() { @Override protected String getDefaultSupertype() { + //checkAssertConstraintUsageSpecialization return getTarget().isNegated()? getDefaultSupertype("negated"): getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java index 7c4e264eb..73bf2d874 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java @@ -41,6 +41,8 @@ public CalculationUsage getTarget() { @Override protected String getSubactionType() { + //checkCalculationUsageSpecialization + //checkCalculationUsageSubcalculationSpecialization return isSubcalculation()? "subcalculation": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java index 1a5351230..5ece2a0e1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java @@ -50,6 +50,7 @@ protected String getDefaultSupertype() { @Override public void addRequirementConstraintSubsetting() { if (UsageUtil.isFramedConcern(getTarget())) { + //checkConcernUsageFramedConcernSpecialization addSubsetting(getDefaultSupertype("concern")); } else { super.addRequirementConstraintSubsetting(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java index 950c0d84c..693f17a4f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java @@ -46,9 +46,11 @@ public ConstraintUsage getTarget() { @Override public void computeImplicitGeneralTypes() { + //checkConstraintUsageRequirementConstraintSpecialization addRequirementConstraintSubsetting(); super.computeImplicitGeneralTypes(); if (isCheckedConstraint()) { + //checkConstraintUsageCheckedConstraintSpecialization addDefaultGeneralType("checkedConstraint"); } if (isStructureOwnedComposite()) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java index c99ccbf6f..34d5398f1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java @@ -40,6 +40,7 @@ public PortUsage getTarget() { @Override protected String getDefaultSupertype() { return isOwnedPort()? + //checkPortUsageOwnedPortSpecialization getDefaultSupertype("ownedPort"): isSubport()? //checkPortUsageSubportSpecialization diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java index 1236adf79..5dd0a3379 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java @@ -53,6 +53,7 @@ public void addDefaultGeneralType() { ReferenceUsage target = getTarget(); Type type = target.getOwningType(); if (type instanceof TransitionUsage) { + //checkTransitionUsagePayloadSpecialization if (target == UsageUtil.getPayloadParameterOf((TransitionUsage)type)) { Feature accepterParameter = UsageUtil.getAccepterPayloadParameterOf((TransitionUsage)type); if (accepterParameter != null) { @@ -87,6 +88,7 @@ protected void addRedefinitions(Element skip) { ReferenceUsage target = getTarget(); Type type = target.getOwningType(); if ((type instanceof TransitionUsage) && target == UsageUtil.getTransitionLinkFeatureOf((TransitionUsage)type)) { + //checkTransitionUsageSuccessionBindingConnector addImplicitGeneralType(SysMLPackage.eINSTANCE.getRedefinition(), (Feature)SysMLLibraryUtil.getLibraryType(getTarget(), TRANSITION_LINK_FEATURE)); } else { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java index 83c4f716c..2984886fb 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java @@ -55,13 +55,16 @@ public boolean hasRelevantSubjectParameter() { @Override protected String getDefaultSupertype() { return UsageUtil.isSubrequirement(getTarget())? + //checkRequirementUsageSubrequirementSpecialization getDefaultSupertype("subrequirement"): + //checkRequirementUsageSpecialization getDefaultSupertype("base"); } @Override public void addRequirementConstraintSubsetting() { if (UsageUtil.isVerifiedRequirement(getTarget())) { + //checkRequirementUsageRequirementVerificationSpecialization addDefaultGeneralType("verification"); } else { super.addRequirementConstraintSubsetting(); @@ -72,7 +75,8 @@ public void addRequirementConstraintSubsetting() { @Override protected List getRelevantFeatures(Type type, Element skip) { - return UsageUtil.isObjective(getTarget())? + return UsageUtil.isObjective(getTarget())? + //checkRequirementUsageObjectiveRedefinition Collections.singletonList(UsageUtil.getObjectiveRequirementOf(type)): super.getRelevantFeatures(type, skip); } @@ -81,6 +85,7 @@ protected List getRelevantFeatures(Type type, Element skip) { @Override public void addAdditionalMembers() { + //checkSatisfyRequirementUsageBindingConnector UsageUtil.addSubjectParameterTo(getTarget()); super.addAdditionalMembers(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java index 4b6e94fa5..96f9d22eb 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java @@ -36,7 +36,9 @@ public StateUsage getTarget() { @Override protected String getSubactionType() { + //checkStateUsageExclusiveStateSpecialization return isExclusiveState()? "exclusiveState": + //checkStateUsageSubstateSpecialization isSubstate()? "substate": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java index 6ad03089c..36863d0b1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java @@ -52,8 +52,11 @@ public TransitionUsage getTarget() { @Override protected String getDefaultSupertype() { + //checkTransitionUsageStateSpecialization return isStateTransition()? getDefaultSupertype("stateTransition"): + //checkTransitionUsageActionSpecialization isActionTransition()? getDefaultSupertype("actionTransition"): + //checkTransitionUsageSpecialization getDefaultSupertype("base"); } @@ -106,8 +109,10 @@ protected Feature computeTransitionLinkConnectors() { @Override public void addAdditionalMembers() { // Note: Needs to come before computeTransitionLinkConnectors. + //checkTransitionUsageSuccessionSourceSpecialization computeSource(); // Note: Needs to come before clearing and recomputation of inheritance cache. + //checkTransitionUsageSuccessionBindingConnector computeTransitionLinkConnectors(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java index 986950fa8..c092ba48a 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java @@ -67,6 +67,7 @@ public void addReceiverBinding() { @Override public void doTransform() { super.doTransform(); + //checkTransitionUsageSourceBindingConnector addReceiverBinding(); } diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index dd18c2066..3cab2b2a7 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -175,8 +175,11 @@ protected ImplicitGeneralizationMap() { put(ActionUsageImpl.class, "do", "States::StateAction::doAction"); //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "exit", "States::StateAction::exitAction"); + //checkTransitionUsageTransitionFeatureSpecialization put(ActionUsageImpl.class, "trigger", "Actions::TransitionAction::accepter"); + //checkTransitionUsageTransitionFeatureSpecialization put(ActionUsageImpl.class, "guard", "Actions::TransitionAction::guard"); + //checkTransitionUsageTransitionFeatureSpecialization put(ActionUsageImpl.class, "effect", "Actions::TransitionAction::effect"); //checkAllocationDefinitionSpecialization @@ -192,7 +195,9 @@ protected ImplicitGeneralizationMap() { put(AnalysisCaseUsageImpl.class, "base", "AnalysisCases::analysisCases"); put(AnalysisCaseUsageImpl.class, "subAnalysisCase", "AnalysisCases::AnalysisCase::subAnalysisCases"); + //checkAssertConstraintUsageSpecialization put(AssertConstraintUsageImpl.class, "base", "Constraints::assertedConstraintChecks"); + //checkAssertConstraintUsageSpecialization put(AssertConstraintUsageImpl.class, "negated", "Constraints::negatedConstraintChecks"); //checkAssignmentActionUsageSpecialization @@ -209,7 +214,9 @@ protected ImplicitGeneralizationMap() { put(BindingConnectorAsUsageImpl.class, "base", "Links::links"); put(BindingConnectorAsUsageImpl.class, "binary", "Links::selfLinks"); + //checkCalculationDefinitionSpecialization put(CalculationDefinitionImpl.class, "base", "Calculations::Calculation"); + //checkCalculationUsageSpecialization put(CalculationUsageImpl.class, "base", "Calculations::calculations"); put(CalculationUsageImpl.class, "subcalculation", "Calculations::Calculation::subcalculations"); @@ -217,8 +224,11 @@ protected ImplicitGeneralizationMap() { put(CaseUsageImpl.class, "base", "Cases::cases"); put(CaseUsageImpl.class, "subcase", "Cases::Case::subcases"); + //checkConcernDefinitionSpecialization put(ConcernDefinitionImpl.class, "base", "Requirements::ConcernCheck"); + //checkConcernUsageSpecialization put(ConcernUsageImpl.class, "base", "Requirements::concernChecks"); + //checkConcernUsageFramedConcernSpecialization put(ConcernUsageImpl.class, "concern", "Requirements::RequirementCheck::concerns"); //checkConnectionDefinitionSpecializations @@ -230,13 +240,18 @@ protected ImplicitGeneralizationMap() { //checkConnectionUsageBinarySpecialization put(ConnectionUsageImpl.class, "binary", "Connections::binaryConnections"); + //checkConstraintDefinitionSpecialization put(ConstraintDefinitionImpl.class, "base", "Constraints::ConstraintCheck"); + //checkConstraintUsageSpecialization put(ConstraintUsageImpl.class, "base", "Constraints::constraintChecks"); + //checkConstraintUsageCheckedConstraintSpecialization put(ConstraintUsageImpl.class, "checkedConstraint", "Items::Item::checkedConstraints"); put(ConstraintUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); put(ConstraintUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); put(ConstraintUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + //checkConstraintUsageRequirementConstraintSpecialization put(ConstraintUsageImpl.class, "assumption", "Requirements::RequirementCheck::assumptions"); + //checkConstraintUsageRequirementConstraintSpecialization put(ConstraintUsageImpl.class, "requirement", "Requirements::RequirementCheck::constraints"); //checkDecisionNodeSpecialization @@ -244,7 +259,8 @@ protected ImplicitGeneralizationMap() { //checkEventOccurrenceUsageSpecialization put(EventOccurrenceUsageImpl.class, "suboccurrence", "Occurrences::Occurrence::timeEnclosedOccurrences"); - + + //checkStateUsageSpecialization put(ExhibitStateUsageImpl.class, "performedAction", "Parts::Part::exhibitedStates"); //checkFlowConnectionDefinitionSpecialization @@ -335,7 +351,7 @@ protected ImplicitGeneralizationMap() { put(PortDefinitionImpl.class, "base", "Ports::Port"); //checkPortUsageSpecialization put(PortUsageImpl.class, "base", "Ports::ports"); - //TODO: find semantic constraint + //checkPortUsageOwnedPortSpecialization put(PortUsageImpl.class, "ownedPort", "Parts::Part::ownedPort"); //checkPortUsageSubportSpecialization put(PortUsageImpl.class, "subport", "Ports::Port::subports"); @@ -346,8 +362,11 @@ protected ImplicitGeneralizationMap() { put(RenderingUsageImpl.class, "viewRendering", "Views::View::viewRendering"); put(RequirementDefinitionImpl.class, "base", "Requirements::RequirementCheck"); + //checkRequirementUsageSpecialization put(RequirementUsageImpl.class, "base", "Requirements::requirementChecks"); + //checkRequirementUsageSubrequirementSpecialization put(RequirementUsageImpl.class, "subrequirement", "Requirements::RequirementCheck::subrequirements"); + //checkRequirementUsageRequirementVerificationSpecialization put(RequirementUsageImpl.class, "verification", "Verifications::VerificationCase::obj::requirementVerifications"); put(SatisfyRequirementUsageImpl.class, "base", "Requirements::satisfiedRequirementChecks"); @@ -356,10 +375,15 @@ protected ImplicitGeneralizationMap() { put(SendActionUsageImpl.class, "base", "Actions::sendActions"); put(SendActionUsageImpl.class, "subaction", "Actions::Action::sendSubactions"); + //checkStateDefinitionSpecialization put(StateDefinitionImpl.class, "base", "States::StateAction"); + //checkStateUsageSpecialization put(StateUsageImpl.class, "base", "States::stateActions"); + //checkStateUsageSubstateSpecialization put(StateUsageImpl.class, "substate", "States::StateAction::substates"); + //checkStateUsageExclusiveStateSpecialization put(StateUsageImpl.class, "exclusiveState", "States::StateAction::exclusiveStates"); + //checkStateUsageOwnedStateSpecialization put(StateUsageImpl.class, "ownedAction", "Parts::Part::ownedStates"); put(SuccessionAsUsageImpl.class, "base", "Links::links"); @@ -369,9 +393,12 @@ protected ImplicitGeneralizationMap() { put(SuccessionFlowConnectionUsageImpl.class, "base", "Connections::successionFlowConnections"); //TODO: find semantic constraint put(SuccessionFlowConnectionUsageImpl.class, "message", "Connections::successionFlowConnections"); - + + //checkTransitionUsageSpecialization put(TransitionUsageImpl.class, "base", "Actions::transitionActions"); + //checkTransitionUsageActionSpecialization put(TransitionUsageImpl.class, "actionTransition", "Actions::Action::decisionTransitions"); + //checkTransitionUsageStateSpecialization put(TransitionUsageImpl.class, "stateTransition", "States::StateAction::stateTransitions"); //checkTriggerInvocationExpressionSpecialization From b05d7c6fa65ae5c635f2d6340f00fe7e0683d56c Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Tue, 19 Nov 2024 17:15:28 +0100 Subject: [PATCH 03/12] ST6RI-799 Restored accidental removal in ImplicitGeneralizationMap --- .../src/org/omg/sysml/util/ImplicitGeneralizationMap.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index 3cab2b2a7..e095ae997 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -340,6 +340,8 @@ protected ImplicitGeneralizationMap() { put(PartUsageImpl.class, "subitem", "Items::Item::subparts"); //checkPartUsageActorSpecialization put(PartUsageImpl.class, "requirementActor", "Requirements::RequirementCheck::actors"); + //checkPartUsageStakeholderSpecialization + put(PartUsageImpl.class, "requirementStakeholder", "Requirements::RequirementCheck::stakeholders"); //checkPartUsageActorSpecialization put(PartUsageImpl.class, "caseActor", "Cases::Case::actors"); //checkPartUsageStakeholderSpecialization From acdb08348af98379153483f9d7c62e1c3ca48d14 Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Thu, 21 Nov 2024 16:10:00 +0100 Subject: [PATCH 04/12] ST6RI-799 Marked more semantic constraints in SysML/KerML adapters --- .../omg/sysml/adapter/ActionUsageAdapter.java | 8 +- .../adapter/AnalysisCaseUsageAdapter.java | 2 + .../omg/sysml/adapter/AssociationAdapter.java | 2 + .../omg/sysml/adapter/CaseUsageAdapter.java | 2 + .../sysml/adapter/ConnectionUsageAdapter.java | 2 + .../omg/sysml/adapter/ConnectorAdapter.java | 4 + .../adapter/ExhibitStateUsageAdapter.java | 1 + .../omg/sysml/adapter/ExpressionAdapter.java | 3 + .../org/omg/sysml/adapter/FeatureAdapter.java | 10 ++ .../FeatureChainExpressionAdapter.java | 6 +- .../FeatureReferenceExpressionAdapter.java | 1 + .../omg/sysml/adapter/FunctionAdapter.java | 1 + .../adapter/IncludeUseCaseUsageAdapter.java | 2 + .../omg/sysml/adapter/InvariantAdapter.java | 1 + .../adapter/InvocationExpressionAdapter.java | 2 + .../omg/sysml/adapter/ItemFeatureAdapter.java | 1 + .../omg/sysml/adapter/ItemFlowAdapter.java | 1 + .../sysml/adapter/MultiplicityAdapter.java | 2 + .../adapter/OperatorExpressionAdapter.java | 1 + .../adapter/PerformActionUsageAdapter.java | 1 + .../sysml/adapter/RenderingUsageAdapter.java | 5 +- .../adapter/RequirementUsageAdapter.java | 2 +- .../org/omg/sysml/adapter/StepAdapter.java | 4 + .../TriggerInvocationExpressionAdapter.java | 1 + .../sysml/adapter/UseCaseUsageAdapter.java | 2 + .../adapter/VerificationCaseUsageAdapter.java | 2 + .../omg/sysml/adapter/ViewUsageAdapter.java | 4 +- .../sysml/adapter/ViewpointUsageAdapter.java | 2 + .../sysml/util/ImplicitGeneralizationMap.java | 91 ++++++++++++++++++- 29 files changed, 155 insertions(+), 11 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java index 6e991049d..f237134bd 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java @@ -65,6 +65,9 @@ public void addDefaultGeneralType() { @Override protected String getDefaultSupertype() { + //checkAcceptActionUsageSpecialization + //checkSendActionUsageSpecialization + //checkWhileLoopActionUsageSpecialization return getDefaultSupertype("base"); } @@ -74,8 +77,6 @@ protected boolean isSuboccurrence() { } protected String getSubactionType() { - //TODO checkAcceptActionUsageSpecialization? - //checkAcceptActionUsageSubactionSpecialization //checkActionUsageSubactionSpecialization //checkDecisionNodeSpecialization @@ -84,6 +85,9 @@ protected String getSubactionType() { //checkIfActionUsageSubactionSpecialization //checkJoinNodeSpecialization //checkMergeNodeSpecialization + //checkAssignmentActionUsageSubactionSpecialization + //checkSendActionUsageSubactionSpecialization + //checkWhileLoopActionUsageSubactionSpecialization return isActionOwnedComposite()? "subaction": //checkActionUsageOwnedActionSpecialization //checkStateUsageOwnedStateSpecialization diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AnalysisCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AnalysisCaseUsageAdapter.java index e4c1bbc4a..696387c5c 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AnalysisCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AnalysisCaseUsageAdapter.java @@ -38,6 +38,8 @@ public AnalysisCaseUsage getTarget() { @Override protected String getSubactionType() { + //checkAnalysisCaseUsageSpecialization + //checkAnalysisCaseUsageSubAnalysisCaseSpecialization return isSubAnalysisCase()? "subAnalysisCase": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java index 912476386..b468f5550 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java @@ -37,7 +37,9 @@ public Association getTarget() { @Override protected String getDefaultSupertype() { return getTarget().getOwnedEndFeature().size() != 2 ? + //checkAssociationSpecialization getDefaultSupertype("base") : + //checkAssociationBinarySpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java index f121ee754..fff7da6ca 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java @@ -49,6 +49,8 @@ public boolean hasRelevantSubjectParameter() { @Override protected String getSubactionType() { + //checkCaseUsageSpecialization + //checkCaseUsageSubcaseSpecialization return isSubcase()? "subcase": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java index 6cebba9a9..d7005fced 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java @@ -42,9 +42,11 @@ protected String getDefaultSupertype() { return numEnds != 2? //checkConnectionUsageSpecialization //checkAllocationUsageSpecialization + //checkInterfaceDefinitionSpecialization getDefaultSupertype("base"): //checkConnectionUsageBinarySpecialization //checkAllocationUsageSpecialization + //checkInterfaceDefinitionBinarySpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java index a9bdbd39c..7a5c53dbf 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java @@ -46,10 +46,13 @@ protected String getDefaultSupertype() { int numEnds = TypeUtil.getOwnedEndFeaturesOf(target).size(); return hasStructureType()? numEnds != 2? + //checkConnectorObjectSpecialization getDefaultSupertype("object"): + //checkConnectorBinaryObjectSpecialization getDefaultSupertype("binaryObject"): numEnds != 2? getDefaultSupertype("base"): + //checkConnectorBinarySpecialization getDefaultSupertype("binary"); } @@ -72,6 +75,7 @@ public static void addEndSubsetting(Connector target) { public void doTransform() { Connector target = getTarget(); super.doTransform(); + //checkConnectorTypeFeaturing addFeaturingTypeIfNecessary(ConnectorUtil.getContextTypeFor(target)); addEndSubsetting(target); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java index 8d857b3ce..07f595f88 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java @@ -38,6 +38,7 @@ public ExhibitStateUsage getTarget() { public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isPerformedAction()) { + //checkExhibitStateUsageSpecialization addDefaultGeneralType("performedAction"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java index 979ff09f9..42aa91337 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java @@ -85,6 +85,7 @@ public void addDefaultGeneralType() { @Override protected String getDefaultSupertype() { + //checkExpressionSpecialization return getDefaultSupertype("base"); } @@ -140,8 +141,10 @@ public void doTransform() { super.doTransform(); if (expression.getOwningNamespace() instanceof Multiplicity || expression.getOwningMembership() instanceof FeatureValue) { + //checkExpressionTypeFeaturing addImplicitFeaturingTypesIfNecessary(); } + ////checkExpressionResultBindingConnector createResultConnector(expression.getResult()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index c084e796a..df2a0bc3a 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -237,11 +237,13 @@ public void addDefaultGeneralType() { Feature target = getTarget(); Feature result = getBoundValueResult(); if (result != null && target.getOwnedSpecialization().isEmpty() && target.getDirection() == null) { + //checkFeatureValuationSpecialization addImplicitGeneralType(SysMLPackage.eINSTANCE.getSubsetting(), result); } if (isAssociationEnd() && !isImplicitSpecializationDeclaredFor(SysMLPackage.eINSTANCE.getRedefinition())) { + //checkFeatureEndSpecialization addDefaultGeneralType("participant"); } } @@ -249,12 +251,19 @@ public void addDefaultGeneralType() { @Override protected String getDefaultSupertype() { return getDefaultSupertype( + //checkFeatureObjectSpecialization + //checkFeatureSubobjectSpecialization hasStructureType()? isSubobject()? "subobject": "object": hasClassType()? + //checkFeatureSuboccurrenceSpecialization isSuboccurrence()? "suboccurrence": + //checkFeaturePortionSpecialization isPortion()? "portion": + //checkFeatureOccurrenceSpecialization "occurrence": + //checkFeatureDataValueSpecialization hasDataType()? "dataValue": + //checkFeatureSpecialization "base"); } @@ -483,6 +492,7 @@ protected List getGeneralTypes(Type type, Element skip) { protected List getRelevantFeatures(Type type, Element skip) { Feature target = getTarget(); return type == null? Collections.emptyList(): + //checkFeatureEndRedefinition target.isEnd()? TypeUtil.getAllEndFeaturesOf(type): FeatureUtil.isParameter(target)? getParameterRelevantFeatures(type, skip): TypeUtil.getRelevantFeaturesOf(type); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java index 0bb6e8153..03fd51aca 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java @@ -67,8 +67,10 @@ protected void addTargetRedefinition() { TypeUtil.addOwnedFeatureTo(sourceParameter, sourceTarget); } TypeUtil.addImplicitGeneralTypeTo(sourceTarget, - SysMLPackage.eINSTANCE.getRedefinition(), + SysMLPackage.eINSTANCE.getRedefinition(), + //checkFeatureChainExpressionTargetRedefinition getLibraryType(ImplicitGeneralizationMap.getDefaultSupertypeFor(target.getClass(), "target"))); + //checkFeatureChainExpressionSourceTargetRedefinition TypeUtil.addImplicitGeneralTypeTo(sourceTarget, SysMLPackage.eINSTANCE.getRedefinition(), target.getTargetFeature()); TypeUtil.setIsAddImplicitGeneralTypesFor(sourceTarget, false); @@ -78,6 +80,8 @@ protected void addTargetRedefinition() { @Override public void doTransform() { super.doTransform(); + //checkFeatureChainExpressionSourceTargetRedefinition + //checkFeatureChainExpressionTargetRedefinition addTargetRedefinition(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java index a91607037..dfe10f5bb 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java @@ -80,6 +80,7 @@ protected void addResultSubsetting() { @Override public void doTransform() { super.doTransform(); + //checkFeatureReferenceExpressionBindingConnector addReferenceConnector(); // Add subsetting in order to inherit typing of referent. addResultSubsetting(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java index bf87b548f..ea6e445f6 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java @@ -43,6 +43,7 @@ public void addAdditionalMembers() { @Override public void doTransform() { super.doTransform(); + //checkFunctionResultBindingConnector createResultConnector(getTarget().getResult()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java index 1f81c75c6..8efb7108a 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java @@ -39,8 +39,10 @@ public IncludeUseCaseUsage getTarget() { @Override public void addDefaultGeneralType() { + //checkIncludeUseCaseSpecialization super.addDefaultGeneralType(); if (isPerformedAction()) { + ////checkPerformActionUsageSpecialization addDefaultGeneralType("performedAction"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java index aa4147ad5..74c9e2cac 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java @@ -36,6 +36,7 @@ public Invariant getTarget() { @Override protected String getDefaultSupertype() { + //checkInvariantSpecialization return getTarget().isNegated()? getDefaultSupertype("negated"): getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java index cb79c2a1a..b182d31fe 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java @@ -130,7 +130,9 @@ protected void addResultTyping() { @Override public void doTransform() { super.doTransform(); + //checkInvocationExpressionConstructorBindingConnector createSelfResultConnector(); + //checkInvocationExpressionDefaultValueBindingConnector addResultTyping(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ItemFeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ItemFeatureAdapter.java index 90d850ded..877f98c7f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ItemFeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ItemFeatureAdapter.java @@ -43,6 +43,7 @@ protected EClass getSpecializationEClass() { @Override protected String getDefaultSupertype() { + //checkItemFeatureRedefinition return getDefaultSupertype("payload"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowAdapter.java index ea89f7a5a..ba0a5473e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowAdapter.java @@ -55,6 +55,7 @@ public void addDefaultGeneralType() { @Override protected String getDefaultSupertype() { + //checkItemFlowSpecialization return getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java index 8c3f2e261..f7efaac7f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java @@ -48,6 +48,7 @@ protected String getDefaultSupertype() { getDefaultSupertype("classifier"): owner instanceof Feature? getDefaultSupertype("feature"): + //checkMultiplicitySpecialization getDefaultSupertype("base"); } @@ -59,6 +60,7 @@ protected List getRelevantFeatures(Type type, Element skip) { @Override public void doTransform() { super.doTransform(); + //checkMultiplicityTypeFeaturing addImplicitFeaturingTypesIfNecessary(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java index 52a69ec55..9c20dd52e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java @@ -74,6 +74,7 @@ public void computeImplicitGeneralTypes() { OperatorExpression target = getTarget(); String operator = target.getOperator(); if (operator != null) { + //checkOperatorExpressionSpecialization addDefaultGeneralType(SysMLPackage.eINSTANCE.getFeatureTyping(), ExpressionUtil.getOperatorQualifiedNames(operator)); } super.computeImplicitGeneralTypes(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java index ebad9c79a..b300c14a6 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java @@ -38,6 +38,7 @@ public PerformActionUsage getTarget() { public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isPerformedAction()) { + //checkPerformActionUsageSpecialization addDefaultGeneralType("performedAction"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java index 6e2ce0388..7170433d1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java @@ -43,14 +43,17 @@ public RenderingUsage getTarget() { public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isViewRendering()) { + //checkRenderingUsageRedefinition addImplicitGeneralType(SysMLPackage.eINSTANCE.getRedefinition(), getLibraryType(getDefaultSupertype("viewRendering"))); } } @Override protected String getDefaultSupertype() { - return isSubrendering()? + return isSubrendering()? + //checkRenderingUsageSubrenderingSpecialization getDefaultSupertype("subrendering"): + //checkRenderingUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java index 2984886fb..12abee7d2 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java @@ -85,7 +85,7 @@ protected List getRelevantFeatures(Type type, Element skip) { @Override public void addAdditionalMembers() { - //checkSatisfyRequirementUsageBindingConnector + //checkSatisfyRequirementUsageBindingConnector? UsageUtil.addSubjectParameterTo(getTarget()); super.addAdditionalMembers(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java index ffbd34709..6129fa233 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java @@ -43,13 +43,17 @@ public Step getTarget() { protected String getDefaultSupertype() { return getDefaultSupertype( isStructureOwnedComposite()? + //checkStepOwnedPerformanceSpecialization "ownedPerformance": isBehaviorOwnedComposite()? + //checkStepSubperformanceSpecialization "subperformance": isBehaviorOwned()? + //checkStepEnclosedPerformanceSpecialization "enclosedPerformance": isIncomingTransfer()? "incomingTransfer": + //checkStepSpecialization "base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java index c092ba48a..2038a8705 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java @@ -44,6 +44,7 @@ public TriggerInvocationExpression getTarget() { @Override public void computeImplicitGeneralTypes() { + //checkTriggerInvocationExpressionSpecialization TriggerInvocationExpression target = getTarget(); TriggerKind kind = target.getKind(); if (kind != null) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java index beb338dce..3e3db0493 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java @@ -33,6 +33,8 @@ public UseCaseUsageAdapter(UseCaseUsage element) { @Override protected String getSubactionType() { + //checkUseCaseUsageSpecialization + //checkUseCaseUsageSubUseCaseSpecialization return isSubUseCase()? "subUseCase": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java index 40c6b4bcb..a4dc6397f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java @@ -38,6 +38,8 @@ public VerificationCaseUsage getTarget() { @Override protected String getSubactionType() { + //checkVerificationCaseUsageSpecialization + //checkVerificationCaseUsageSubVerification return isSubVerificationCase()? "subVerificationCase": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java index 935201a93..67610dcfc 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java @@ -38,8 +38,10 @@ public ViewUsage getTarget() { @Override protected String getDefaultSupertype() { - return isSubview()? + return isSubview()? + //checkViewUsageSubviewSpecialization getDefaultSupertype("subview"): + //checkViewpointUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java index 803b4d9b6..815f47ca4 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java @@ -40,7 +40,9 @@ public ViewpointUsage getTarget() { @Override protected String getDefaultSupertype() { return isSatisfiedViewpoint()? + //checkViewpointUsageViewpointSatisfactionSpecialization getDefaultSupertype("satisfied"): + //checkViewpointUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index e095ae997..aed678592 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -44,41 +44,61 @@ protected ImplicitGeneralizationMap() { // KerML + //checkAssociationSpecialization put(AssociationImpl.class, "base", "Links::Link"); + //checkAssociationBinarySpecialization put(AssociationImpl.class, "binary", "Links::BinaryLink"); + //checkAssociationStructureSpecialization put(AssociationStructureImpl.class, "base", "Objects::LinkObject"); + //checkAssociationStructureBinarySpecialization put(AssociationStructureImpl.class, "binary", "Objects::BinaryLinkObject"); + //checkBehaviorSpecialization put(BehaviorImpl.class, "base", "Performances::Performance"); + //checkBindingConnectorSpecialization put(BindingConnectorImpl.class, "binary", "Links::selfLinks"); + //checkBooleanExpressionSpecialization put(BooleanExpressionImpl.class, "base", "Performances::booleanEvaluations"); + //checkClassSpecialization put(ClassImpl.class, "base", "Occurrences::Occurrence"); put(ClassifierImpl.class, "base", "Base::Anything"); + //checkConnectorSpecialization put(ConnectorImpl.class, "base", "Links::links"); + //checkConnectorBinarySpecialization put(ConnectorImpl.class, "binary", "Links::binaryLinks"); + //checkConnectorObjectSpecialization put(ConnectorImpl.class, "object", "Objects::linkObjects"); + //checkConnectorBinaryObjectSpecialization put(ConnectorImpl.class, "binaryObject", "Objects::binaryLinkObjects"); + //checkDataTypeSpecialization put(DataTypeImpl.class, "base", "Base::DataValue"); + //checkExpressionSpecialization put(ExpressionImpl.class, "base", "Performances::evaluations"); put(ExpressionImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkFeatureSpecialization put(FeatureImpl.class, "base", "Base::things"); + //checkFeatureDataValueSpecialization put(FeatureImpl.class, "dataValue", "Base::dataValues"); + //checkFeatureOccurrenceSpecialization put(FeatureImpl.class, "occurrence", "Occurrences::occurrences"); - //checkOccurrenceUsageSuboccurrenceSpecialization + //checkFeatureSuboccurrenceSpecialization put(FeatureImpl.class, "suboccurrence", "Occurrences::Occurrence::suboccurrences"); + //checkFeaturePortionSpecialization put(FeatureImpl.class, "portion", "Occurrences::Occurrence::portions"); + //checkFeatureObjectSpecialization put(FeatureImpl.class, "object", "Objects::objects"); + //checkFeatureSubobjectSpecialization put(FeatureImpl.class, "subobject", "Objects::Object::subobjects"); put(FeatureImpl.class, "participant", "Links::Link::participant"); //checkAssignmentActionUsageStartingAtRedefinition @@ -86,15 +106,21 @@ protected ImplicitGeneralizationMap() { //checkAssignmentActionUsageAccessedFeatureRedefinition put(FeatureImpl.class, "accessedFeature", "FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt::accessedFeature"); + //checkFeatureChainExpressionTargetRedefinition put(FeatureChainExpressionImpl.class, "target", "ControlFunctions::'.'::source::target"); + //checkFunctionSpecialization put(FunctionImpl.class, "base", "Performances::Evaluation"); + //checkInvariantSpecialization put(InvariantImpl.class, "base", "Performances::trueEvaluations"); + //checkInvariantSpecialization put(InvariantImpl.class, "negated", "Performances::falseEvaluations"); + //checkItemFeatureRedefinition put(ItemFeatureImpl.class, "payload", "Transfers::Transfer::item"); + //checkItemFlowSpecialization put(ItemFlowImpl.class, "base", "Transfers::flowTransfers"); put(ItemFlowImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); put(ItemFlowImpl.class, "subperformance", "Performances::Performance::subperformances"); @@ -103,25 +129,34 @@ protected ImplicitGeneralizationMap() { put(ItemFlowEndImpl.class, "sourceOutput", "Transfers::Transfer::source::sourceOutput"); put(ItemFlowEndImpl.class, "targetInput", "Transfers::Transfer::target::targetInput"); + //checkLiteralBooleanSpecialization put(LiteralBooleanImpl.class, "base", "Performances::literalBooleanEvaluations"); + //checkLiteralExpressionSpecialization put(LiteralExpressionImpl.class, "base", "Performances::literalEvaluations"); + //checkLiteralInfinitySpecialization put(LiteralInfinityImpl.class, "base", "Performances::literalIntegerEvaluations"); + //checkLiteralIntegerSpecialization put(LiteralIntegerImpl.class, "base", "Performances::literalIntegerEvaluations"); + //checkLiteralRationalSpecialization put(LiteralRationalImpl.class, "base", "Performances::literalRationalEvaluations"); + //checkLiteralStringSpecialization put(LiteralStringImpl.class, "base", "Performances::literalStringEvaluations"); + //checkMetaclassSpecialization put(MetaclassImpl.class, "base", "Metaobjects::Metaobject"); + //checkMetadataFeatureSpecialization put(MetadataFeatureImpl.class, "base", "Metaobjects::metaobjects"); put(MetadataFeatureImpl.class, "annotatedElement", "Metaobjects::Metaobject::annotatedElement"); put(MetadataFeatureImpl.class, "baseType", "Metaobjects::SemanticMetadata::baseType"); put(MetadataAccessExpressionImpl.class, "base", "Performances::metadataAccessEvaluations"); + //checkMultiplicitySpecialization put(MultiplicityImpl.class, "base", "Base::naturals"); put(MultiplicityImpl.class, "feature", "Base::exactlyOne"); put(MultiplicityImpl.class, "classifier", "Base::zeroOrOne"); @@ -129,26 +164,36 @@ protected ImplicitGeneralizationMap() { put(MultiplicityRangeImpl.class, "feature", "Base::naturals"); put(MultiplicityRangeImpl.class, "classifier", "Base::naturals"); + //checkNullExpressionSpecialization put(NullExpressionImpl.class, "base", "Performances::nullEvaluations"); + //checkPredicateSpecialization put(PredicateImpl.class, "base", "Performances::BooleanEvaluation"); + //checkStepSpecialization put(StepImpl.class, "base", "Performances::performances"); + //checkStepEnclosedPerformanceSpecialization put(StepImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(StepImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(StepImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); put(StepImpl.class, "incomingTransfer", "Occurrences::Occurrence::incomingTransfers"); put(StepImpl.class, "featureWrite", "FeatureReferencingPerformances::FeatureWritePerformance"); + //checkStructureSpecialization put(StructureImpl.class, "base", "Objects::Object"); + //checkSuccessionSpecialization put(SuccessionImpl.class, "binary", "Occurrences::happensBeforeLinks"); + //checkSuccessionItemFlowSpecialization put(SuccessionItemFlowImpl.class, "base", "Transfers::flowTransfersBefore"); put(SuccessionItemFlowImpl.class, "enclosedperformance", "Performances::Performance::enclosedPerformances"); put(SuccessionItemFlowImpl.class, "subperformance", "Performances::Performance::subperformances"); put(SuccessionItemFlowImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); - + + //checkTypeSpecialization put(TypeImpl.class, "base", "Base::Anything"); // SysML @@ -191,8 +236,11 @@ protected ImplicitGeneralizationMap() { //checkAllocationUsageSpecialization put(AllocationUsageImpl.class, "binary", "Allocations::allocations"); + //checkAnalysisCaseDefinitionSpecialization put(AnalysisCaseDefinitionImpl.class, "base", "AnalysisCases::AnalysisCase"); + //checkAnalysisCaseUsageSpecialization put(AnalysisCaseUsageImpl.class, "base", "AnalysisCases::analysisCases"); + //checkAnalysisCaseUsageSubAnalysisCaseSpecialization put(AnalysisCaseUsageImpl.class, "subAnalysisCase", "AnalysisCases::AnalysisCase::subAnalysisCases"); //checkAssertConstraintUsageSpecialization @@ -218,10 +266,14 @@ protected ImplicitGeneralizationMap() { put(CalculationDefinitionImpl.class, "base", "Calculations::Calculation"); //checkCalculationUsageSpecialization put(CalculationUsageImpl.class, "base", "Calculations::calculations"); + //checkCalculationUsageSubcalculationSpecialization put(CalculationUsageImpl.class, "subcalculation", "Calculations::Calculation::subcalculations"); + //checkCaseDefinitionSpecialization put(CaseDefinitionImpl.class, "base", "Cases::Case"); + //checkCaseUsageSpecialization put(CaseUsageImpl.class, "base", "Cases::cases"); + //checkCaseUsageSubcaseSpecialization put(CaseUsageImpl.class, "subcase", "Cases::Case::subcases"); //checkConcernDefinitionSpecialization @@ -260,7 +312,7 @@ protected ImplicitGeneralizationMap() { //checkEventOccurrenceUsageSpecialization put(EventOccurrenceUsageImpl.class, "suboccurrence", "Occurrences::Occurrence::timeEnclosedOccurrences"); - //checkStateUsageSpecialization + //checkExhibitStateUsageSpecialization put(ExhibitStateUsageImpl.class, "performedAction", "Parts::Part::exhibitedStates"); //checkFlowConnectionDefinitionSpecialization @@ -276,7 +328,7 @@ protected ImplicitGeneralizationMap() { put(FlowConnectionUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); put(FlowConnectionUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); - //checkForLoopActionUsageSubactionSpecialization + //checkForLoopActionUsageSpecialization put(ForLoopActionUsageImpl.class, "base", "Actions::forLoopActions"); //checkForLoopActionUsageSubactionSpecialization put(ForLoopActionUsageImpl.class, "subaction", "Actions::Action::forLoops"); @@ -290,15 +342,21 @@ protected ImplicitGeneralizationMap() { put(IfActionUsageImpl.class, "base", "Actions::ifThenActions"); //checkIfActionUsageSpecialization put(IfActionUsageImpl.class, "ifThenElse", "Actions::ifThenElseActions"); + //checkIfActionUsageSubactionSpecialization put(IfActionUsageImpl.class, "subaction", "Actions::Action::ifSubactions"); + //checkIncludeUseCaseSpecialization put(IncludeUseCaseUsageImpl.class, "subUseCase", "UseCases::UseCase::includedUseCases"); + //checkPerformActionUsageSpecialization put(IncludeUseCaseUsageImpl.class, "performedAction", "Parts::Part::performedActions"); //checkInterfaceDefinitionSpecialization put(InterfaceDefinitionImpl.class, "base", "Interfaces::Interface"); + //checkInterfaceDefinitionBinarySpecialization put(InterfaceDefinitionImpl.class, "binary", "Interfaces::BinaryInterface"); + //checkInterfaceDefinitionSpecialization put(InterfaceUsageImpl.class, "base", "Interfaces::interfaces"); + //checkInterfaceUsageBinarySpecialization put(InterfaceUsageImpl.class, "binary", "Interfaces::binaryInterfaces"); //checkItemDefinitionSpecialization @@ -315,7 +373,9 @@ protected ImplicitGeneralizationMap() { //checkLifeClassLifeSpecialization put(LifeClassImpl.class, "base", "Occurrences::Life"); + //checkMetadataDefinitionSpecialization put(MetadataDefinitionImpl.class, "base", "Metadata::MetadataItem"); + //checkMetadataUsageSpecialization put(MetadataUsageImpl.class, "base", "Metadata::metadataItems"); put(MetadataUsageImpl.class, "annotatedElement", "Metaobjects::Metaobject::annotatedElement"); put(MetadataUsageImpl.class, "baseType", "Metaobjects::SemanticMetadata::baseType"); @@ -347,6 +407,7 @@ protected ImplicitGeneralizationMap() { //checkPartUsageStakeholderSpecialization put(PartUsageImpl.class, "requirementStakeholder", "Requirements::RequirementCheck::stakeholders"); + //checkPerformActionUsageSpecialization put(PerformActionUsageImpl.class, "performedAction", "Parts::Part::performedActions"); //checkPortDefinitionSpecialization @@ -358,11 +419,15 @@ protected ImplicitGeneralizationMap() { //checkPortUsageSubportSpecialization put(PortUsageImpl.class, "subport", "Ports::Port::subports"); + //checkRenderingDefinitionSpecialization put(RenderingDefinitionImpl.class, "base", "Views::Rendering"); + //checkRenderingUsageSpecialization put(RenderingUsageImpl.class, "base", "Views::renderings"); + //checkRenderingUsageSubrenderingSpecialization put(RenderingUsageImpl.class, "subrendering", "Views::Rendering::subrenderings"); put(RenderingUsageImpl.class, "viewRendering", "Views::View::viewRendering"); + //checkRequirementDefinitionSpecialization put(RequirementDefinitionImpl.class, "base", "Requirements::RequirementCheck"); //checkRequirementUsageSpecialization put(RequirementUsageImpl.class, "base", "Requirements::requirementChecks"); @@ -374,7 +439,9 @@ protected ImplicitGeneralizationMap() { put(SatisfyRequirementUsageImpl.class, "base", "Requirements::satisfiedRequirementChecks"); put(SatisfyRequirementUsageImpl.class, "negated", "Requirements::notSatisfiedRequirementChecks"); + //checkSendActionUsageSpecialization put(SendActionUsageImpl.class, "base", "Actions::sendActions"); + //checkSendActionUsageSubactionSpecialization put(SendActionUsageImpl.class, "subaction", "Actions::Action::sendSubactions"); //checkStateDefinitionSpecialization @@ -410,23 +477,37 @@ protected ImplicitGeneralizationMap() { //checkTriggerInvocationExpressionSpecialization put(TriggerInvocationExpressionImpl.class, "after", "Triggers::TriggerAfter"); + //checkUseCaseDefinitionSpecialization put(UseCaseDefinitionImpl.class, "base", "UseCases::UseCase"); + //checkUseCaseUsageSpecialization put(UseCaseUsageImpl.class, "base", "UseCases::useCases"); + //checkUseCaseUsageSubUseCaseSpecialization put(UseCaseUsageImpl.class, "subUseCase", "UseCases::UseCase::subUseCases"); + //checkVerificationCaseSpecialization put(VerificationCaseDefinitionImpl.class, "base", "VerificationCases::VerificationCase"); + //checkVerificationCaseUsageSpecialization put(VerificationCaseUsageImpl.class, "base", "VerificationCases::verificationCases"); + //checkVerificationCaseUsageSubVerification put(VerificationCaseUsageImpl.class, "subVerificationCase", "VerificationCases::VerificationCase::subVerificationCases"); + //checkViewDefinitionSpecialization put(ViewDefinitionImpl.class, "base", "Views::View"); + //checkViewpointUsageSpecialization put(ViewUsageImpl.class, "base", "Views::views"); + //checkViewUsageSubviewSpecialization put(ViewUsageImpl.class, "subview", "Views::View::subviews"); - + + //checkViewpointDefinitionSpecialization put(ViewpointDefinitionImpl.class, "base", "Views::ViewpointCheck"); + //checkViewpointUsageSpecialization put(ViewpointUsageImpl.class, "base", "Views::viewpointChecks"); + //checkViewpointUsageViewpointSatisfactionSpecialization put(ViewpointUsageImpl.class, "satisfied", "Views::View::viewpointSatisfactions"); + //checkWhileLoopActionUsageSpecialization put(WhileLoopActionUsageImpl.class, "base", "Actions::whileLoopActions"); + //checkWhileLoopActionUsageSubactionSpecialization put(WhileLoopActionUsageImpl.class, "subaction", "Actions::Action::whileLoops"); } From 977c785d86b5a99d3bcbfcf222194b0c2e2d9a6c Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Tue, 3 Dec 2024 15:24:26 +0100 Subject: [PATCH 05/12] ST6RI-799 Marked more semantic constraints in SysML/KerML adapters --- .../adapter/AssignmentActionUsageAdapter.java | 2 ++ .../omg/sysml/adapter/AssociationAdapter.java | 2 ++ .../org/omg/sysml/adapter/FeatureAdapter.java | 5 ++++ .../FeatureReferenceExpressionAdapter.java | 1 + .../adapter/FlowConnectionUsageAdapter.java | 6 +++++ .../adapter/InvocationExpressionAdapter.java | 1 + .../omg/sysml/adapter/ItemFlowEndAdapter.java | 1 + .../sysml/adapter/MetadataFeatureAdapter.java | 1 + .../sysml/adapter/OccurrenceUsageAdapter.java | 1 + .../adapter/RequirementUsageAdapter.java | 2 -- .../TriggerInvocationExpressionAdapter.java | 1 + .../org/omg/sysml/adapter/UsageAdapter.java | 1 + .../sysml/util/ImplicitGeneralizationMap.java | 27 ++++++++++++++++++- 13 files changed, 48 insertions(+), 3 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java index 293f32791..564c1f3d1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java @@ -37,6 +37,8 @@ public AssignmentActionUsage getTarget() { protected void addTargetRedefinitions() { AssignmentActionUsage target = getTarget(); //checkAssignmentActionUsageAccessedFeatureRedefinition + //checkAssignmentActionUsageReferentRedefinition + //checkAssignmentActionUsageStartingAtRedefinition addFeatureWriteTypes(TypeUtil.getOwnedParametersOf(target), target.getReferent()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java index b468f5550..907563e4f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java @@ -38,8 +38,10 @@ public Association getTarget() { protected String getDefaultSupertype() { return getTarget().getOwnedEndFeature().size() != 2 ? //checkAssociationSpecialization + //checkAssociationStructureSpecialization getDefaultSupertype("base") : //checkAssociationBinarySpecialization + //checkAssociationStructureBinarySpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index df2a0bc3a..316efc34b 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -504,6 +504,7 @@ protected List getRelevantFeatures(Type type, Element skip) { * Expression. */ public List getParameterRelevantFeatures(Type type, Element skip) { + //checkFeatureResultRedefinition if (type != null) { if (FeatureUtil.isResultParameter(getTarget())) { Feature resultParameter = TypeUtil.getResultParameterOf(type); @@ -571,6 +572,7 @@ protected void addFeatureWriteTypes(List parameters, Feature referent) Feature targetFeature = parameters.get(0); List features = targetFeature.getOwnedFeature(); if (!features.isEmpty()) { + //checkAssignmentActionUsageStartingAtRedefinition Feature startingAtFeature = features.get(0); TypeUtil.addDefaultGeneralTypeTo(startingAtFeature, SysMLPackage.eINSTANCE.getRedefinition(), getDefaultSupertype("startingAt")); TypeUtil.setIsAddImplicitGeneralTypesFor(startingAtFeature, false); @@ -579,6 +581,7 @@ protected void addFeatureWriteTypes(List parameters, Feature referent) Feature accessedFeature = features.get(0); //checkAssignmentActionUsageAccessedFeatureRedefinition TypeUtil.addDefaultGeneralTypeTo(accessedFeature, SysMLPackage.eINSTANCE.getRedefinition(), getDefaultSupertype("accessedFeature")); + //checkAssignmentActionUsageReferentRedefinition if (referent != null) { TypeUtil.addImplicitGeneralTypeTo(accessedFeature, SysMLPackage.eINSTANCE.getRedefinition(), referent); } @@ -589,6 +592,7 @@ protected void addFeatureWriteTypes(List parameters, Feature referent) } protected void computeValueConnector() { + //checkFeatureValueBindingConnector Feature target = getTarget(); Feature result = getBoundValueResult(); if (result != null) { @@ -606,6 +610,7 @@ protected void computeValueConnector() { @Override public void doTransform() { + //checkFeatureValueBindingConnector computeValueConnector(); forceComputeRedefinitions(); super.doTransform(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java index dfe10f5bb..f98a2935f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java @@ -67,6 +67,7 @@ protected void addReferenceConnector() { } protected void addResultSubsetting() { + //checkFeatureFeatureReferenceResultSpecialization FeatureReferenceExpression expression = getTarget(); Feature result = expression.getResult(); // Note: Use getReferentFor here to avoid "self reference" default. diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java index ee0871456..5a58809cf 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FlowConnectionUsageAdapter.java @@ -44,21 +44,27 @@ public FlowConnectionUsage getTarget() { public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isPartOwnedComposite()) { + //checkActionUsageOwnedActionSpecialization addDefaultGeneralType("ownedAction"); } else if (isStructureOwnedComposite()) { + //checkStepOwnedPerformanceSpecialization addDefaultGeneralType("ownedPerformance"); } if (isActionOwnedComposite()) { + //checkActionUsageSubactionSpecialization addDefaultGeneralType("subaction"); } else if (isBehaviorOwnedComposite()) { + //checkStepSubperformanceSpecialization addDefaultGeneralType("subperformance"); } else if (isBehaviorOwned()) { + //checkStepEnclosedPerformanceSpecialization addDefaultGeneralType("enclosedPerformance"); } } @Override protected String getDefaultSupertype() { + //checkSuccessionFlowConnectionUsageSpecialization //checkFlowConnectionUsageSpecialization return UsageUtil.isMessageConnection(getTarget())? getDefaultSupertype("message"): diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java index b182d31fe..3ecbeba28 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java @@ -113,6 +113,7 @@ protected void createSelfResultConnector() { } protected void addResultTyping() { + //checkFeatureInvocationExpressionResultSpecialization Type expressionType = getExpressionType(); if (expressionType != null && !(expressionType instanceof Function || expressionType instanceof Expression)) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowEndAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowEndAdapter.java index 574518d39..ac72052ab 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowEndAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ItemFlowEndAdapter.java @@ -97,6 +97,7 @@ public void addItemFlowFeatureRedefinition() { @Override public void doTransform() { addItemFlowEndSubsetting(); + //checkFeatureItemFlowFeatureRedefinition addItemFlowFeatureRedefinition(); super.doTransform(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java index 41698c036..9eb63fb2c 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java @@ -50,6 +50,7 @@ protected List getBaseTypes() { @Override public void doTransform() { super.doTransform(); + //checkMetadataFeatureSemanticSpecialization AnnotatingElementAdapter.transformAnnotatingElement(getTarget()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java index e98d4837b..9773b4773 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java @@ -103,6 +103,7 @@ protected void addOccurrenceFeaturing() { public void computeImplicitGeneralTypes() { //checkOccurrenceUsageTypeFeaturing addOccurrenceTyping(); + //checkPortioningFeatureSpecialization addOccurrenceFeaturing(); super.computeImplicitGeneralTypes(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java index 12abee7d2..44f41f038 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java @@ -85,9 +85,7 @@ protected List getRelevantFeatures(Type type, Element skip) { @Override public void addAdditionalMembers() { - //checkSatisfyRequirementUsageBindingConnector? UsageUtil.addSubjectParameterTo(getTarget()); super.addAdditionalMembers(); } - } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java index 2038a8705..6780d734e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java @@ -55,6 +55,7 @@ public void computeImplicitGeneralTypes() { } public void addReceiverBinding() { + //checkAcceptActionUsageReceiverBindingConnector TriggerInvocationExpression target = getTarget(); Feature receiverParameter = TypeUtil.getOwnedParameterOf(target, 1, Feature.class); if (receiverParameter != null) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java index e4aabb94b..b2d1eb7e8 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java @@ -145,6 +145,7 @@ protected void computeValueConnector() { FeatureValue valuation = FeatureUtil.getValuationFor(usage); if (valuation == null && UsageUtil.isSubjectParameter(usage)){ Feature subjectParameter = getRelevantSubjectParameterFor(usage); + //checkSatisfyRequirementUsageBindingConnector if (subjectParameter != null) { addBindingConnector(subjectParameter, usage); } diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index aed678592..5c3fe1d7b 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -82,6 +82,7 @@ protected ImplicitGeneralizationMap() { //checkExpressionSpecialization put(ExpressionImpl.class, "base", "Performances::evaluations"); + //checkStepSubperformanceSpecialization put(ExpressionImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); //checkFeatureSpecialization @@ -122,8 +123,11 @@ protected ImplicitGeneralizationMap() { //checkItemFlowSpecialization put(ItemFlowImpl.class, "base", "Transfers::flowTransfers"); + //checkStepEnclosedPerformanceSpecialization put(ItemFlowImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(ItemFlowImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(ItemFlowImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); put(ItemFlowEndImpl.class, "sourceOutput", "Transfers::Transfer::source::sourceOutput"); @@ -189,8 +193,11 @@ protected ImplicitGeneralizationMap() { //checkSuccessionItemFlowSpecialization put(SuccessionItemFlowImpl.class, "base", "Transfers::flowTransfersBefore"); + //checkStepEnclosedPerformanceSpecialization put(SuccessionItemFlowImpl.class, "enclosedperformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(SuccessionItemFlowImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(SuccessionItemFlowImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); //checkTypeSpecialization @@ -212,7 +219,9 @@ protected ImplicitGeneralizationMap() { put(ActionUsageImpl.class, "subaction", "Actions::Action::subactions"); //checkActionUsageOwnedActionSpecialization put(ActionUsageImpl.class, "ownedAction", "Parts::Part::ownedActions"); + //checkStepEnclosedPerformanceSpecialization put(ActionUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepOwnedPerformanceSpecialization put(ActionUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "entry", "States::StateAction::entryAction"); @@ -259,7 +268,9 @@ protected ImplicitGeneralizationMap() { //checkAttributeUsageSpecialization put(AttributeUsageImpl.class, "base", "Base::dataValues"); + //checkConnectorSpecialization put(BindingConnectorAsUsageImpl.class, "base", "Links::links"); + //?? put(BindingConnectorAsUsageImpl.class, "binary", "Links::selfLinks"); //checkCalculationDefinitionSpecialization @@ -298,8 +309,11 @@ protected ImplicitGeneralizationMap() { put(ConstraintUsageImpl.class, "base", "Constraints::constraintChecks"); //checkConstraintUsageCheckedConstraintSpecialization put(ConstraintUsageImpl.class, "checkedConstraint", "Items::Item::checkedConstraints"); + //checkStepEnclosedPerformanceSpecialization put(ConstraintUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(ConstraintUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(ConstraintUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); //checkConstraintUsageRequirementConstraintSpecialization put(ConstraintUsageImpl.class, "assumption", "Requirements::RequirementCheck::assumptions"); @@ -322,10 +336,15 @@ protected ImplicitGeneralizationMap() { //checkFlowConnectionUsageSpecialization put(FlowConnectionUsageImpl.class, "message", "Connections::messageConnections"); + //checkActionUsageSubactionSpecialization put(FlowConnectionUsageImpl.class, "subaction", "Actions::Action::subactions"); + //checkActionUsageOwnedActionSpecialization put(FlowConnectionUsageImpl.class, "ownedAction", "Parts::Part::ownedActions"); + //checkStepEnclosedPerformanceSpecialization put(FlowConnectionUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(FlowConnectionUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(FlowConnectionUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); //checkForLoopActionUsageSpecialization @@ -383,6 +402,7 @@ protected ImplicitGeneralizationMap() { //checkMergeNodeSpecialization put(MergeNodeImpl.class, "subaction", "Actions::Action::merges"); + //checkOccurrenceDefinitionSpecialization put(OccurrenceDefinitionImpl.class, "base", "Occurrences::Occurrence"); //checkOccurrenceUsageSpecialization @@ -425,6 +445,7 @@ protected ImplicitGeneralizationMap() { put(RenderingUsageImpl.class, "base", "Views::renderings"); //checkRenderingUsageSubrenderingSpecialization put(RenderingUsageImpl.class, "subrendering", "Views::Rendering::subrenderings"); + //checkRenderingUsageRedefinition put(RenderingUsageImpl.class, "viewRendering", "Views::View::viewRendering"); //checkRequirementDefinitionSpecialization @@ -436,7 +457,9 @@ protected ImplicitGeneralizationMap() { //checkRequirementUsageRequirementVerificationSpecialization put(RequirementUsageImpl.class, "verification", "Verifications::VerificationCase::obj::requirementVerifications"); + //Missing from specification put(SatisfyRequirementUsageImpl.class, "base", "Requirements::satisfiedRequirementChecks"); + //Missing from specification put(SatisfyRequirementUsageImpl.class, "negated", "Requirements::notSatisfiedRequirementChecks"); //checkSendActionUsageSpecialization @@ -455,12 +478,14 @@ protected ImplicitGeneralizationMap() { //checkStateUsageOwnedStateSpecialization put(StateUsageImpl.class, "ownedAction", "Parts::Part::ownedStates"); + //checkConnectorSpecialization put(SuccessionAsUsageImpl.class, "base", "Links::links"); + //checkSuccessionSpecialization put(SuccessionAsUsageImpl.class, "binary", "Occurrences::happensBeforeLinks"); //checkSuccessionFlowConnectionUsageSpecialization put(SuccessionFlowConnectionUsageImpl.class, "base", "Connections::successionFlowConnections"); - //TODO: find semantic constraint + //checkSuccessionFlowConnectionUsageSpecialization put(SuccessionFlowConnectionUsageImpl.class, "message", "Connections::successionFlowConnections"); //checkTransitionUsageSpecialization From 041ae06d9cfc62a4df6adc71198243bcb704080f Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Wed, 21 May 2025 12:59:45 +0200 Subject: [PATCH 06/12] ST6RI-351 --- .../org/omg/sysml/adapter/ActionUsageAdapter.java | 1 + .../src/org/omg/sysml/adapter/FeatureAdapter.java | 13 ++++++++++--- .../src/org/omg/sysml/adapter/FlowAdapter.java | 3 +++ .../adapter/TriggerInvocationExpressionAdapter.java | 6 ++++++ .../omg/sysml/util/ImplicitGeneralizationMap.java | 6 ++++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java index d04e0cf57..9f9464426 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java @@ -54,6 +54,7 @@ public void addDefaultGeneralType() { String subactionType = getSubactionType(); if (subactionType != null) { + //checkAcceptActionUsageTriggerActionSpecialization addDefaultGeneralType(subactionType); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index b18dbc84d..bf07e9645 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -310,12 +310,19 @@ public static Feature getCrossFeatureOf(Feature feature) { @Override protected String getDefaultSupertype() { return getDefaultSupertype( + //checkFeatureObjectSpecialization + //checkFeatureSubobjectSpecialization hasStructureType()? isSubobject()? "subobject": "object": - hasClassType()? - isSuboccurrence()? "suboccurrence": + //checkFeatureSuboccurrenceSpecialization + //checkFeaturePortionSpecialization + //checkFeatureOccurrenceSpecialization + hasClassType()? + isSuboccurrence()? "suboccurrence": isPortion()? "portion": "occurrence": + //checkFeatureDataValueSpecialization hasDataType()? "dataValue": + //checkFeatureSpecialization "base"); } @@ -334,7 +341,7 @@ protected boolean isPortion() { (owningType instanceof org.omg.sysml.lang.sysml.Class || owningType instanceof Feature && (hasClassType((Feature)owningType))); } - + public boolean hasClassType() { return hasClassType(getTarget()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java index 9d601b300..86a8a575b 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java @@ -39,12 +39,15 @@ public Flow getTarget() { public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isStructureOwnedComposite()) { + //checkStepOwnedPerformanceSpecialization addDefaultGeneralType("ownedPerformance"); } if (isBehaviorOwnedComposite()) { + //checkStepSubperformanceSpecialization addDefaultGeneralType("subperformance"); } if (isBehaviorOwned()) { + //checkStepSubperformanceSpecialization addDefaultGeneralType("enclosedPerformance"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java index 53a878b8e..91df33671 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java @@ -54,6 +54,12 @@ public void computeImplicitGeneralTypes() { super.computeImplicitGeneralTypes(); } + + /** + * @satisfies checkAcceptActionUsageReceiverBindingConnector + * @satisfies checkSomething + * @satisfies + */ public void addReceiverBinding() { //checkAcceptActionUsageReceiverBindingConnector TriggerInvocationExpression target = getTarget(); diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index db9f8d950..5d867b418 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -72,12 +72,18 @@ protected ImplicitGeneralizationMap() { put(ExpressionImpl.class, "base", "Performances::evaluations"); put(ExpressionImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkFeatureSpecialization put(FeatureImpl.class, "base", "Base::things"); + //checkFeatureDataValueSpecialization put(FeatureImpl.class, "dataValue", "Base::dataValues"); + //checkFeatureOccurrenceSpecialization put(FeatureImpl.class, "occurrence", "Occurrences::occurrences"); + //checkFeatureSuboccurrenceSpecialization put(FeatureImpl.class, "suboccurrence", "Occurrences::Occurrence::suboccurrences"); put(FeatureImpl.class, "portion", "Occurrences::Occurrence::portions"); + //checkFeatureObjectSpecialization put(FeatureImpl.class, "object", "Objects::objects"); + //checkFeatureSubobjectSpecialization put(FeatureImpl.class, "subobject", "Objects::Object::subobjects"); put(FeatureImpl.class, "participant", "Links::Link::participant"); put(FeatureImpl.class, "startingAt", "FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt"); From cf0784c01882358c3d368753cc4fc16ec03e241c Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Mon, 16 Jun 2025 17:27:10 +0200 Subject: [PATCH 07/12] ST6RI-799 Traced semantic constraints in adapters --- .../adapter/AssertConstraintUsageAdapter.java | 4 ++- .../adapter/AssignmentActionUsageAdapter.java | 8 +++-- .../adapter/CalculationUsageAdapter.java | 6 ++-- .../omg/sysml/adapter/CaseUsageAdapter.java | 6 ++-- .../sysml/adapter/ConcernUsageAdapter.java | 5 ++- .../sysml/adapter/ConstraintUsageAdapter.java | 7 ++-- .../adapter/EventOccurrenceUsageAdapter.java | 5 ++- .../adapter/ExhibitStateUsageAdapter.java | 6 ++-- .../org/omg/sysml/adapter/FeatureAdapter.java | 34 ++++++++++++++----- .../FeatureReferenceExpressionAdapter.java | 9 +++-- .../omg/sysml/adapter/FunctionAdapter.java | 6 ++-- .../sysml/adapter/IndexExpressionAdapter.java | 5 ++- .../omg/sysml/adapter/InvariantAdapter.java | 4 ++- .../omg/sysml/adapter/ItemUsageAdapter.java | 8 +++-- .../sysml/adapter/MultiplicityAdapter.java | 7 ++-- .../sysml/adapter/OccurrenceUsageAdapter.java | 7 +++- .../sysml/adapter/PayloadFeatureAdapter.java | 3 ++ .../adapter/SelectExpressionAdapter.java | 3 ++ 18 files changed, 96 insertions(+), 37 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java index 71c2d8825..27425262e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssertConstraintUsageAdapter.java @@ -36,9 +36,11 @@ public AssertConstraintUsage getTarget() { return (AssertConstraintUsage)super.getTarget(); } + /** + * @satisfies checkAssertConstraintUsageSpecialization + */ @Override protected String getDefaultSupertype() { - //checkAssertConstraintUsageSpecialization return getTarget().isNegated()? getDefaultSupertype("negated"): getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java index 564c1f3d1..aaa073dea 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssignmentActionUsageAdapter.java @@ -34,11 +34,13 @@ public AssignmentActionUsage getTarget() { return (AssignmentActionUsage)super.getTarget(); } + /** + * @satisfies checkAssignmentActionUsageReferentRedefinition + * @satisfies checkAssignmentActionUsageAccessedFeatureRedefinition + * @satisfies checkAssignmentActionUsageStartingAtRedefinition + */ protected void addTargetRedefinitions() { AssignmentActionUsage target = getTarget(); - //checkAssignmentActionUsageAccessedFeatureRedefinition - //checkAssignmentActionUsageReferentRedefinition - //checkAssignmentActionUsageStartingAtRedefinition addFeatureWriteTypes(TypeUtil.getOwnedParametersOf(target), target.getReferent()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java index 9b83d797f..bf6de578e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java @@ -38,10 +38,12 @@ public CalculationUsage getTarget() { return (CalculationUsage)super.getTarget(); } + /** + * @satisfies checkCalculationUsageSpecialization + * @satisfies checkCalculationUsageSubcalculationSpecialization + */ @Override protected String getSubactionType() { - //checkCalculationUsageSpecialization - //checkCalculationUsageSubcalculationSpecialization return isSubcalculation()? "subcalculation": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java index fff7da6ca..c6725f2a6 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java @@ -47,10 +47,12 @@ public boolean hasRelevantSubjectParameter() { // Implicit Generalization + /** + * @satisfies checkCaseUsageSpecialization + * @satisfies checkCaseUsageSubcaseSpecialization + */ @Override protected String getSubactionType() { - //checkCaseUsageSpecialization - //checkCaseUsageSubcaseSpecialization return isSubcase()? "subcase": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java index 5ece2a0e1..53703ab03 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java @@ -47,10 +47,13 @@ public void addDefaultGeneralType() { protected String getDefaultSupertype() { return getDefaultSupertype("base"); } + + /** + * @satisfies checkConcernUsageFramedConcernSpecialization + */ @Override public void addRequirementConstraintSubsetting() { if (UsageUtil.isFramedConcern(getTarget())) { - //checkConcernUsageFramedConcernSpecialization addSubsetting(getDefaultSupertype("concern")); } else { super.addRequirementConstraintSubsetting(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java index 0077a4c6d..c085955d8 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java @@ -26,6 +26,7 @@ import org.omg.sysml.lang.sysml.ItemDefinition; import org.omg.sysml.lang.sysml.ItemUsage; import org.omg.sysml.lang.sysml.RequirementConstraintKind; +import org.omg.sysml.lang.sysml.SysMLPackage; import org.omg.sysml.lang.sysml.Type; import org.omg.sysml.util.UsageUtil; @@ -44,13 +45,15 @@ public ConstraintUsage getTarget() { // Implicit Generalization + /** + * @satisfies checkConstraintUsageRequirementConstraintSpecialization + * @satisfies checkConstraintUsageCheckedConstraintSpecialization + */ @Override public void computeImplicitGeneralTypes() { - //checkConstraintUsageRequirementConstraintSpecialization addRequirementConstraintSubsetting(); super.computeImplicitGeneralTypes(); if (isCheckedConstraint()) { - //checkConstraintUsageCheckedConstraintSpecialization addDefaultGeneralType("checkedConstraint"); } if (isStructureOwnedComposite()) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java index 689fcd829..1749041a6 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java @@ -42,13 +42,12 @@ public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isSuboccurrence()) { addImplicitGeneralType(getSpecializationEClass(), - getLibraryType(getDefaultSupertype("suboccurrence")));; + getLibraryType(getDefaultSupertype("suboccurrence"))); } } - + @Override protected String getDefaultSupertype() { - //checkEventOccurrenceUsageSpecialization return isSuboccurrence()? getDefaultSupertype("suboccurrence"): super.getDefaultSupertype(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java index 07f595f88..f1e141d11 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ExhibitStateUsageAdapter.java @@ -33,12 +33,14 @@ public ExhibitStateUsageAdapter(ExhibitStateUsage element) { public ExhibitStateUsage getTarget() { return (ExhibitStateUsage)super.getTarget(); } - + + /** + * @satisfies checkExhibitStateUsageSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isPerformedAction()) { - //checkExhibitStateUsageSpecialization addDefaultGeneralType("performedAction"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index 18af1489f..5c30cafad 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -229,6 +229,9 @@ public void addDefaultGeneralType() { addOwnedCrossFeatureSpecialization(); } + /** + * @satisfies checkFeatureValuationSpecialization + */ protected void addBoundValueSubsetting() { Feature target = getTarget(); Feature result = getBoundValueResult(); @@ -310,22 +313,24 @@ public static Feature getCrossFeatureOf(Feature feature) { return crossFeature; } + /** + * @satisfies checkFeatureObjectSpecialization + * @satisfies checkFeatureSubobjectSpecialization + * @satisfies checkFeatureSuboccurrenceSpecialization + * @satisfies checkFeaturePortionSpecialization + * @satisfies checkFeatureOccurrenceSpecialization + * @satisfies checkFeatureDataValueSpecialization + * @satisfies checkFeatureSpecialization + */ @Override protected String getDefaultSupertype() { return getDefaultSupertype( - //checkFeatureObjectSpecialization - //checkFeatureSubobjectSpecialization hasStructureType()? isSubobject()? "subobject": "object": - //checkFeatureSuboccurrenceSpecialization - //checkFeaturePortionSpecialization - //checkFeatureOccurrenceSpecialization hasClassType()? isSuboccurrence()? "suboccurrence": isPortion()? "portion": "occurrence": - //checkFeatureDataValueSpecialization hasDataType()? "dataValue": - //checkFeatureSpecialization "base"); } @@ -544,6 +549,8 @@ public void addComputedRedefinitions(Element skip) { * owning Type, then it is paired with relevant Features in the same position in Generalizations of the * owning Type. The determination of what are relevant Categories and Features can be adjusted by * overriding getGeneralCategories and getRelevantFeatures. + * + * @satisfies checkFeatureParameterRedefinition */ protected void addRedefinitions(Element skip) { Feature target = getTarget(); @@ -593,6 +600,9 @@ protected List getRelevantFeatures(Type type, Element skip) { Collections.emptyList(); } + /** + * @satisfies checkConstructorExpressionResultFeatureRedefinition + */ protected List getConstructorRelevantFeatures(Type type) { Type owningType = getTarget().getOwningType(); if (type == owningType) { @@ -734,9 +744,13 @@ protected void addFeatureWriteTypes(List parameters, Feature referent) } } } - + + /** + * @satisfies checkFeatureValueBindingConnector + */ protected void computeValueConnector() { Feature target = getTarget(); + //returns null if valuation isDefault is true Feature result = getBoundValueResult(); if (result != null) { List featuringTypes; @@ -751,7 +765,9 @@ protected void computeValueConnector() { } } - // checkFeatureOwnedCrossFeatureTypeFeaturing + /** + * @satisfies checkFeatureOwnedCrossFeatureTypeFeaturing + */ public void addOwnedCrossFeatureTypeFeaturing() { Feature target = getTarget(); if (FeatureUtil.isOwnedCrossFeature(target) && target.getOwnedTypeFeaturing().isEmpty() && isImplicitFeaturingTypesEmpty()) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java index 65d6751a2..9b8490b2f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java @@ -59,6 +59,9 @@ protected boolean isInFilterExpression() { return root.getOwningMembership() instanceof ElementFilterMembership; } + /** + * @satisfies checkFeatureReferenceExpressionBindingConnector + */ protected void addReferenceConnector() { if (!isInFilterExpression()) { FeatureReferenceExpression target = getTarget(); @@ -69,9 +72,11 @@ protected void addReferenceConnector() { } } } - + + /** + * @satisfies checkFeatureFeatureReferenceResultSpecialization + */ protected void addResultSubsetting() { - //checkFeatureFeatureReferenceResultSpecialization FeatureReferenceExpression expression = getTarget(); Feature result = expression.getResult(); // Note: Use getReferentFor here to avoid "self reference" default. diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java index 7b94fd95f..1f6fa54aa 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java @@ -33,11 +33,13 @@ public FunctionAdapter(Function element) { public Function getTarget() { return (Function)super.getTarget(); } - + + /** + * @satisfies checkFunctionResultBindingConnector + */ @Override public void doTransform() { super.doTransform(); - //checkFunctionResultBindingConnector createResultConnector(getTarget().getResult()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java index ced479380..7aa16429a 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java @@ -43,7 +43,10 @@ public IndexExpressionAdapter(IndexExpression element) { public IndexExpression getTarget() { return (IndexExpression)super.getTarget(); } - + + /** + * @satisfies checkIndexExpressionResultSpecialization + */ @Override protected void addResultTyping() { IndexExpression target = getTarget(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java index 74c9e2cac..926e903d1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/InvariantAdapter.java @@ -34,9 +34,11 @@ public Invariant getTarget() { return (Invariant)super.getTarget(); } + /** + * @satisfies checkInvariantSpecialization + */ @Override protected String getDefaultSupertype() { - //checkInvariantSpecialization return getTarget().isNegated()? getDefaultSupertype("negated"): getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java index 4163db3d8..3683bd349 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java @@ -37,13 +37,15 @@ public ItemUsage getTarget() { // Implicit Generalization + /** + * @satisfies checkItemUsageSubitemSpecialization + * @satisfies checkPartUsageSubpartSpecialization + * @satisfies checkItemUsageSpecialization + */ @Override protected String getDefaultSupertype() { return isSubitem()? - //checkItemUsageSubitemSpecialization - //checkPartUsageSubpartSpecialization getDefaultSupertype("subitem"): - //checkItemUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java index d4f399c99..1274e27b2 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java @@ -42,7 +42,11 @@ public MultiplicityAdapter(Multiplicity element) { public Multiplicity getTarget() { return (Multiplicity)super.getTarget(); } - + + /** + * @satisfies checkOccurrenceDefinitionMultiplicitySpecialization, Note: SysML grammar adds the empty multiplicity + * @satisfies checkMultiplicitySpecialization + */ @Override protected String getDefaultSupertype() { Element owner = getTarget().getOwner(); @@ -50,7 +54,6 @@ protected String getDefaultSupertype() { getDefaultSupertype("classifier"): owner instanceof Feature? getDefaultSupertype("feature"): - //checkMultiplicitySpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java index db0ab4569..9e49435fa 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java @@ -48,7 +48,12 @@ public void postProcess() { } // Implicit Generalization - + + /** + * @satisfies checkOccurrenceUsageSnapshotSpecialization + * @satisfies checkOccurrenceUsageSuboccurrenceSpecialization + * @satisfies checkOccurrenceUsageTimeSliceSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PayloadFeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PayloadFeatureAdapter.java index 17af5c216..af21c48e6 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PayloadFeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PayloadFeatureAdapter.java @@ -38,6 +38,9 @@ public PayloadFeature getTarget() { return (PayloadFeature)super.getTarget(); } + /** + * @satisfies checkPayloadFeatureRedefinition + */ @Override public void addRedefinitions(Element skip) { Feature redefinedFeature = (Feature)SysMLLibraryUtil.getLibraryType(getTarget(), getDefaultSupertype("payload")); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/SelectExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/SelectExpressionAdapter.java index 84c84b3d8..ffddb4f8b 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/SelectExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/SelectExpressionAdapter.java @@ -39,6 +39,9 @@ public SelectExpression getTarget() { return (SelectExpression)super.getTarget(); } + /** + * @satisfies checkSelectExpressionResultSpecialization + */ @Override protected void addResultTyping() { SelectExpression target = getTarget(); From 9ba4b197b0e45e6483af7206cd7a52a70724b397 Mon Sep 17 00:00:00 2001 From: Laszlo Gati Date: Mon, 23 Jun 2025 16:23:16 +0200 Subject: [PATCH 08/12] ST6RI-843 Annotated semantic constraints in adapters --- .../omg/sysml/adapter/AssociationAdapter.java | 12 ++++++----- .../adapter/CalculationDefinitionAdapter.java | 3 +++ .../adapter/ConnectionDefinitionAdapter.java | 16 ++++++++------- .../omg/sysml/adapter/ConnectorAdapter.java | 16 +++++++++++++-- .../adapter/ConstraintDefinitionAdapter.java | 5 ++++- .../omg/sysml/adapter/ExpressionAdapter.java | 2 +- .../org/omg/sysml/adapter/FeatureAdapter.java | 20 ++++++++++++------- .../org/omg/sysml/adapter/FlowAdapter.java | 8 +++++--- .../sysml/adapter/FlowDefinitionAdapter.java | 6 +++++- .../omg/sysml/adapter/FunctionAdapter.java | 2 +- .../adapter/OccurrenceDefinitionAdapter.java | 5 +++++ .../omg/sysml/adapter/PartUsageAdapter.java | 4 +++- .../adapter/PerformActionUsageAdapter.java | 4 +++- .../omg/sysml/adapter/PortUsageAdapter.java | 10 ++++++---- .../sysml/adapter/RenderingUsageAdapter.java | 12 +++++++---- .../adapter/RequirementUsageAdapter.java | 14 +++++++++---- .../SatisfyRequirementUsageAdapter.java | 4 ++++ .../omg/sysml/adapter/StateUsageAdapter.java | 8 +++++--- .../org/omg/sysml/adapter/StepAdapter.java | 10 ++++++---- .../sysml/adapter/TransitionUsageAdapter.java | 17 ++++++++-------- .../org/omg/sysml/adapter/TypeAdapter.java | 2 +- .../org/omg/sysml/adapter/UsageAdapter.java | 8 +++++++- .../adapter/VerificationCaseUsageAdapter.java | 6 ++++-- 23 files changed, 133 insertions(+), 61 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java index 907563e4f..89129a196 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/AssociationAdapter.java @@ -33,15 +33,17 @@ public AssociationAdapter(Association element) { public Association getTarget() { return (Association)super.getTarget(); } - + + /** + * @satisfies checkAssociationSpecialization + * @satisfies checkAssociationBinarySpecialization + * @satisfies checkAssociationStructureSpecialization + * @satisfies checkAssociationStructureBinarySpecialization + */ @Override protected String getDefaultSupertype() { return getTarget().getOwnedEndFeature().size() != 2 ? - //checkAssociationSpecialization - //checkAssociationStructureSpecialization getDefaultSupertype("base") : - //checkAssociationBinarySpecialization - //checkAssociationStructureBinarySpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationDefinitionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationDefinitionAdapter.java index cd222ee9c..90cfd3b12 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationDefinitionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationDefinitionAdapter.java @@ -33,6 +33,9 @@ public CalculationDefinition getTarget() { return (CalculationDefinition)super.getTarget(); } + /** + * @satisfies checkFunctionResultBindingConnector + */ @Override public void doTransform() { super.doTransform(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java index 69689cbf1..9a28ec925 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionDefinitionAdapter.java @@ -33,17 +33,19 @@ public ConnectionDefinitionAdapter(ConnectionDefinition element) { public ConnectionDefinition getTarget() { return (ConnectionDefinition)super.getTarget(); } - + + /** + * @satisfies checkConnectionDefinitionSpecializations + * @satisfies checkInterfaceDefinitionSpecialization + * @satisfies checkAllocationDefinitionSpecialization + * @satisfies checkConnectionDefinitionBinarySpecialization + * @satisfies checkInterfaceDefinitionBinarySpecialization + * @satisfies checkAllocationDefinitionSpecialization + */ @Override protected String getDefaultSupertype() { return getTarget().getOwnedEndFeature().size() != 2 ? - //checkConnectionDefinitionSpecializations - //checkInterfaceDefinitionSpecialization - //checkAllocationDefinitionSpecialization getDefaultSupertype("base") : - //checkConnectionDefinitionBinarySpecialization - //checkInterfaceDefinitionBinarySpecialization - //checkAllocationDefinitionSpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java index ce22b3c80..62a2947a3 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java @@ -39,7 +39,13 @@ public ConnectorAdapter(Connector feature) { public Connector getTarget() { return (Connector)super.getTarget(); } - + + /** + * @satisfies checkConnectorBinaryObjectSpecialization + * @satisfies checkConnectorBinarySpecialization + * @satisfies checkConnectorObjectSpecialization + * @satisfies checkConnectorSpecialization + */ @Override protected String getDefaultSupertype() { Connector target = getTarget(); @@ -52,7 +58,10 @@ protected String getDefaultSupertype() { getDefaultSupertype("base"): getDefaultSupertype("binary"); } - + + /** + * @satisfies checkConnectorTypeFeaturing + */ protected void addContextFeaturingType() { addFeaturingTypeIfNecessary(ConnectorUtil.getContextTypeFor(getTarget())); } @@ -72,6 +81,9 @@ public static void addEndSubsetting(Connector target) { } } + /** + * @satisfies checkConnectorTypeFeaturing + */ @Override public void doTransform() { Connector target = getTarget(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintDefinitionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintDefinitionAdapter.java index a878e4ec8..88472d68d 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintDefinitionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintDefinitionAdapter.java @@ -33,7 +33,10 @@ public ConstraintDefinitionAdapter(ConstraintDefinition element) { public ConstraintDefinition getTarget() { return (ConstraintDefinition)super.getTarget(); } - + + /** + * @satisfies checkFunctionResultBindingConnector + */ @Override public void doTransform() { super.doTransform(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java index 353779e93..6632d9456 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java @@ -60,7 +60,7 @@ public void addDefaultGeneralType() { addDefaultGeneralType("enclosedPerformance"); } } - + @Override protected String getDefaultSupertype() { //checkExpressionSpecialization diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index 5c30cafad..ddaea14db 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -219,6 +219,13 @@ protected Feature getBoundValueResult() { return null; } + /** + * @satisfies checkFeatureValuationSpecialization + * @satisfies checkFeatureCrossingSpecialization + * @satisfies checkFeatureOwnedCrossFeatureSpecialization + * @satisfies checkFeatureOwnedCrossFeatureRedefinitionSpecialization + * + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); @@ -229,9 +236,7 @@ public void addDefaultGeneralType() { addOwnedCrossFeatureSpecialization(); } - /** - * @satisfies checkFeatureValuationSpecialization - */ + protected void addBoundValueSubsetting() { Feature target = getTarget(); Feature result = getBoundValueResult(); @@ -247,7 +252,6 @@ protected void addParticipantSubsetting() { } } - // checkFeatureCrossingSpecialization public void addCrossingSpecialization() { Feature target = getTarget(); Feature ownedCrossFeature = FeatureUtil.getOwnedCrossFeatureOf(target); @@ -280,17 +284,19 @@ public void addCrossingSpecialization() { } } } - + + /** + * @satisfies checkFeatureOwnedCrossFeatureSpecialization + * @satisfies checkFeatureOwnedCrossFeatureRedefinitionSpecialization + */ protected void addOwnedCrossFeatureSpecialization() { Feature target = getTarget(); Namespace owner = target.getOwningNamespace(); if (FeatureUtil.isOwnedCrossFeature(target)) { - // checkFeatureOwnedCrossFeatureSpecialization for (Type type: ((Feature)owner).getType()) { addImplicitGeneralType(SysMLPackage.eINSTANCE.getFeatureTyping(), type); } - // checkFeatureOwnedCrossFeatureRedefinitionSpecialization for (Feature redefinedFeature: FeatureUtil.getRedefinedFeaturesWithComputedOf((Feature)owner, null)) { if (redefinedFeature.isEnd()) { Feature crossFeature = getCrossFeatureOf(redefinedFeature); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java index 86a8a575b..47d135ee7 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FlowAdapter.java @@ -35,19 +35,21 @@ public Flow getTarget() { return (Flow)super.getTarget(); } + /** + * @satisfies checkStepOwnedPerformanceSpecialization + * @satisfies checkStepSubperformanceSpecialization + * @satisfies checkStepEnclosedPerformanceSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isStructureOwnedComposite()) { - //checkStepOwnedPerformanceSpecialization addDefaultGeneralType("ownedPerformance"); } if (isBehaviorOwnedComposite()) { - //checkStepSubperformanceSpecialization addDefaultGeneralType("subperformance"); } if (isBehaviorOwned()) { - //checkStepSubperformanceSpecialization addDefaultGeneralType("enclosedPerformance"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FlowDefinitionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FlowDefinitionAdapter.java index d7d980e38..55272065f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FlowDefinitionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FlowDefinitionAdapter.java @@ -32,7 +32,11 @@ public FlowDefinitionAdapter(FlowDefinition element) { public FlowDefinition getTarget() { return (FlowDefinition)super.getTarget(); } - + + /** + * @satisfies checkFlowDefinitionBinarySpecialization + * @satisfies checkFlowDefinitionSpecialization + */ // From AssociationAdapter @Override protected String getDefaultSupertype() { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java index 1f6fa54aa..2b114d841 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FunctionAdapter.java @@ -40,7 +40,7 @@ public Function getTarget() { @Override public void doTransform() { super.doTransform(); - createResultConnector(getTarget().getResult()); + createResultConnector(getTarget().getResult()); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceDefinitionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceDefinitionAdapter.java index f3c40bdac..aba9575e0 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceDefinitionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceDefinitionAdapter.java @@ -34,6 +34,11 @@ public OccurrenceDefinition getTarget() { return (OccurrenceDefinition)super.getTarget(); } + /** + * @satisfies checkOccurrenceDefinitionIndividualSpecialization + * @satisfies checkClassSpecialization + * @satisfies checkCalculationDefinitionSpecialization + */ protected String getDefaultSupertype() { return getTarget().isIndividual()? getDefaultSupertype("life"): getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java index 0ef1afd00..ac4572d61 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java @@ -39,9 +39,11 @@ public PartUsage getTarget() { return (PartUsage)super.getTarget(); } + /** + * @satisfies checkPartUsageActorSpecialization + */ @Override protected String getDefaultSupertype() { - //checkPartUsageActorSpecialization //checkPartUsageStakeholderSpecialization //checkPartUsageSubpartSpecialization //checkPartUsageSpecialization diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java index b300c14a6..aa8b438bb 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PerformActionUsageAdapter.java @@ -34,11 +34,13 @@ public PerformActionUsage getTarget() { return (PerformActionUsage)super.getTarget(); } + /** + * @satisfies checkPerformActionUsageSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isPerformedAction()) { - //checkPerformActionUsageSpecialization addDefaultGeneralType("performedAction"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java index 74ee77865..53dcdb61e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PortUsageAdapter.java @@ -38,16 +38,18 @@ public PortUsage getTarget() { } // Implicit Generalization - + + /** + * @satisfies checkPortUsageOwnedPortSpecialization + * @satisfies checkPortUsageSubportSpecialization + * @satisfies checkPortUsageSpecialization + */ @Override protected String getDefaultSupertype() { return isOwnedPort()? - //checkPortUsageOwnedPortSpecialization getDefaultSupertype("ownedPort"): isSubport()? - //checkPortUsageSubportSpecialization getDefaultSupertype("subport"): - //checkPortUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java index 78071955e..63eb0b32d 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java @@ -40,21 +40,25 @@ public RenderingUsage getTarget() { return (RenderingUsage)super.getTarget(); } + /** + * @satisfies checkRenderingUsageRedefinition + */ @Override public void addRedefinitions(Element skip) { super.addRedefinitions(skip); if (isViewRendering()) { - //checkRenderingUsageRedefinition addImplicitGeneralType(SysMLPackage.eINSTANCE.getRedefinition(), getLibraryType(getDefaultSupertype("viewRendering"))); } } - + + /** + * @satisfies checkRenderingUsageSubrenderingSpecialization + * @satisfies checkRenderingUsageSpecialization + */ @Override protected String getDefaultSupertype() { return isSubrendering()? - //checkRenderingUsageSubrenderingSpecialization getDefaultSupertype("subrendering"): - //checkRenderingUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java index 44f41f038..7cabffce4 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/RequirementUsageAdapter.java @@ -52,19 +52,23 @@ public boolean hasRelevantSubjectParameter() { // Implicit Generalization + /** + * @satisfies checkRequirementUsageSubrequirementSpecialization + * @satisfies checkRequirementUsageSpecialization + */ @Override protected String getDefaultSupertype() { return UsageUtil.isSubrequirement(getTarget())? - //checkRequirementUsageSubrequirementSpecialization getDefaultSupertype("subrequirement"): - //checkRequirementUsageSpecialization getDefaultSupertype("base"); } + /** + * @satisfies checkRequirementUsageRequirementVerificationSpecialization + */ @Override public void addRequirementConstraintSubsetting() { if (UsageUtil.isVerifiedRequirement(getTarget())) { - //checkRequirementUsageRequirementVerificationSpecialization addDefaultGeneralType("verification"); } else { super.addRequirementConstraintSubsetting(); @@ -73,10 +77,12 @@ public void addRequirementConstraintSubsetting() { // Computed Redefinition + /** + * @satisfies checkRequirementUsageObjectiveRedefinition + */ @Override protected List getRelevantFeatures(Type type, Element skip) { return UsageUtil.isObjective(getTarget())? - //checkRequirementUsageObjectiveRedefinition Collections.singletonList(UsageUtil.getObjectiveRequirementOf(type)): super.getRelevantFeatures(type, skip); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java index 2a3a91e51..c1584c6dc 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java @@ -47,6 +47,9 @@ public void computeImplicitGeneralTypes() { super.computeImplicitGeneralTypes(); } + /** + * @satisfies checkSatisfyRequirementUsageSpecialization + */ @Override protected String getDefaultSupertype() { return getTarget().isNegated()? @@ -54,6 +57,7 @@ protected String getDefaultSupertype() { getDefaultSupertype("base"); } + //TODO: check why this is needed protected void addSatisfiedViewpointSubsetting() { SatisfyRequirementUsage target = getTarget(); Type owningType = target.getOwningType(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java index 96f9d22eb..fa3e74131 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/StateUsageAdapter.java @@ -33,12 +33,14 @@ public StateUsageAdapter(StateUsage element) { public StateUsage getTarget() { return (StateUsage)super.getTarget(); } - + + /** + * @satisfies checkStateUsageExclusiveStateSpecialization + * @satisfies checkStateUsageSubstateSpecialization + */ @Override protected String getSubactionType() { - //checkStateUsageExclusiveStateSpecialization return isExclusiveState()? "exclusiveState": - //checkStateUsageSubstateSpecialization isSubstate()? "substate": super.getSubactionType(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java index 8d2755ea9..9dc9aa6a3 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/StepAdapter.java @@ -35,21 +35,23 @@ public Step getTarget() { return (Step)super.getTarget(); } + /** + * @satisfies checkStepOwnedPerformanceSpecialization + * @satisfies checkStepSubperformanceSpecialization + * @satisfies checkStepEnclosedPerformanceSpecialization + * @satisfies checkStepSpecialization + */ @Override protected String getDefaultSupertype() { return getDefaultSupertype( isStructureOwnedComposite()? - //checkStepOwnedPerformanceSpecialization "ownedPerformance": isBehaviorOwnedComposite()? - //checkStepSubperformanceSpecialization "subperformance": isBehaviorOwned()? - //checkStepEnclosedPerformanceSpecialization "enclosedPerformance": isIncomingTransfer()? "incomingTransfer": - //checkStepSpecialization "base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java index f24dfee39..05a6b161d 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java @@ -50,18 +50,18 @@ public TransitionUsage getTarget() { // Implicit Generalization + /** + * @satisfies checkTransitionUsageStateSpecialization + * @satisfies checkTransitionUsageActionSpecialization + * @satisfies checkTransitionUsageSpecialization + */ @Override protected String getDefaultSupertype() { - //checkTransitionUsageStateSpecialization return isStateTransition()? getDefaultSupertype("stateTransition"): - //checkTransitionUsageActionSpecialization isActionTransition()? getDefaultSupertype("actionTransition"): - //checkTransitionUsageSpecialization getDefaultSupertype("base"); } - - // checkTransitionUsageActionSpecialization protected boolean isActionTransition() { TransitionUsage target = getTarget(); Type owningType = target.getOwningType(); @@ -70,7 +70,6 @@ protected boolean isActionTransition() { !(target.getSource() instanceof StateUsage); } - // checkTransitionUsageStateSpecialization protected boolean isStateTransition() { TransitionUsage target = getTarget(); Type owningType = target.getOwningType(); @@ -92,11 +91,14 @@ protected void computeSource() { } } + /** + * @satisfies checkTransitionUsageSuccessionBindingConnector + * @satisfies checkTransitionUsageSourceBindingConnector + */ protected Feature computeTransitionLinkConnectors() { TransitionUsage transition = getTarget(); Feature transitionLinkFeature = UsageUtil.getTransitionLinkFeatureOf(transition); if (transitionLinkFeature == null) { - // checkTransitionUsageSuccessionBindingConnector Succession succession = transition.getSuccession(); if (succession != null) { transitionLinkFeature = SysMLFactory.eINSTANCE.createReferenceUsage(); @@ -104,7 +106,6 @@ protected Feature computeTransitionLinkConnectors() { addBindingConnector(succession, transitionLinkFeature); } - // checkTransitionUsageSourceBindingConnector List parameters = TypeUtil.getOwnedParametersOf(transition); if (!parameters.isEmpty()) { Feature source = transition.getSource(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java index de2cc9190..4472efb8a 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java @@ -489,7 +489,7 @@ public void createResultConnector(Feature result) { addResultBinding(resultExpression, result); } } - + @Override public void doTransform() { super.doTransform(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java index 013f6cf38..55ec563e0 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java @@ -123,6 +123,10 @@ protected void addSubsetting(String subsettedFeatureName) { } } + /** + * @satisfies checkUsageVariationDefinitionSpecialization + * @satisfies checkUsageVariationUsageSpecialization + */ protected void addVariationTyping() { Usage usage = getTarget(); if (UsageUtil.isVariant(usage)) { @@ -183,13 +187,15 @@ protected Feature getRelevantSubjectParameterFor(Usage usage) { UsageUtil.getSubjectParameterOf(((Usage)owningType).getOwningType()); } + /** + * @satisfies checkSatisfyRequirementUsageBindingConnector + */ @Override protected void computeValueConnector() { Usage usage = getTarget(); FeatureValue valuation = FeatureUtil.getValuationFor(usage); if (valuation == null && UsageUtil.isSubjectParameter(usage)){ Feature subjectParameter = getRelevantSubjectParameterFor(usage); - //checkSatisfyRequirementUsageBindingConnector if (subjectParameter != null) { addBindingConnector(subjectParameter, usage); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java index a4dc6397f..a9aedf728 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/VerificationCaseUsageAdapter.java @@ -36,10 +36,12 @@ public VerificationCaseUsage getTarget() { return (VerificationCaseUsage)super.getTarget(); } + /** + * @satisfies checkVerificationCaseUsageSubVerification + * @satisfies checkVerificationCaseUsageSubVerification + */ @Override protected String getSubactionType() { - //checkVerificationCaseUsageSpecialization - //checkVerificationCaseUsageSubVerification return isSubVerificationCase()? "subVerificationCase": super.getSubactionType(); } From e7d5d35f8755f76f26b7c59129982021f1b9a3ed Mon Sep 17 00:00:00 2001 From: lgati Date: Wed, 25 Jun 2025 16:48:50 +0200 Subject: [PATCH 09/12] ST6RI-843 Annotated more semantic constraints in adapters --- .../omg/sysml/adapter/ActionUsageAdapter.java | 48 ++++++++++++------- .../sysml/adapter/ConcernUsageAdapter.java | 6 +++ .../sysml/adapter/ConnectionUsageAdapter.java | 16 ++++--- .../sysml/adapter/ConstraintUsageAdapter.java | 7 ++- .../adapter/EventOccurrenceUsageAdapter.java | 8 +++- .../omg/sysml/adapter/ExpressionAdapter.java | 12 +++-- .../FeatureChainExpressionAdapter.java | 6 ++- .../org/omg/sysml/adapter/FlowEndAdapter.java | 3 ++ .../omg/sysml/adapter/FlowUsageAdapter.java | 16 ++++++- .../adapter/ForLoopActionUsageAdapter.java | 4 +- .../sysml/adapter/IfActionUsageAdapter.java | 6 ++- .../adapter/InvocationExpressionAdapter.java | 8 +++- .../omg/sysml/adapter/ItemUsageAdapter.java | 3 +- .../sysml/adapter/MetadataFeatureAdapter.java | 5 +- .../sysml/adapter/MetadataUsageAdapter.java | 5 +- .../sysml/adapter/MultiplicityAdapter.java | 3 ++ .../sysml/adapter/OccurrenceUsageAdapter.java | 3 ++ .../adapter/OperatorExpressionAdapter.java | 4 +- .../omg/sysml/adapter/PartUsageAdapter.java | 5 +- .../sysml/adapter/ReferenceUsageAdapter.java | 5 +- .../SatisfyRequirementUsageAdapter.java | 1 - .../sysml/adapter/TransitionUsageAdapter.java | 3 ++ .../TriggerInvocationExpressionAdapter.java | 3 -- .../org/omg/sysml/adapter/UsageAdapter.java | 2 - .../omg/sysml/adapter/ViewUsageAdapter.java | 8 ++-- .../sysml/adapter/ViewpointUsageAdapter.java | 8 ++-- 26 files changed, 138 insertions(+), 60 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java index 9f9464426..18f9354aa 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java @@ -48,13 +48,18 @@ public ActionUsage getTarget() { // Implicit Generalization + /** + * @satisfies checkAcceptActionUsageTriggerActionSpecialization + * @satisfies checkStepEnclosedPerformanceSpecialization + * @satisfies checkStepOwnedPerformanceSpecialization + * @satisfies checkStepSubperformanceSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); String subactionType = getSubactionType(); if (subactionType != null) { - //checkAcceptActionUsageTriggerActionSpecialization addDefaultGeneralType(subactionType); } @@ -68,11 +73,13 @@ public void addDefaultGeneralType() { } } + /** + * @satisfies checkAcceptActionUsageSpecialization + * @satisfies checkSendActionUsageSpecialization + * @satisfies checkWhileLoopActionUsageSpecialization + */ @Override protected String getDefaultSupertype() { - //checkAcceptActionUsageSpecialization - //checkSendActionUsageSpecialization - //checkWhileLoopActionUsageSpecialization return getDefaultSupertype("base"); } @@ -81,21 +88,24 @@ protected boolean isSuboccurrence() { return super.isSuboccurrence() && !isActionOwnedComposite(); } + /** + * @satisfies checkActionUsageSubactionSpecialization + * @satisfies checkAcceptActionUsageSubactionSpecialization + * @satisfies checkDecisionNodeSpecialization + * @satisfies checkForkNodeSpecialization + * @satisfies checkForLoopActionUsageSubactionSpecialization + * @satisfies checkIfActionUsageSubactionSpecialization + * @satisfies checkJoinNodeSpecialization + * @satisfies checkMergeNodeSpecialization + * @satisfies checkAssignmentActionUsageSubactionSpecialization + * @satisfies checkSendActionUsageSubactionSpecialization + * @satisfies checkWhileLoopActionUsageSubactionSpecialization + * @satisfies checkActionUsageOwnedActionSpecialization + * @satisfies checkStateUsageOwnedStateSpecialization + * + */ protected String getSubactionType() { - //checkAcceptActionUsageSubactionSpecialization - //checkActionUsageSubactionSpecialization - //checkDecisionNodeSpecialization - //checkForkNodeSpecialization - //checkForLoopActionUsageSubactionSpecialization - //checkIfActionUsageSubactionSpecialization - //checkJoinNodeSpecialization - //checkMergeNodeSpecialization - //checkAssignmentActionUsageSubactionSpecialization - //checkSendActionUsageSubactionSpecialization - //checkWhileLoopActionUsageSubactionSpecialization return isActionOwnedComposite()? "subaction": - //checkActionUsageOwnedActionSpecialization - //checkStateUsageOwnedStateSpecialization isPartOwnedComposite()? "ownedAction": null; } @@ -128,8 +138,10 @@ protected List getRelevantFeatures(Type type, Element skip) { Collections.singletonList((Feature)getLibraryType(redefinedFeature)); } + /** + * @satisfies checkTransitionUsageTransitionFeatureSpecialization + */ protected static String getRedefinedFeature(Feature target) { - //checkTransitionUsageTransitionFeatureSpecialization FeatureMembership membership = target.getOwningFeatureMembership(); String kind = membership instanceof StateSubactionMembership? diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java index 53703ab03..87a6ffe38 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java @@ -35,6 +35,9 @@ public ConcernUsage getTarget() { return (ConcernUsage)super.getTarget(); } + /** + * @satisfies checkRequirementUsageSubrequirementSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); @@ -43,6 +46,9 @@ public void addDefaultGeneralType() { } } + /** + * @satisfies checkConcernUsageSpecialization + */ @Override protected String getDefaultSupertype() { return getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java index bc0db602a..eb3660f9b 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java @@ -35,18 +35,20 @@ public ConnectionUsageAdapter(ConnectionUsage element) { public ConnectionUsage getTarget() { return (ConnectionUsage)super.getTarget(); } - + + /** + * @satisfies checkConnectionUsageSpecialization + * @satisfies checkAllocationUsageSpecialization + * @satisfies checkInterfaceDefinitionSpecialization + * @satisfies checkConnectionUsageBinarySpecialization + * @satisfies checkAllocationUsageSpecialization + * @satisfies checkInterfaceDefinitionBinarySpecialization + */ @Override protected String getDefaultSupertype() { int numEnds = TypeUtil.getOwnedEndFeaturesOf(getTarget()).size(); return numEnds != 2? - //checkConnectionUsageSpecialization - //checkAllocationUsageSpecialization - //checkInterfaceDefinitionSpecialization getDefaultSupertype("base"): - //checkConnectionUsageBinarySpecialization - //checkAllocationUsageSpecialization - //checkInterfaceDefinitionBinarySpecialization getDefaultSupertype("binary"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java index c085955d8..903a52cd1 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java @@ -26,7 +26,6 @@ import org.omg.sysml.lang.sysml.ItemDefinition; import org.omg.sysml.lang.sysml.ItemUsage; import org.omg.sysml.lang.sysml.RequirementConstraintKind; -import org.omg.sysml.lang.sysml.SysMLPackage; import org.omg.sysml.lang.sysml.Type; import org.omg.sysml.util.UsageUtil; @@ -48,6 +47,9 @@ public ConstraintUsage getTarget() { /** * @satisfies checkConstraintUsageRequirementConstraintSpecialization * @satisfies checkConstraintUsageCheckedConstraintSpecialization + * @satisfies checkStepEnclosedPerformanceSpecialization + * @satisfies checkStepOwnedPerformanceSpecialization + * @satisfies checkStepSubperformanceSpecialization */ @Override public void computeImplicitGeneralTypes() { @@ -74,6 +76,9 @@ public void addRequirementConstraintSubsetting() { } } + /** + * @satisfies checkConstraintUsageSpecialization + */ @Override protected String getDefaultSupertype() { return getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java index 1749041a6..933e7bdc0 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java @@ -36,7 +36,10 @@ public EventOccurrenceUsageAdapter(EventOccurrenceUsage element) { public EventOccurrenceUsage getTarget() { return (EventOccurrenceUsage)super.getTarget(); } - + + /** + * @satisfies checkOccurrenceUsageSuboccurrenceSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); @@ -46,6 +49,9 @@ public void addDefaultGeneralType() { } } + /** + * @satisfies checkOccurrenceUsageSuboccurrenceSpecialization + */ @Override protected String getDefaultSupertype() { return isSuboccurrence()? diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java index 6632d9456..81bb0749b 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ExpressionAdapter.java @@ -61,9 +61,11 @@ public void addDefaultGeneralType() { } } + /** + * @satisfies checkExpressionSpecialization + */ @Override protected String getDefaultSupertype() { - //checkExpressionSpecialization return getDefaultSupertype("base"); } @@ -90,17 +92,19 @@ protected List getGeneralTypes(Type type, Element skip) { } // Transformation - + + /** + * @satisfies checkExpressionTypeFeaturing + * @satisfies checkExpressionResultBindingConnector + */ @Override public void doTransform() { Expression expression = getTarget(); super.doTransform(); if (expression.getOwningNamespace() instanceof Multiplicity || expression.getOwningMembership() instanceof FeatureValue) { - //checkExpressionTypeFeaturing addImplicitFeaturingTypesIfNecessary(); } - ////checkExpressionResultBindingConnector createResultConnector(expression.getResult()); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java index d6f0bc182..4eff587c0 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureChainExpressionAdapter.java @@ -69,6 +69,10 @@ public void addAdditionalMembers() { } } + /** + * @satisfies checkFeatureChainExpressionTargetRedefinition + * @satisfies checkFeatureChainExpressionSourceTargetRedefinition + */ protected void addTargetRedefinition() { FeatureChainExpression target = getTarget(); Feature sourceParameter = TypeUtil.getOwnedParameterOf(target, 0, Feature.class); @@ -88,8 +92,6 @@ protected void addTargetRedefinition() { @Override public void doTransform() { super.doTransform(); - //checkFeatureChainExpressionSourceTargetRedefinition - //checkFeatureChainExpressionTargetRedefinition addTargetRedefinition(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FlowEndAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FlowEndAdapter.java index bfdefde6a..7a65a5bbb 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FlowEndAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FlowEndAdapter.java @@ -75,6 +75,9 @@ public void addItemFlowEndSubsetting() { } } + /** + * @satisfies checkFeatureFlowFeatureRedefinition + */ public void addItemFlowFeatureRedefinition() { FlowEnd target = getTarget(); Element owner = target.getOwner(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FlowUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FlowUsageAdapter.java index f951f5c7d..ffc730da0 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FlowUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FlowUsageAdapter.java @@ -38,6 +38,16 @@ public FlowUsage getTarget() { return (FlowUsage)super.getTarget(); } + /** + * @satisfies checkActionUsageOwnedActionSpecialization + * @satisfies checkActionUsageSubactionSpecialization + * @satisfies checkStepEnclosedPerformanceSpecialization + * @satisfies checkStepOwnedPerformanceSpecialization + * @satisfies checkStepSubperformanceSpecialization + * @satisfies checkOccurrenceUsageTimeSliceSpecialization + * @satisfies checkOccurrenceUsageSnapshotSpecialization + * @satisfies checkOccurrenceUsageSuboccurrenceSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); @@ -77,7 +87,11 @@ protected boolean isSuboccurrence() { target.isComposite() && target.getOwningType() instanceof OccurrenceUsage; } - + + /** + * @satisfies checkFlowUsageFlowSpecialization + * @satisfies checkFlowUsageSpecialization + */ @Override protected String getDefaultSupertype() { return UsageUtil.isMessageConnection(getTarget())? diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java index a58fcd8a4..d9f5548d6 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ForLoopActionUsageAdapter.java @@ -38,6 +38,9 @@ public ForLoopActionUsage getTarget() { return (ForLoopActionUsage)super.getTarget(); } + /** + * @satisfies checkForLoopActionUsageVarRedefinition + */ public void transformLoopVariable() { ForLoopActionUsage target = getTarget(); ReferenceUsage loopVariable = target.getLoopVariable(); @@ -59,7 +62,6 @@ public void transformLoopVariable() { @Override public void doTransform() { super.doTransform(); - //checkForLoopActionUsageVarRedefinition transformLoopVariable(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java index 167488f0d..4d711a8d9 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/IfActionUsageAdapter.java @@ -33,12 +33,14 @@ public IfActionUsageAdapter(IfActionUsage element) { public IfActionUsage getTarget() { return (IfActionUsage)super.getTarget(); } - + + /** + * @satisfies checkIfActionUsageSpecialization + */ @Override public void addDefaultGeneralType() { super.addDefaultGeneralType(); if (isIfThenElse()) { - //checkIfActionUsageSpecialization addDefaultGeneralType("ifThenElse"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java index 881560b66..235e84c0c 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/InvocationExpressionAdapter.java @@ -58,8 +58,10 @@ public void addDefaultGeneralType() { // Transformation + /** + * @satisfies checkInvocationExpressionBehaviorBindingConnector + */ protected void createSelfResultConnector() { - // checkInvocationExpressionBehaviorBindingConnector InvocationExpression target = getTarget(); Type instantiatedType = target.getInstantiatedType(); if (instantiatedType != null && !isFunctionType(instantiatedType)) { @@ -70,8 +72,10 @@ protected void createSelfResultConnector() { } } + /** + * @satisfies checkInvocationExpressionBehaviorResultSpecialization + */ protected void addResultTyping() { - // checkInvocationExpressionBehaviorResultSpecialization InvocationExpression target = getTarget(); Type instantiatedType = target.getInstantiatedType(); if (instantiatedType != null && !isFunctionType(instantiatedType)) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java index 3683bd349..58f4e5b51 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ItemUsageAdapter.java @@ -39,8 +39,9 @@ public ItemUsage getTarget() { /** * @satisfies checkItemUsageSubitemSpecialization - * @satisfies checkPartUsageSubpartSpecialization * @satisfies checkItemUsageSpecialization + * @satisfies checkPartUsageSubpartSpecialization + * @satisfies checkPartUsageSpecialization */ @Override protected String getDefaultSupertype() { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java index eb829f847..cf84b1f54 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/MetadataFeatureAdapter.java @@ -36,7 +36,10 @@ public MetadataFeatureAdapter(MetadataFeature element) { public MetadataFeature getTarget() { return (MetadataFeature)super.getTarget(); } - + + /** + * @satisfies checkMetadataFeatureSpecialization + */ @Override protected String getDefaultSupertype() { return getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/MetadataUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/MetadataUsageAdapter.java index 8851da4f6..b1ba43472 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/MetadataUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/MetadataUsageAdapter.java @@ -32,7 +32,10 @@ public MetadataUsageAdapter(MetadataUsage element) { public MetadataUsage getTarget() { return (MetadataUsage)super.getTarget(); } - + + /** + * @satisfies checkMetadataUsageSpecialization + */ @Override protected String getDefaultSupertype() { return getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java index 1274e27b2..477ac0cc7 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/MultiplicityAdapter.java @@ -62,6 +62,9 @@ protected List getRelevantFeatures(Type type, Element skip) { return Collections.emptyList(); } + /** + * @satisfies checkMultiplicityTypeFeaturing + */ @Override protected void addImplicitFeaturingTypesIfNecessary() { Feature feature = getTarget(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java index 9e49435fa..01912ba44 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/OccurrenceUsageAdapter.java @@ -76,6 +76,9 @@ protected boolean isSuboccurrence() { target.getOwningType() instanceof OccurrenceUsage; } + /** + * @satisfies checkOccurrenceUsageSpecialization + */ @Override protected String getDefaultSupertype() { return getDefaultSupertype("base"); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java index e6ecd4241..bd764fdaf 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/OperatorExpressionAdapter.java @@ -36,12 +36,14 @@ public OperatorExpression getTarget() { return (OperatorExpression)super.getTarget(); } + /** + * @satisfies checkOperatorExpressionSpecialization + */ @Override public void computeImplicitGeneralTypes() { OperatorExpression target = getTarget(); String operator = target.getOperator(); if (operator != null) { - //checkOperatorExpressionSpecialization addDefaultGeneralType(SysMLPackage.eINSTANCE.getFeatureTyping(), ExpressionUtil.getOperatorQualifiedNames(operator)); } super.computeImplicitGeneralTypes(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java index ac4572d61..90962db68 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java @@ -41,12 +41,11 @@ public PartUsage getTarget() { /** * @satisfies checkPartUsageActorSpecialization + * @satisfies checkPartUsageStakeholderSpecialization + * @satisfies checkPartUsageSubpartSpecialization */ @Override protected String getDefaultSupertype() { - //checkPartUsageStakeholderSpecialization - //checkPartUsageSubpartSpecialization - //checkPartUsageSpecialization return isRequirementActor()? getDefaultSupertype("requirementActor"): isRequirementStakeholder()? getDefaultSupertype("requirementStakeholder"): isCaseActor()? getDefaultSupertype("caseActor"): diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java index 5dd0a3379..ca91798ed 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java @@ -48,12 +48,14 @@ public ReferenceUsage getTarget() { // Implicit Generalization + /** + * @satisfies checkTransitionUsagePayloadSpecialization + */ @Override public void addDefaultGeneralType() { ReferenceUsage target = getTarget(); Type type = target.getOwningType(); if (type instanceof TransitionUsage) { - //checkTransitionUsagePayloadSpecialization if (target == UsageUtil.getPayloadParameterOf((TransitionUsage)type)) { Feature accepterParameter = UsageUtil.getAccepterPayloadParameterOf((TransitionUsage)type); if (accepterParameter != null) { @@ -88,7 +90,6 @@ protected void addRedefinitions(Element skip) { ReferenceUsage target = getTarget(); Type type = target.getOwningType(); if ((type instanceof TransitionUsage) && target == UsageUtil.getTransitionLinkFeatureOf((TransitionUsage)type)) { - //checkTransitionUsageSuccessionBindingConnector addImplicitGeneralType(SysMLPackage.eINSTANCE.getRedefinition(), (Feature)SysMLLibraryUtil.getLibraryType(getTarget(), TRANSITION_LINK_FEATURE)); } else { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java index c1584c6dc..8186bf558 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/SatisfyRequirementUsageAdapter.java @@ -57,7 +57,6 @@ protected String getDefaultSupertype() { getDefaultSupertype("base"); } - //TODO: check why this is needed protected void addSatisfiedViewpointSubsetting() { SatisfyRequirementUsage target = getTarget(); Type owningType = target.getOwningType(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java index 05a6b161d..71f6e8194 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java @@ -80,6 +80,9 @@ protected boolean isStateTransition() { // Transformation + /** + * @satisfies checkTransitionUsageSuccessionSourceSpecialization + */ protected void computeSource() { TransitionUsage target = getTarget(); List ownedMemberships = target.getOwnedMembership(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java index 91df33671..fb8a68c66 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TriggerInvocationExpressionAdapter.java @@ -57,8 +57,6 @@ public void computeImplicitGeneralTypes() { /** * @satisfies checkAcceptActionUsageReceiverBindingConnector - * @satisfies checkSomething - * @satisfies */ public void addReceiverBinding() { //checkAcceptActionUsageReceiverBindingConnector @@ -75,7 +73,6 @@ public void addReceiverBinding() { @Override public void doTransform() { super.doTransform(); - //checkTransitionUsageSourceBindingConnector addReceiverBinding(); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java index 55ec563e0..cb5b9ced9 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/UsageAdapter.java @@ -144,8 +144,6 @@ protected void addVariationTyping() { @Override public void addDefaultGeneralType() { - //checkUsageVariationDefinitionSpecialization - //checkUsageVariationUsageSpecialization addVariationTyping(); super.addDefaultGeneralType(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java index 67610dcfc..5817f7feb 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java @@ -35,13 +35,15 @@ public ViewUsageAdapter(ViewUsage element) { public ViewUsage getTarget() { return (ViewUsage)super.getTarget(); } - + + /** + * @satisfies checkViewUsageSubviewSpecialization + * @satisfies checkViewpointUsageSpecialization + */ @Override protected String getDefaultSupertype() { return isSubview()? - //checkViewUsageSubviewSpecialization getDefaultSupertype("subview"): - //checkViewpointUsageSpecialization getDefaultSupertype("base"); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java index 815f47ca4..8290089bd 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ViewpointUsageAdapter.java @@ -36,13 +36,15 @@ public ViewpointUsageAdapter(ViewpointUsage element) { public ViewpointUsage getTarget() { return (ViewpointUsage)super.getTarget(); } - + + /** + * @satisfies checkViewpointUsageViewpointSatisfactionSpecialization + * @satisfies checkViewpointUsageSpecialization + */ @Override protected String getDefaultSupertype() { return isSatisfiedViewpoint()? - //checkViewpointUsageViewpointSatisfactionSpecialization getDefaultSupertype("satisfied"): - //checkViewpointUsageSpecialization getDefaultSupertype("base"); } From 03cf011830b6a9986327b1e720ae654ff4a317e5 Mon Sep 17 00:00:00 2001 From: lgati Date: Wed, 25 Jun 2025 16:49:23 +0200 Subject: [PATCH 10/12] ST6RI-843 Annotated ImplicitGeneralizationMap with semantic constraints --- .../sysml/util/ImplicitGeneralizationMap.java | 228 +++++++++++++++++- 1 file changed, 216 insertions(+), 12 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index 5d867b418..da67e9899 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -44,32 +44,49 @@ protected ImplicitGeneralizationMap() { // KerML + //checkAssociationSpecialization put(AssociationImpl.class, "base", "Links::Link"); + //checkAssociationBinarySpecialization put(AssociationImpl.class, "binary", "Links::BinaryLink"); + //checkAssociationStructureSpecialization put(AssociationStructureImpl.class, "base", "Objects::LinkObject"); + //checkAssociationStructureBinarySpecialization put(AssociationStructureImpl.class, "binary", "Objects::BinaryLinkObject"); + //checkBehaviorSpecialization put(BehaviorImpl.class, "base", "Performances::Performance"); + //checkBindingConnectorSpecialization put(BindingConnectorImpl.class, "binary", "Links::selfLinks"); + //checkBooleanExpressionSpecialization put(BooleanExpressionImpl.class, "base", "Performances::booleanEvaluations"); + //checkClassSpecialization put(ClassImpl.class, "base", "Occurrences::Occurrence"); + // put(ClassifierImpl.class, "base", "Base::Anything"); + //checkConnectorSpecialization put(ConnectorImpl.class, "base", "Links::links"); + //checkConnectorBinarySpecialization put(ConnectorImpl.class, "binary", "Links::binaryLinks"); + //checkConnectorObjectSpecialization put(ConnectorImpl.class, "object", "Objects::linkObjects"); + //checkConnectorBinaryObjectSpecialization put(ConnectorImpl.class, "binaryObject", "Objects::binaryLinkObjects"); + //checkConstructorExpressionSpecialization put(ConstructorExpressionImpl.class, "base", "Performances::constructorEvaluations"); - + + //checkDataTypeSpecialization put(DataTypeImpl.class, "base", "Base::DataValue"); + //checkDataTypeSpecialization put(ExpressionImpl.class, "base", "Performances::evaluations"); + // put(ExpressionImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); //checkFeatureSpecialization @@ -80,282 +97,469 @@ protected ImplicitGeneralizationMap() { put(FeatureImpl.class, "occurrence", "Occurrences::occurrences"); //checkFeatureSuboccurrenceSpecialization put(FeatureImpl.class, "suboccurrence", "Occurrences::Occurrence::suboccurrences"); + //checkFeaturePortionSpecialization put(FeatureImpl.class, "portion", "Occurrences::Occurrence::portions"); //checkFeatureObjectSpecialization put(FeatureImpl.class, "object", "Objects::objects"); //checkFeatureSubobjectSpecialization put(FeatureImpl.class, "subobject", "Objects::Object::subobjects"); + //checkFeatureEndSpecialization put(FeatureImpl.class, "participant", "Links::Link::participant"); + //checkAssignmentActionUsageStartingAtRedefinition put(FeatureImpl.class, "startingAt", "FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt"); + //checkAssignmentActionUsageAccessedFeatureRedefinition put(FeatureImpl.class, "accessedFeature", "FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt::accessedFeature"); + //checkAssignmentActionUsageAccessedFeatureRedefinition put(FeatureChainExpressionImpl.class, "target", "ControlFunctions::'.'::source::target"); + //checkAssignmentActionUsageAccessedFeatureRedefinition put(FunctionImpl.class, "base", "Performances::Evaluation"); + //checkInvariantSpecialization put(InvariantImpl.class, "base", "Performances::trueEvaluations"); + //checkInvariantSpecialization put(InvariantImpl.class, "negated", "Performances::falseEvaluations"); + //checkPayloadFeatureRedefinition put(PayloadFeatureImpl.class, "payload", "Transfers::Transfer::payload"); + //checkFlowWithEndsSpecialization put(FlowImpl.class, "base", "Transfers::flowTransfers"); + //checkStepEnclosedPerformanceSpecialization put(FlowImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(FlowImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(FlowImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + //checkFeatureFlowFeatureRedefinition put(FlowEndImpl.class, "sourceOutput", "Transfers::Transfer::source::sourceOutput"); + //checkFeatureFlowFeatureRedefinition put(FlowEndImpl.class, "targetInput", "Transfers::Transfer::target::targetInput"); + //checkLiteralBooleanSpecialization put(LiteralBooleanImpl.class, "base", "Performances::literalBooleanEvaluations"); + //checkLiteralExpressionSpecialization put(LiteralExpressionImpl.class, "base", "Performances::literalEvaluations"); + //checkLiteralInfinitySpecialization put(LiteralInfinityImpl.class, "base", "Performances::literalIntegerEvaluations"); + //checkLiteralIntegerSpecialization put(LiteralIntegerImpl.class, "base", "Performances::literalIntegerEvaluations"); + //checkLiteralRationalSpecialization put(LiteralRationalImpl.class, "base", "Performances::literalRationalEvaluations"); + //checkLiteralStringSpecialization put(LiteralStringImpl.class, "base", "Performances::literalStringEvaluations"); + //checkMetaclassSpecialization put(MetaclassImpl.class, "base", "Metaobjects::Metaobject"); + //checkMetadataFeatureSpecialization put(MetadataFeatureImpl.class, "base", "Metaobjects::metaobjects"); put(MetadataFeatureImpl.class, "annotatedElement", "Metaobjects::Metaobject::annotatedElement"); + //checkMetadataFeatureSemanticSpecialization put(MetadataFeatureImpl.class, "baseType", "Metaobjects::SemanticMetadata::baseType"); + //checkMetadataAccessExpressionSpecialization put(MetadataAccessExpressionImpl.class, "base", "Performances::metadataAccessEvaluations"); - + + //checkMultiplicitySpecialization put(MultiplicityImpl.class, "base", "Base::naturals"); put(MultiplicityImpl.class, "feature", "Base::exactlyOne"); + //checkOccurrenceDefinitionMultiplicitySpecialization put(MultiplicityImpl.class, "classifier", "Base::zeroOrOne"); - + + put(MultiplicityRangeImpl.class, "feature", "Base::naturals"); put(MultiplicityRangeImpl.class, "classifier", "Base::naturals"); + //checkNullExpressionSpecialization put(NullExpressionImpl.class, "base", "Performances::nullEvaluations"); + //checkPredicateSpecialization put(PredicateImpl.class, "base", "Performances::BooleanEvaluation"); + //checkStepSpecialization put(StepImpl.class, "base", "Performances::performances"); + //checkStepEnclosedPerformanceSpecialization put(StepImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(StepImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(StepImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); put(StepImpl.class, "incomingTransfer", "Occurrences::Occurrence::incomingTransfers"); put(StepImpl.class, "featureWrite", "FeatureReferencingPerformances::FeatureWritePerformance"); + //checkStructureSpecialization put(StructureImpl.class, "base", "Objects::Object"); + //checkSuccessionSpecialization put(SuccessionImpl.class, "binary", "Occurrences::happensBeforeLinks"); + //checkSuccessionSpecialization put(SuccessionFlowImpl.class, "base", "Transfers::flowTransfersBefore"); + //checkStepEnclosedPerformanceSpecialization put(SuccessionFlowImpl.class, "enclosedperformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(SuccessionFlowImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(SuccessionFlowImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); - + + //checkTypeSpecialization put(TypeImpl.class, "base", "Base::Anything"); // SysML + //checkAcceptActionUsageSpecialization put(AcceptActionUsageImpl.class, "base", "Actions::acceptActions"); + //checkAcceptActionUsageSubactionSpecialization put(AcceptActionUsageImpl.class, "subaction", "Actions::Action::acceptSubactions"); - put(ActionDefinitionImpl.class, "base", "Actions::Action"); + //checkActionDefinitionSpecialization + put(ActionDefinitionImpl.class, "base", "Actions::Action"); + //checkActionUsageSpecialization put(ActionUsageImpl.class, "base", "Actions::actions"); + //checkActionUsageSubactionSpecialization put(ActionUsageImpl.class, "subaction", "Actions::Action::subactions"); + //checkActionUsageOwnedActionSpecialization put(ActionUsageImpl.class, "ownedAction", "Parts::Part::ownedActions"); + //checkStepSubperformanceSpecialization put(ActionUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepEnclosedPerformanceSpecialization put(ActionUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepOwnedPerformanceSpecialization put(ActionUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "entry", "States::StateAction::entryAction"); + //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "do", "States::StateAction::doAction"); + //checkActionUsageStateActionRedefinition put(ActionUsageImpl.class, "exit", "States::StateAction::exitAction"); + //checkTransitionUsageTransitionFeatureSpecialization put(ActionUsageImpl.class, "trigger", "Actions::TransitionAction::accepter"); + //checkTransitionUsageTransitionFeatureSpecialization put(ActionUsageImpl.class, "guard", "Actions::TransitionAction::guard"); + //checkTransitionUsageTransitionFeatureSpecialization put(ActionUsageImpl.class, "effect", "Actions::TransitionAction::effect"); + //checkAllocationDefinitionSpecialization put(AllocationDefinitionImpl.class, "base", "Allocations::Allocation"); + //checkAllocationDefinitionSpecialization put(AllocationDefinitionImpl.class, "binary", "Allocations::Allocation"); + //checkAllocationUsageSpecialization put(AllocationUsageImpl.class, "base", "Allocations::allocations"); + //checkAllocationUsageSpecialization put(AllocationUsageImpl.class, "binary", "Allocations::allocations"); + //checkAnalysisCaseDefinitionSpecialization put(AnalysisCaseDefinitionImpl.class, "base", "AnalysisCases::AnalysisCase"); + //checkAnalysisCaseUsageSpecialization put(AnalysisCaseUsageImpl.class, "base", "AnalysisCases::analysisCases"); + //checkAnalysisCaseUsageSubAnalysisCaseSpecialization put(AnalysisCaseUsageImpl.class, "subAnalysisCase", "AnalysisCases::AnalysisCase::subAnalysisCases"); + //checkAssertConstraintUsageSpecialization put(AssertConstraintUsageImpl.class, "base", "Constraints::assertedConstraintChecks"); + //checkAssertConstraintUsageSpecialization put(AssertConstraintUsageImpl.class, "negated", "Constraints::negatedConstraintChecks"); + //checkAssignmentActionUsageSpecialization put(AssignmentActionUsageImpl.class, "base", "Actions::assignmentActions"); + //checkAssignmentActionUsageSubactionSpecialization put(AssignmentActionUsageImpl.class, "subaction", "Actions::Action::assignments"); put(AssignmentActionUsageImpl.class, "featureWrite", "Actions::AssignmentAction"); + // put(AttributeDefinitionImpl.class, "base", "Base::DataValue"); + //checkAttributeUsageSpecialization put(AttributeUsageImpl.class, "base", "Base::dataValues"); + //checkBindingConnectorSpecialization put(BindingConnectorAsUsageImpl.class, "base", "Links::selfLinks"); + //checkBindingConnectorSpecialization put(BindingConnectorAsUsageImpl.class, "binary", "Links::selfLinks"); + //checkCalculationDefinitionSpecialization put(CalculationDefinitionImpl.class, "base", "Calculations::Calculation"); + //checkCalculationUsageSpecialization put(CalculationUsageImpl.class, "base", "Calculations::calculations"); + //checkCalculationUsageSubcalculationSpecialization put(CalculationUsageImpl.class, "subcalculation", "Calculations::Calculation::subcalculations"); + //checkCaseDefinitionSpecialization put(CaseDefinitionImpl.class, "base", "Cases::Case"); + //checkCaseUsageSpecialization put(CaseUsageImpl.class, "base", "Cases::cases"); + //checkCaseUsageSubcaseSpecialization put(CaseUsageImpl.class, "subcase", "Cases::Case::subcases"); + //checkCaseUsageSubcaseSpecialization put(ConcernDefinitionImpl.class, "base", "Requirements::ConcernCheck"); + //checkConcernUsageSpecialization put(ConcernUsageImpl.class, "base", "Requirements::concernChecks"); + //checkConcernUsageFramedConcernSpecialization put(ConcernUsageImpl.class, "concern", "Requirements::RequirementCheck::concerns"); + //checkConnectionDefinitionBinarySpecialization put(ConnectionDefinitionImpl.class, "base", "Connections::Connection"); + //checkConnectionDefinitionBinarySpecialization put(ConnectionDefinitionImpl.class, "binary", "Connections::BinaryConnection"); + //checkConnectionUsageSpecialization put(ConnectionUsageImpl.class, "base", "Connections::connections"); + //checkConnectionUsageBinarySpecialization put(ConnectionUsageImpl.class, "binary", "Connections::binaryConnections"); + //checkConstraintDefinitionSpecialization put(ConstraintDefinitionImpl.class, "base", "Constraints::ConstraintCheck"); + //checkConstraintUsageSpecialization put(ConstraintUsageImpl.class, "base", "Constraints::constraintChecks"); + //checkConstraintUsageCheckedConstraintSpecialization put(ConstraintUsageImpl.class, "checkedConstraint", "Items::Item::checkedConstraints"); + //checkStepEnclosedPerformanceSpecialization put(ConstraintUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(ConstraintUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(ConstraintUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + //checkConstraintUsageRequirementConstraintSpecialization put(ConstraintUsageImpl.class, "assumption", "Requirements::RequirementCheck::assumptions"); + //checkConstraintUsageRequirementConstraintSpecialization put(ConstraintUsageImpl.class, "requirement", "Requirements::RequirementCheck::constraints"); + //checkDecisionNodeSpecialization put(DecisionNodeImpl.class, "subaction", "Actions::Action::decisions"); + //checkEventOccurrenceUsageSpecialization put(EventOccurrenceUsageImpl.class, "suboccurrence", "Occurrences::Occurrence::timeEnclosedOccurrences"); - + + //checkExhibitStateUsageSpecialization put(ExhibitStateUsageImpl.class, "performedAction", "Parts::Part::exhibitedStates"); - put(FlowDefinitionImpl.class, "base", "Flows::MessageAction"); - put(FlowDefinitionImpl.class, "binary", "Flows::Message"); + //checkFlowDefinitionSpecialization + put(FlowDefinitionImpl.class, "base", "Flows::MessageAction"); + //checkFlowDefinitionBinarySpecialization + put(FlowDefinitionImpl.class, "binary", "Flows::Message"); + //checkFlowUsageFlowSpecialization put(FlowUsageImpl.class, "base", "Flows::flows"); + //checkFlowUsageSpecialization put(FlowUsageImpl.class, "message", "Flows::messages"); + //checkActionUsageSubactionSpecialization put(FlowUsageImpl.class, "subaction", "Actions::Action::subactions"); + //checkActionUsageOwnedActionSpecialization put(FlowUsageImpl.class, "ownedAction", "Parts::Part::ownedActions"); + //checkStepEnclosedPerformanceSpecialization put(FlowUsageImpl.class, "enclosedPerformance", "Performances::Performance::enclosedPerformances"); + //checkStepSubperformanceSpecialization put(FlowUsageImpl.class, "subperformance", "Performances::Performance::subperformances"); + //checkStepOwnedPerformanceSpecialization put(FlowUsageImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + //checkActionUsageStateActionRedefinition put(FlowUsageImpl.class, "entry", "States::StateAction::entryAction"); + //checkActionUsageStateActionRedefinition put(FlowUsageImpl.class, "do", "States::StateAction::doAction"); + //checkActionUsageStateActionRedefinition put(FlowUsageImpl.class, "exit", "States::StateAction::exitAction"); + //checkTransitionUsageTransitionFeatureSpecialization put(FlowUsageImpl.class, "trigger", "Actions::TransitionAction::accepter"); + //checkTransitionUsageTransitionFeatureSpecialization put(FlowUsageImpl.class, "guard", "Actions::TransitionAction::guard"); + //checkTransitionUsageTransitionFeatureSpecialization put(FlowUsageImpl.class, "effect", "Actions::TransitionAction::effect"); + //checkOccurrenceUsageTimeSliceSpecialization put(FlowUsageImpl.class, "timeslice", "Occurrences::Occurrence::timeSlices"); + //checkOccurrenceUsageSnapshotSpecialization put(FlowUsageImpl.class, "snapshot", "Occurrences::Occurrence::snapshots"); + //checkForLoopActionUsageSpecialization put(ForLoopActionUsageImpl.class, "base", "Actions::forLoopActions"); + //checkForLoopActionUsageSubactionSpecialization put(ForLoopActionUsageImpl.class, "subaction", "Actions::Action::forLoops"); + //checkForLoopActionUsageVarRedefinition put(ForLoopActionUsageImpl.class, "loopVariable", "Actions::ForLoopAction::var"); + //checkForkNodeSpecialization put(ForkNodeImpl.class, "subaction", "Actions::Action::forks"); + //checkIfActionUsageSpecialization put(IfActionUsageImpl.class, "base", "Actions::ifThenActions"); + //checkIfActionUsageSpecialization put(IfActionUsageImpl.class, "ifThenElse", "Actions::ifThenElseActions"); + //checkIfActionUsageSubactionSpecialization put(IfActionUsageImpl.class, "subaction", "Actions::Action::ifSubactions"); + //checkIncludeUseCaseSpecialization put(IncludeUseCaseUsageImpl.class, "subUseCase", "UseCases::UseCase::includedUseCases"); + //checkPerformActionUsageSpecialization put(IncludeUseCaseUsageImpl.class, "performedAction", "Parts::Part::performedActions"); + //checkInterfaceDefinitionSpecialization put(InterfaceDefinitionImpl.class, "base", "Interfaces::Interface"); + //checkInterfaceDefinitionBinarySpecialization put(InterfaceDefinitionImpl.class, "binary", "Interfaces::BinaryInterface"); + //checkInterfaceUsageSpecialization put(InterfaceUsageImpl.class, "base", "Interfaces::interfaces"); + //checkInterfaceUsageBinarySpecialization put(InterfaceUsageImpl.class, "binary", "Interfaces::binaryInterfaces"); + //checkItemDefinitionSpecialization put(ItemDefinitionImpl.class, "base", "Items::Item"); + //checkItemDefinitionSpecialization put(ItemUsageImpl.class, "base", "Items::items"); + //checkItemUsageSubitemSpecialization put(ItemUsageImpl.class, "subitem", "Items::Item::subitems"); + //checkJoinNodeSpecialization put(JoinNodeImpl.class, "subaction", "Actions::Action::joins"); + //checkMetadataDefinitionSpecialization put(MetadataDefinitionImpl.class, "base", "Metadata::MetadataItem"); + //checkMetadataUsageSpecialization put(MetadataUsageImpl.class, "base", "Metadata::metadataItems"); put(MetadataUsageImpl.class, "annotatedElement", "Metaobjects::Metaobject::annotatedElement"); put(MetadataUsageImpl.class, "baseType", "Metaobjects::SemanticMetadata::baseType"); + //checkMergeNodeSpecialization put(MergeNodeImpl.class, "subaction", "Actions::Action::merges"); + // put(OccurrenceDefinitionImpl.class, "base", "Occurrences::Occurrence"); + //checkOccurrenceDefinitionIndividualSpecialization put(OccurrenceDefinitionImpl.class, "life", "Occurrences::Life"); + //checkOccurrenceUsageSpecialization put(OccurrenceUsageImpl.class, "base", "Occurrences::occurrences"); + //checkOccurrenceUsageTimeSliceSpecialization put(OccurrenceUsageImpl.class, "timeslice", "Occurrences::Occurrence::timeSlices"); + //checkOccurrenceUsageSnapshotSpecialization put(OccurrenceUsageImpl.class, "snapshot", "Occurrences::Occurrence::snapshots"); + //checkPartDefinitionSpecialization put(PartDefinitionImpl.class, "base", "Parts::Part"); + //checkPartUsageSpecialization put(PartUsageImpl.class, "base", "Parts::parts"); + //checkPartUsageSubpartSpecialization put(PartUsageImpl.class, "subitem", "Items::Item::subparts"); + //checkPartUsageActorSpecialization put(PartUsageImpl.class, "requirementActor", "Requirements::RequirementCheck::actors"); + //checkPartUsageStakeholderSpecialization put(PartUsageImpl.class, "requirementStakeholder", "Requirements::RequirementCheck::stakeholders"); + //checkPartUsageActorSpecialization put(PartUsageImpl.class, "caseActor", "Cases::Case::actors"); + //checkPerformActionUsageSpecialization put(PerformActionUsageImpl.class, "performedAction", "Parts::Part::performedActions"); + //checkPortDefinitionSpecialization put(PortDefinitionImpl.class, "base", "Ports::Port"); + //checkPortUsageSpecialization put(PortUsageImpl.class, "base", "Ports::ports"); + //checkPortUsageOwnedPortSpecialization put(PortUsageImpl.class, "ownedPort", "Parts::Part::ownedPorts"); + //checkPortUsageSubportSpecialization put(PortUsageImpl.class, "subport", "Ports::Port::subports"); + //checkRenderingDefinitionSpecialization put(RenderingDefinitionImpl.class, "base", "Views::Rendering"); + //checkRenderingUsageSpecialization put(RenderingUsageImpl.class, "base", "Views::renderings"); + //checkRenderingUsageSubrenderingSpecialization put(RenderingUsageImpl.class, "subrendering", "Views::Rendering::subrenderings"); + //checkRenderingUsageRedefinition put(RenderingUsageImpl.class, "viewRendering", "Views::View::viewRendering"); + //checkRequirementDefinitionSpecialization put(RequirementDefinitionImpl.class, "base", "Requirements::RequirementCheck"); + //checkRequirementUsageSpecialization put(RequirementUsageImpl.class, "base", "Requirements::requirementChecks"); + //checkRequirementUsageSubrequirementSpecialization put(RequirementUsageImpl.class, "subrequirement", "Requirements::RequirementCheck::subrequirements"); + //checkRequirementUsageRequirementVerificationSpecialization put(RequirementUsageImpl.class, "verification", "Verifications::VerificationCase::obj::requirementVerifications"); + //checkSatisfyRequirementUsageSpecialization put(SatisfyRequirementUsageImpl.class, "base", "Requirements::satisfiedRequirementChecks"); + //checkSatisfyRequirementUsageSpecialization put(SatisfyRequirementUsageImpl.class, "negated", "Requirements::notSatisfiedRequirementChecks"); + //checkSendActionUsageSpecialization put(SendActionUsageImpl.class, "base", "Actions::sendActions"); + //checkActionUsageSubactionSpecialization put(SendActionUsageImpl.class, "subaction", "Actions::Action::sendSubactions"); + //checkStateDefinitionSpecialization put(StateDefinitionImpl.class, "base", "States::StateAction"); + //checkStateUsageSpecialization put(StateUsageImpl.class, "base", "States::stateActions"); + //checkStateUsageSubstateSpecialization put(StateUsageImpl.class, "substate", "States::StateAction::substates"); + //checkStateUsageExclusiveStateSpecialization put(StateUsageImpl.class, "exclusiveState", "States::StateAction::exclusiveStates"); + //checkStateUsageOwnedStateSpecialization put(StateUsageImpl.class, "ownedAction", "Parts::Part::ownedStates"); + //checkSuccessionSpecialization put(SuccessionAsUsageImpl.class, "base", "Occurrences::happensBeforeLinks"); + //checkSuccessionSpecialization put(SuccessionAsUsageImpl.class, "binary", "Occurrences::happensBeforeLinks"); + //checkSuccessionFlowUsageSpecialization put(SuccessionFlowUsageImpl.class, "base", "Flows::successionFlows"); + //checkSuccessionFlowUsageSpecialization put(SuccessionFlowUsageImpl.class, "message", "Flows::successionFlows"); - + + //checkTerminateActionUsageSpecialization put(TerminateActionUsageImpl.class, "base", "Actions::terminateActions"); + //checkTerminateActionUsageSubactionSpecialization put(TerminateActionUsageImpl.class, "subaction", "Actions::Action::terminateSubactions"); put(TerminateActionUsageImpl.class, "subaction", "Actions::Action::terminateWithResultSubactions"); - + + //checkTransitionUsageSpecialization put(TransitionUsageImpl.class, "base", "Actions::transitionActions"); + //checkTransitionUsageActionSpecialization put(TransitionUsageImpl.class, "actionTransition", "Actions::Action::decisionTransitions"); + //checkTransitionUsageStateSpecialization put(TransitionUsageImpl.class, "stateTransition", "States::StateAction::stateTransitions"); put(TriggerInvocationExpressionImpl.class, "when", "Triggers::TriggerWhen"); put(TriggerInvocationExpressionImpl.class, "at", "Triggers::TriggerAt"); put(TriggerInvocationExpressionImpl.class, "after", "Triggers::TriggerAfter"); + //checkUseCaseDefinitionSpecialization put(UseCaseDefinitionImpl.class, "base", "UseCases::UseCase"); + //checkUseCaseUsageSpecialization put(UseCaseUsageImpl.class, "base", "UseCases::useCases"); + //checkUseCaseUsageSubUseCaseSpecialization put(UseCaseUsageImpl.class, "subUseCase", "UseCases::UseCase::subUseCases"); + //checkVerificationCaseSpecialization put(VerificationCaseDefinitionImpl.class, "base", "VerificationCases::VerificationCase"); + //checkVerificationCaseUsageSpecialization put(VerificationCaseUsageImpl.class, "base", "VerificationCases::verificationCases"); + //checkVerificationCaseUsageSubVerificationCaseSpecialization put(VerificationCaseUsageImpl.class, "subVerificationCase", "VerificationCases::VerificationCase::subVerificationCases"); + //checkViewDefinitionSpecialization put(ViewDefinitionImpl.class, "base", "Views::View"); + //checkViewUsageSpecialization put(ViewUsageImpl.class, "base", "Views::views"); + //checkViewUsageSubviewSpecialization put(ViewUsageImpl.class, "subview", "Views::View::subviews"); - + + //checkViewpointDefinitionSpecialization put(ViewpointDefinitionImpl.class, "base", "Views::ViewpointCheck"); + //checkViewpointUsageSpecialization put(ViewpointUsageImpl.class, "base", "Views::viewpointChecks"); + //checkViewpointUsageViewpointSatisfactionSpecialization put(ViewpointUsageImpl.class, "satisfied", "Views::View::viewpointSatisfactions"); + //checkWhileLoopActionUsageSpecialization put(WhileLoopActionUsageImpl.class, "base", "Actions::whileLoopActions"); + //checkWhileLoopActionUsageSubactionSpecialization put(WhileLoopActionUsageImpl.class, "subaction", "Actions::Action::whileLoops"); - } public String get(Class elementType) { From cdc58342c2cc923c9d3b95559458c2dd8798d9f9 Mon Sep 17 00:00:00 2001 From: lgati Date: Thu, 26 Jun 2025 13:08:31 +0200 Subject: [PATCH 11/12] ST6RI-843 Annotated more semantic constraints in FeatureAdapter --- .../src/org/omg/sysml/adapter/FeatureAdapter.java | 9 +++++++++ .../omg/sysml/adapter/IncludeUseCaseUsageAdapter.java | 5 +++-- .../src/org/omg/sysml/adapter/UseCaseUsageAdapter.java | 7 +++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index ddaea14db..080d03985 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -245,6 +245,9 @@ protected void addBoundValueSubsetting() { } } + /** + * @satisfies checkFeatureEndSpecialization + */ protected void addParticipantSubsetting() { if (isAssociationEnd() && !isImplicitSpecializationDeclaredFor(SysMLPackage.eINSTANCE.getRedefinition())) { @@ -252,6 +255,9 @@ protected void addParticipantSubsetting() { } } + /** + * @satisfies checkFeatureCrossingSpecialization + */ public void addCrossingSpecialization() { Feature target = getTarget(); Feature ownedCrossFeature = FeatureUtil.getOwnedCrossFeatureOf(target); @@ -659,6 +665,9 @@ public boolean isIgnoredParameter() { // Transformation + /** + * @satisfies checkFeatureFeatureMembershipTypeFeaturing + */ protected Type computeFeaturingType() { Feature feature = getTarget(); Type owningType = feature.getOwningType(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java index 8efb7108a..60167bb78 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/IncludeUseCaseUsageAdapter.java @@ -37,12 +37,13 @@ public IncludeUseCaseUsage getTarget() { return (IncludeUseCaseUsage)super.getTarget(); } + /** + * @satisfies checkPerformActionUsageSpecialization + */ @Override public void addDefaultGeneralType() { - //checkIncludeUseCaseSpecialization super.addDefaultGeneralType(); if (isPerformedAction()) { - ////checkPerformActionUsageSpecialization addDefaultGeneralType("performedAction"); } } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java index 3e3db0493..703be70ff 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java @@ -31,10 +31,13 @@ public UseCaseUsageAdapter(UseCaseUsage element) { super(element); } + /** + * @satisfies checkIncludeUseCaseSpecialization + * @satisfies checkUseCaseUsageSpecialization + * @satisfies checkUseCaseUsageSubUseCaseSpecialization + */ @Override protected String getSubactionType() { - //checkUseCaseUsageSpecialization - //checkUseCaseUsageSubUseCaseSpecialization return isSubUseCase()? "subUseCase": super.getSubactionType(); } From 2bee82481be6f7b56cbb33726b2b85557a3f1171 Mon Sep 17 00:00:00 2001 From: lgati Date: Thu, 26 Jun 2025 15:36:00 +0200 Subject: [PATCH 12/12] ST6RI-843 Marked code that differ from the OCL spec --- .../adapter/CalculationUsageAdapter.java | 12 +++++++++ .../omg/sysml/adapter/CaseUsageAdapter.java | 11 ++++++++ .../sysml/adapter/ConstraintUsageAdapter.java | 13 ++++++++++ .../adapter/EventOccurrenceUsageAdapter.java | 10 ++++++++ .../org/omg/sysml/adapter/FeatureAdapter.java | 13 ++++++++++ .../FeatureReferenceExpressionAdapter.java | 8 ++++++ .../sysml/adapter/IndexExpressionAdapter.java | 9 +++++++ .../omg/sysml/adapter/PartUsageAdapter.java | 11 ++++++++ .../sysml/adapter/UseCaseUsageAdapter.java | 15 +++++++++++ .../sysml/util/ImplicitGeneralizationMap.java | 25 ++++++++++++++++++- .../src/org/omg/sysml/util/UsageUtil.java | 13 ++++++++++ 11 files changed, 139 insertions(+), 1 deletion(-) diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java index bf6de578e..286e72b8f 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/CalculationUsageAdapter.java @@ -48,6 +48,18 @@ protected String getSubactionType() { } public boolean isSubcalculation() { + /* + * TODO: ST6RI-843 + * + * checkCalculationUsageSubcalculationSpecialization + * + * owningType <> null and + * (owningType.oclIsKindOf(CalculationDefinition) or + * owningType.oclIsKindOf(CalculationUsage)) implies + * specializesFromLibrary('Calculations::Calculation::subcalculations') + * + * isNonEntryExitComposite check is not part of the OCL + */ CalculationUsage target = getTarget(); Type owningType = target.getOwningType(); return isNonEntryExitComposite() && diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java index c6725f2a6..ac0b47e01 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java @@ -57,6 +57,17 @@ protected String getSubactionType() { } public boolean isSubcase() { + /*TODO: ST6RI-843 + * + * checkCaseUsageSubcaseSpecialization + * + * isComposite and owningType <> null and + * (owningType.oclIsKindOf(CaseDefinition) or + * owningType.oclIsKindOf(CaseUsage)) implies + * specializesFromLibrary('Cases::Case::subcases') + * + * nonEntryExit part of the check is not reflected of the OCL + */ CaseUsage target = getTarget(); Type owningType = target.getOwningType(); return isNonEntryExitComposite() && diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java index 903a52cd1..caab1c0fd 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/ConstraintUsageAdapter.java @@ -85,6 +85,19 @@ protected String getDefaultSupertype() { } protected boolean isCheckedConstraint() { + /* + * TODO: ST6RI-843 + * + * checkConstraintUsageCheckedConstraintSpecialization + * + * owningType <> null and + * (owningType.oclIsKindOf(ItemDefinition) or + * owningType.oclIsKindOf(ItemUsage)) implies + * specializesFromLibrary('Items::Item::checkedConstraints') + * + * OCL doesn't require composite + * + */ ConstraintUsage target = getTarget(); Type owningType = target.getOwningType(); return target.isComposite() && diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java index 933e7bdc0..959bc3d87 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/EventOccurrenceUsageAdapter.java @@ -37,6 +37,16 @@ public EventOccurrenceUsage getTarget() { return (EventOccurrenceUsage)super.getTarget(); } + /* + * TODO: ST6RI-843 + * + * All general semantic constraints on an OccurrenceUsage + * (see 8.4.5.2 ) also apply to an EventOccurrenceUsage. + * + * addDefaultGeneralType and getDefaultSuperType overrides look redundant + * as they both check for subOccurrence which is also done by OccurrenceUsageAdapter + */ + /** * @satisfies checkOccurrenceUsageSuboccurrenceSpecialization */ diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index 080d03985..4bc6c7812 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -238,8 +238,21 @@ public void addDefaultGeneralType() { protected void addBoundValueSubsetting() { + /* + * TODO: ST6RI-843 + * + * direction = null and + * ownedSpecializations->forAll(isImplied) implies + * ownedMembership-> + * selectByKind(FeatureValue)-> + * forAll(fv | specializes(fv.value.result)) + * + * + */ + Feature target = getTarget(); Feature result = getBoundValueResult(); + if (result != null && target.getOwnedSpecialization().isEmpty() && target.getDirection() == null) { addImplicitGeneralType(SysMLPackage.eINSTANCE.getSubsetting(), result); } diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java index 9b8490b2f..b27382c6e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureReferenceExpressionAdapter.java @@ -63,6 +63,14 @@ protected boolean isInFilterExpression() { * @satisfies checkFeatureReferenceExpressionBindingConnector */ protected void addReferenceConnector() { + /* + * TODO: ST6RI-843 + * + * ownedMember->selectByKind(BindingConnector)->exists(b | + * b.relatedFeatures->includes(targetFeature) and + * b.relatedFeatures->includes(result)) + * + */ if (!isInFilterExpression()) { FeatureReferenceExpression target = getTarget(); Feature referent = target.getReferent(); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java index 7aa16429a..e94d74838 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/IndexExpressionAdapter.java @@ -57,6 +57,15 @@ protected void addResultTyping() { Feature seqResult = seqArgument.getResult(); Type arrayType = getLibraryType(ARRAY_TYPE); Type scalarValueType = getLibraryType(SCALAR_VALUE_TYPE); + /* + * TODO: ST6RI-843 + * checkIndexExpressionResultSpecialization: + * arguments->notEmpty() and + * not arguments->first().result.specializesFromLibrary('Collections::Array') implies + * result.specializes(arguments->first().result) + * + * '|| TypeUtil.specializes(target, scalarValueType)' part is not reflected by the OCL + */ if (!TypeUtil.specializes(target, arrayType) || TypeUtil.specializes(target, scalarValueType)) { Feature resultFeature = target.getResult(); if (resultFeature != null && seqResult != null) { diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java index 90962db68..733132e70 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/PartUsageAdapter.java @@ -61,6 +61,17 @@ protected boolean isRequirementActor() { } protected boolean isRequirementStakeholder() { + /* + * TODO: ST6RI-843 + * + * checkPartUsageStakeholderSpecialization + * + * owningFeatureMembership <> null and + * owningFeatureMembership.oclIsKindOf(StakeholderMembership) implies + * specializesFromLibrary('Requirements::RequirementCheck::stakeholders') + * + * OCL doesn't require the owningType to be ReqDef or ReqUsage + */ PartUsage target = getTarget(); Type owningType = target.getOwningType(); return UsageUtil.isStakeholderParameter(target) && diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java index 703be70ff..949b86f2a 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/UseCaseUsageAdapter.java @@ -43,6 +43,21 @@ protected String getSubactionType() { public boolean isSubUseCase() { Type owningType = getTarget().getOwningType(); + + /* + * TODO: ST6RI-843 + * + * checkIncludeUseCaseSpecialization + * + * owningType <> null and + * (owningType.oclIsKindOf(UseCaseDefinition) or + * owningType.oclIsKindOf(UseCaseUsage) implies + * specializesFromLibrary('UseCases::UseCase::includedUseCases') + * + * the semantic constraint doens't require the IncludeUseCaseUsage to be composite, also + * IncludeUseCaseUsageImpl overrides isComposite to always return false + */ + return isNonEntryExitComposite() && (owningType instanceof UseCaseDefinition || owningType instanceof UseCaseUsage); } diff --git a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java index da67e9899..d96ded697 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java @@ -133,6 +133,15 @@ protected ImplicitGeneralizationMap() { //checkStepOwnedPerformanceSpecialization put(FlowImpl.class, "ownedPerformance", "Objects::Object::ownedPerformances"); + /* + * TODO: ST6RI-843 + * checkFlowSpecialization + * specializesFromLibrary('Transfers::transfers') + * + * This case is missing from the implementation + */ + + //checkFeatureFlowFeatureRedefinition put(FlowEndImpl.class, "sourceOutput", "Transfers::Transfer::source::sourceOutput"); //checkFeatureFlowFeatureRedefinition @@ -435,7 +444,7 @@ protected ImplicitGeneralizationMap() { put(OccurrenceUsageImpl.class, "timeslice", "Occurrences::Occurrence::timeSlices"); //checkOccurrenceUsageSnapshotSpecialization put(OccurrenceUsageImpl.class, "snapshot", "Occurrences::Occurrence::snapshots"); - + //checkPartDefinitionSpecialization put(PartDefinitionImpl.class, "base", "Parts::Part"); //checkPartUsageSpecialization @@ -556,6 +565,20 @@ protected ImplicitGeneralizationMap() { //checkViewpointUsageViewpointSatisfactionSpecialization put(ViewpointUsageImpl.class, "satisfied", "Views::View::viewpointSatisfactions"); + /* + * TODO: ST6RI-843 + * + * checkViewpointDefinitionSpecialization + * specializesFromLibrary('Views::Viewpoint') + * + * TODO: ST6RI-843 + * + * checkViewpointUsageSpecialization + * specializesFromLibrary('Views::viewpoints') + * + * OCL doesn't match with the implementation + */ + //checkWhileLoopActionUsageSpecialization put(WhileLoopActionUsageImpl.class, "base", "Actions::whileLoopActions"); //checkWhileLoopActionUsageSubactionSpecialization diff --git a/org.omg.sysml/src/org/omg/sysml/util/UsageUtil.java b/org.omg.sysml/src/org/omg/sysml/util/UsageUtil.java index 0bee2c491..91b7235e3 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/UsageUtil.java +++ b/org.omg.sysml/src/org/omg/sysml/util/UsageUtil.java @@ -264,6 +264,19 @@ public static RequirementConstraintKind getRequirementConstraintKindOf(Constrain public static boolean isSubrequirement(RequirementUsage requirement) { Type owningType = requirement.getOwningType(); + /* + * TODO: ST6RI-843 + * + * checkRequirementUsageSubrequirementSpecialization + * + * isComposite and owningType <> null and + * (owningType.oclIsKindOf(RequirementDefinition) or + * owningType.oclIsKindOf(RequirementUsage)) implies + * specializesFromLibrary('Requirements::RequirementCheck::subrequirements') + * + * !isAssumptionConstraint is not in the OCL + * + */ return !isAssumptionConstraint(requirement) && requirement.isComposite() && (owningType instanceof RequirementDefinition || owningType instanceof RequirementUsage);