Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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,28 @@ public CalculationUsage getTarget() {
return (CalculationUsage)super.getTarget();
}

/**
* @satisfies checkCalculationUsageSpecialization
* @satisfies checkCalculationUsageSubcalculationSpecialization
*/
@Override
protected String getSubactionType() {
return isSubcalculation()? "subcalculation": super.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() &&
Expand Down
15 changes: 15 additions & 0 deletions org.omg.sysml/src/org/omg/sysml/adapter/CaseUsageAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,27 @@ public boolean hasRelevantSubjectParameter() {

// Implicit Generalization

/**
* @satisfies checkCaseUsageSpecialization
* @satisfies checkCaseUsageSubcaseSpecialization
*/
@Override
protected String getSubactionType() {
return isSubcase()? "subcase": super.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() &&
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,28 @@ public void addRequirementConstraintSubsetting() {
}
}

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

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() &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,32 @@ public EventOccurrenceUsageAdapter(EventOccurrenceUsage element) {
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
*/
@Override
public void addDefaultGeneralType() {
super.addDefaultGeneralType();
if (isSuboccurrence()) {
addImplicitGeneralType(getSpecializationEClass(),
getLibraryType(getDefaultSupertype("suboccurrence")));;
getLibraryType(getDefaultSupertype("suboccurrence")));
}
}


/**
* @satisfies checkOccurrenceUsageSuboccurrenceSpecialization
*/
@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