Skip to content

Commit fe8b084

Browse files
committed
ST6RI-925 Updated derivation for featureMembership.
- Added filter that owningType is a supertype. - There is a slight performance degradation.
1 parent 2858fb4 commit fe8b084

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

org.omg.sysml/src/org/omg/sysml/delegate/setting/Type_featureMembership_SettingDelegate.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
package org.omg.sysml.delegate.setting;
2424

25+
import java.util.List;
2526
import org.eclipse.emf.common.util.EList;
2627
import org.eclipse.emf.ecore.EStructuralFeature;
2728
import org.eclipse.emf.ecore.InternalEObject;
@@ -37,11 +38,16 @@ public Type_featureMembership_SettingDelegate(EStructuralFeature eStructuralFeat
3738

3839
@Override
3940
protected EList<?> basicGet(InternalEObject owner) {
41+
Type self = (Type)owner;
42+
4043
EList<FeatureMembership> featureMemberships = new NonNotifyingEObjectEList<>(FeatureMembership.class, owner, eStructuralFeature.getFeatureID());
41-
featureMemberships.addAll(((Type)owner).getOwnedFeatureMembership());
42-
((Type)owner).getInheritedMembership().stream().
44+
featureMemberships.addAll(self.getOwnedFeatureMembership());
45+
// For improved performance, compute supertypes only once.
46+
List<Type> allSupertypes = self.allSupertypes();
47+
self.getInheritedMembership().stream().
4348
filter(FeatureMembership.class::isInstance).
4449
map(FeatureMembership.class::cast).
50+
filter(membership->allSupertypes.contains(membership.getOwningType())).
4551
forEachOrdered(featureMemberships::add);
4652
return featureMemberships;
4753
}

0 commit comments

Comments
 (0)