Skip to content
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
21fa2ed
ST6RI-799 Marked semantic constraint related code with comments
TheKorpos Nov 18, 2024
93f2690
ST6RI-799 Marked more semantic constraint related code with comments
TheKorpos Nov 19, 2024
b05d7c6
ST6RI-799 Restored accidental removal in ImplicitGeneralizationMap
TheKorpos Nov 19, 2024
acdb083
ST6RI-799 Marked more semantic constraints in SysML/KerML adapters
TheKorpos Nov 21, 2024
977c785
ST6RI-799 Marked more semantic constraints in SysML/KerML adapters
TheKorpos Dec 3, 2024
7479233
Merge remote-tracking branch 'origin/master' into ST6RI-799
TheKorpos May 9, 2025
041ae06
ST6RI-351
TheKorpos May 21, 2025
c65bdbd
Merge remote-tracking branch 'origin/master' into ST6RI-799
TheKorpos Jun 5, 2025
cf0784c
ST6RI-799 Traced semantic constraints in adapters
TheKorpos Jun 16, 2025
9ba4b19
ST6RI-843 Annotated semantic constraints in adapters
TheKorpos Jun 23, 2025
e7d5d35
ST6RI-843 Annotated more semantic constraints in adapters
TheKorpos Jun 25, 2025
03cf011
ST6RI-843 Annotated ImplicitGeneralizationMap with semantic constraints
TheKorpos Jun 25, 2025
cdc5834
ST6RI-843 Annotated more semantic constraints in FeatureAdapter
TheKorpos Jun 26, 2025
2bee824
ST6RI-843 Marked code that differ from the OCL spec
TheKorpos Jun 26, 2025
26cd83d
Merge remote-tracking branch 'origin/ST6RI-799' into ST6RI-843
seidewitz Jun 29, 2025
6d68d37
ST6RI-843 Identified adapter TODOs as spec updates vs. impl fixes.
seidewitz Jun 29, 2025
32596df
ST6RI-843 Added more semantic constraint annotations.
seidewitz Jun 30, 2025
4cfa323
ST6RI-843 Added TODO to FeatureChainExpressionAdapter.
seidewitz Jul 3, 2025
4d59c66
ST6RI-843 Added a few more comments to ImplicitGeneralizationMapping.
seidewitz Jul 3, 2025
586e683
ST6RI-843 Added another TODO to fix bug in IndexExpressionAdapter.
seidewitz Jul 3, 2025
48738d8
ST6RI-843 Made a few more comment changes in ImplicitGeneralizationMap.
seidewitz Jul 3, 2025
1bbf878
ST6RI-857 Added owned cross feature type before default subsetting.
seidewitz Jul 3, 2025
5575e1a
ST6RI-858 Fixed TypeUtil.getResultParameterOf to use getGeneralTypesOf.
seidewitz Jul 3, 2025
58022f4
ST6RI-860 Added handling for being a subpart to appropriate adapters.
seidewitz Jul 3, 2025
137f7df
ST6RI-861 Updated addDefaultGeneralType in ReferenceUsageAdapter.
seidewitz Jul 3, 2025
eb441e8
Merge pull request #668 from Systems-Modeling/ST6RI-857/858/860/861
seidewitz Jul 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Expand Down
31 changes: 31 additions & 0 deletions org.omg.sysml/src/org/omg/sysml/adapter/ActionUsageAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ public ActionUsage getTarget() {

// Implicit Generalization

/**
* @satisfies checkAcceptActionUsageTriggerActionSpecialization
* @satisfies checkStepEnclosedPerformanceSpecialization
* @satisfies checkStepOwnedPerformanceSpecialization
* @satisfies checkStepSubperformanceSpecialization
*/
@Override
public void addDefaultGeneralType() {
super.addDefaultGeneralType();
Expand All @@ -67,6 +73,11 @@ public void addDefaultGeneralType() {
}
}

/**
* @satisfies checkAcceptActionUsageSpecialization
* @satisfies checkSendActionUsageSpecialization
* @satisfies checkWhileLoopActionUsageSpecialization
*/
@Override
protected String getDefaultSupertype() {
return getDefaultSupertype("base");
Expand All @@ -77,6 +88,22 @@ 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() {
return isActionOwnedComposite()? "subaction":
isPartOwnedComposite()? "ownedAction":
Expand All @@ -96,6 +123,7 @@ public boolean isPerformedAction() {
*/
@Override
public boolean isComputeRedefinitions() {
//checkActionUsageStateActionRedefinition
String redefinedFeature = getRedefinedFeature(getTarget());
return redefinedFeature != null? isComputeRedefinitions:
super.isComputeRedefinitions();
Expand All @@ -110,6 +138,9 @@ protected List<? extends Feature> getRelevantFeatures(Type type, Element skip) {
Collections.singletonList((Feature)getLibraryType(redefinedFeature));
}

/**
* @satisfies checkTransitionUsageTransitionFeatureSpecialization
*/
protected static String getRedefinedFeature(Feature target) {
FeatureMembership membership = target.getOwningFeatureMembership();
String kind =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public AnalysisCaseUsage getTarget() {

@Override
protected String getSubactionType() {
//checkAnalysisCaseUsageSpecialization
//checkAnalysisCaseUsageSubAnalysisCaseSpecialization
return isSubAnalysisCase()? "subAnalysisCase": super.getSubactionType();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ public AssertConstraintUsage getTarget() {
return (AssertConstraintUsage)super.getTarget();
}

/**
* @satisfies checkAssertConstraintUsageSpecialization
*/
@Override
protected String getDefaultSupertype() {
return getTarget().isNegated()?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ public AssignmentActionUsage getTarget() {
return (AssignmentActionUsage)super.getTarget();
}

/**
* @satisfies checkAssignmentActionUsageReferentRedefinition
* @satisfies checkAssignmentActionUsageAccessedFeatureRedefinition
* @satisfies checkAssignmentActionUsageStartingAtRedefinition
*/
protected void addTargetRedefinitions() {
AssignmentActionUsage target = getTarget();
addFeatureWriteTypes(TypeUtil.getOwnedParametersOf(target), target.getReferent());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,13 @@ 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 ?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ public CalculationDefinition getTarget() {
return (CalculationDefinition)super.getTarget();
}

/**
* @satisfies checkFunctionResultBindingConnector
*/
@Override
public void doTransform() {
super.doTransform();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,22 @@ public CalculationUsage getTarget() {
return (CalculationUsage)super.getTarget();
}

/**
* @satisfies checkCalculationUsageSpecialization
* @satisfies checkCalculationUsageSubcalculationSpecialization
*/
@Override
protected String getSubactionType() {
return isSubcalculation()? "subcalculation": super.getSubactionType();
}

public boolean isSubcalculation() {
/*
* TODO: Update checkCalculationUsageSubcalculationSpecialization
*
* isNonEntryExitComposite check is not part of the OCL
* See SYSML12-298
*/
CalculationUsage target = getTarget();
Type owningType = target.getOwningType();
return isNonEntryExitComposite() &&
Expand Down
12 changes: 11 additions & 1 deletion org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*******************************************************************************
* SysML 2 Pilot Implementation
* Copyright (c) 2021, 2023-2024 Model Driven Solutions, Inc.
* Copyright (c) 2021, 2023-2025 Model Driven Solutions, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
Expand Down Expand Up @@ -47,12 +47,22 @@ public boolean hasRelevantSubjectParameter() {

// Implicit Generalization

/**
* @satisfies checkCaseUsageSpecialization
* @satisfies checkCaseUsageSubcaseSpecialization
*/
@Override
protected String getSubactionType() {
return isSubcase()? "subcase": super.getSubactionType();
}

public boolean isSubcase() {
/*
* TODO: Update checkCaseUsageSubcaseSpecialization
*
* nonEntryExit part of the check is not reflected of the OCL
* See SYSML21-298
*/
CaseUsage target = getTarget();
Type owningType = target.getOwningType();
return isNonEntryExitComposite() &&
Expand Down
10 changes: 10 additions & 0 deletions org.omg.sysml/src/org/omg/sysml/adapter/ConcernUsageAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ public ConcernUsage getTarget() {
return (ConcernUsage)super.getTarget();
}

/**
* @satisfies checkRequirementUsageSubrequirementSpecialization
*/
@Override
public void addDefaultGeneralType() {
super.addDefaultGeneralType();
Expand All @@ -43,10 +46,17 @@ public void addDefaultGeneralType() {
}
}

/**
* @satisfies checkConcernUsageSpecialization
*/
@Override
protected String getDefaultSupertype() {
return getDefaultSupertype("base");
}

/**
* @satisfies checkConcernUsageFramedConcernSpecialization
*/
@Override
public void addRequirementConstraintSubsetting() {
if (UsageUtil.isFramedConcern(getTarget())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,18 @@ 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 ?
return getTarget().getOwnedEndFeature().size() != 2 ?
getDefaultSupertype("base") :
getDefaultSupertype("binary");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,19 @@ 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?
return numEnds != 2?
getDefaultSupertype("base"):
getDefaultSupertype("binary");
}
Expand Down
16 changes: 14 additions & 2 deletions org.omg.sysml/src/org/omg/sysml/adapter/ConnectorAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -52,7 +58,10 @@ protected String getDefaultSupertype() {
getDefaultSupertype("base"):
getDefaultSupertype("binary");
}


/**
* @satisfies checkConnectorTypeFeaturing
*/
protected void addContextFeaturingType() {
addFeaturingTypeIfNecessary(ConnectorUtil.getContextTypeFor(getTarget()));
}
Expand All @@ -72,6 +81,9 @@ public static void addEndSubsetting(Connector target) {
}
}

/**
* @satisfies checkConnectorTypeFeaturing
*/
@Override
public void doTransform() {
Connector target = getTarget();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ public ConstraintDefinitionAdapter(ConstraintDefinition element) {
public ConstraintDefinition getTarget() {
return (ConstraintDefinition)super.getTarget();
}


/**
* @satisfies checkFunctionResultBindingConnector
*/
@Override
public void doTransform() {
super.doTransform();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ public ConstraintUsage getTarget() {

// Implicit Generalization

/**
* @satisfies checkConstraintUsageRequirementConstraintSpecialization
* @satisfies checkConstraintUsageCheckedConstraintSpecialization
* @satisfies checkStepEnclosedPerformanceSpecialization
* @satisfies checkStepOwnedPerformanceSpecialization
* @satisfies checkStepSubperformanceSpecialization
*/
@Override
public void computeImplicitGeneralTypes() {
addRequirementConstraintSubsetting();
Expand All @@ -69,12 +76,21 @@ public void addRequirementConstraintSubsetting() {
}
}

/**
* @satisfies checkConstraintUsageSpecialization
*/
@Override
protected String getDefaultSupertype() {
return getDefaultSupertype("base");
}

protected boolean isCheckedConstraint() {
/*
* TODO: Update checkConstraintUsageCheckedConstraintSpecialization
*
* OCL doesn't require composite
*
*/
ConstraintUsage target = getTarget();
Type owningType = target.getOwningType();
return target.isComposite() &&
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*******************************************************************************
* SysML 2 Pilot Implementation
* Copyright (c) 2021 Model Driven Solutions, Inc.
* Copyright (c) 2021, 2025 Model Driven Solutions, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
Expand Down Expand Up @@ -36,16 +36,10 @@ public EventOccurrenceUsageAdapter(EventOccurrenceUsage element) {
public EventOccurrenceUsage getTarget() {
return (EventOccurrenceUsage)super.getTarget();
}

@Override
public void addDefaultGeneralType() {
super.addDefaultGeneralType();
if (isSuboccurrence()) {
addImplicitGeneralType(getSpecializationEClass(),
getLibraryType(getDefaultSupertype("suboccurrence")));;
}
}


/**
* @satisfies checkEventOccurrenceUsageSpecialization
*/
@Override
protected String getDefaultSupertype() {
return isSuboccurrence()?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ public ExhibitStateUsageAdapter(ExhibitStateUsage element) {
public ExhibitStateUsage getTarget() {
return (ExhibitStateUsage)super.getTarget();
}


/**
* @satisfies checkExhibitStateUsageSpecialization
*/
@Override
public void addDefaultGeneralType() {
super.addDefaultGeneralType();
Expand Down
Loading