Skip to content

Commit

Permalink
Merge pull request #569 from Systems-Modeling/ST6RI-760
Browse files Browse the repository at this point in the history
ST6RI-760 Actor and stakeholder property derivations only return owned usages
  • Loading branch information
seidewitz authored Jun 12, 2024
2 parents 9718c8b + 0275587 commit c2f26cd
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public CaseDefinition_actorParameter_SettingDelegate(EStructuralFeature eStructu
@Override
protected EList<?> basicGet(InternalEObject owner) {
EList<PartUsage> actorParameters = new NonNotifyingEObjectEList<>(PartUsage.class, owner, eStructuralFeature.getFeatureID());
TypeUtil.addOwnedFeaturesByMembership((CaseDefinition)owner, ActorMembership.class, PartUsage.class, actorParameters);
TypeUtil.addFeaturesByMembership((CaseDefinition)owner, ActorMembership.class, PartUsage.class, actorParameters);
return actorParameters;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public CaseUsage_actorParameter_SettingDelegate(EStructuralFeature eStructuralFe
@Override
protected EList<?> basicGet(InternalEObject owner) {
EList<PartUsage> actorParameters = new NonNotifyingEObjectEList<>(PartUsage.class, owner, eStructuralFeature.getFeatureID());
TypeUtil.addOwnedFeaturesByMembership((CaseUsage)owner, ActorMembership.class, PartUsage.class, actorParameters);
TypeUtil.addFeaturesByMembership((CaseUsage)owner, ActorMembership.class, PartUsage.class, actorParameters);
return actorParameters;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public RequirementDefinition_actorParameter_SettingDelegate(EStructuralFeature e
@Override
protected EList<?> basicGet(InternalEObject owner) {
EList<PartUsage> actorParameters = new NonNotifyingEObjectEList<>(PartUsage.class, owner, eStructuralFeature.getFeatureID());
TypeUtil.addOwnedFeaturesByMembership((RequirementDefinition)owner, ActorMembership.class, PartUsage.class, actorParameters);
TypeUtil.addFeaturesByMembership((RequirementDefinition)owner, ActorMembership.class, PartUsage.class, actorParameters);
return actorParameters;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public RequirementDefinition_stakeholderParameter_SettingDelegate(EStructuralFea
@Override
protected EList<?> basicGet(InternalEObject owner) {
EList<PartUsage> stakeholderParameters = new NonNotifyingEObjectEList<>(PartUsage.class, owner, eStructuralFeature.getFeatureID());
TypeUtil.addOwnedFeaturesByMembership((RequirementDefinition)owner, StakeholderMembership.class, PartUsage.class, stakeholderParameters);
TypeUtil.addFeaturesByMembership((RequirementDefinition)owner, StakeholderMembership.class, PartUsage.class, stakeholderParameters);
return stakeholderParameters;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public RequirementUsage_actorParameter_SettingDelegate(EStructuralFeature eStruc
@Override
protected EList<?> basicGet(InternalEObject owner) {
EList<PartUsage> actorParameters = new NonNotifyingEObjectEList<>(PartUsage.class, owner, eStructuralFeature.getFeatureID());
TypeUtil.addOwnedFeaturesByMembership((RequirementUsage)owner, ActorMembership.class, PartUsage.class, actorParameters);
TypeUtil.addFeaturesByMembership((RequirementUsage)owner, ActorMembership.class, PartUsage.class, actorParameters);
return actorParameters;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public RequirementUsage_stakeholderParameter_SettingDelegate(EStructuralFeature
@Override
protected EList<?> basicGet(InternalEObject owner) {
EList<PartUsage> stakeholderParameters = new NonNotifyingEObjectEList<>(PartUsage.class, owner, eStructuralFeature.getFeatureID());
TypeUtil.addOwnedFeaturesByMembership((RequirementUsage)owner, StakeholderMembership.class, PartUsage.class, stakeholderParameters);
TypeUtil.addFeaturesByMembership((RequirementUsage)owner, StakeholderMembership.class, PartUsage.class, stakeholderParameters);
return stakeholderParameters;
}

Expand Down
7 changes: 6 additions & 1 deletion org.omg.sysml/src/org/omg/sysml/util/TypeUtil.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*******************************************************************************
* SysML 2 Pilot Implementation
* Copyright (c) 2021-2022 Model Driven Solutions, Inc.
* Copyright (c) 2021-2022, 2024 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 @@ -298,6 +298,11 @@ public static <T extends Membership> Feature getFeatureByMembershipIn(Type type,
return getFeaturesByMembershipIn(type, kind).findFirst().orElse(null);
}

public static <M extends Membership, E extends Element> void addFeaturesByMembership(Type type,
Class<M> kind, Class<E> elementKind, List<E> list) {
getFeaturesByMembershipIn(type, kind).map(elementKind::cast).forEachOrdered(list::add);
}

public static <T extends Membership> Stream<Feature> getOwnedFeaturesByMembershipIn(Type type, Class<T> kind) {
return type.getOwnedFeatureMembership().stream().
filter(kind::isInstance).
Expand Down

0 comments on commit c2f26cd

Please sign in to comment.