From 78e36baaef8da2a0f7be6be77064a1bb8e8a798e Mon Sep 17 00:00:00 2001 From: Axel RICHARD Date: Mon, 22 Jun 2026 13:42:41 +0200 Subject: [PATCH 1/2] ST6RI-944 Invalid TypeAdapter#getFeatureMembership cache when needed Signed-off-by: Axel RICHARD --- ...ype_featureMembership_SettingDelegate.java | 7 +- .../logic/TypeFeatureMembershipCacheTest.java | 103 ++++++++++++++++++ 2 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/TypeFeatureMembershipCacheTest.java diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_featureMembership_SettingDelegate.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_featureMembership_SettingDelegate.java index 321f65232..3cbb7fb26 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_featureMembership_SettingDelegate.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_featureMembership_SettingDelegate.java @@ -2,7 +2,8 @@ * SysML 2 Pilot Implementation * Copyright (c) 2022 Siemens AG * Copyright (c) 2022, 2026 Model Driven Solutions, Inc. - * + * Copyright (c) 2026 Obeo + * * This program is free software: you can redistribute it and/or modify * it under the terms of the Eclipse Public License as published by * the Eclipse Foundation, version 2 of the License. @@ -25,6 +26,7 @@ import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.InternalEObject; import org.omg.sysml.lang.sysml.Type; +import org.omg.sysml.util.ElementUtil; import org.omg.sysml.util.TypeUtil; public class Type_featureMembership_SettingDelegate extends BasicDerivedListSettingDelegate { @@ -35,7 +37,8 @@ public Type_featureMembership_SettingDelegate(EStructuralFeature eStructuralFeat @Override protected EList basicGet(InternalEObject owner) { - return TypeUtil.getFeatureMembershipOf((Type)owner); + ElementUtil.clearCachesOf((Type) owner); + return TypeUtil.getFeatureMembershipOf((Type) owner); } } diff --git a/org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/TypeFeatureMembershipCacheTest.java b/org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/TypeFeatureMembershipCacheTest.java new file mode 100644 index 000000000..ed41d7689 --- /dev/null +++ b/org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/TypeFeatureMembershipCacheTest.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * @license LGPL-3.0-or-later + * + *******************************************************************************/ + +package org.omg.sysml.logic; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +import org.eclipse.emf.common.util.EList; +import org.junit.Test; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.FeatureMembership; +import org.omg.sysml.lang.sysml.SysMLFactory; +import org.omg.sysml.lang.sysml.Type; +import org.omg.sysml.util.TypeUtil; + +/** + * Verifies that derived feature memberships reflect owned membership mutations that happen after an initial read. + */ +public class TypeFeatureMembershipCacheTest { + + /** + * Verifies that a second read of {@link Type#getFeatureMembership()} sees a newly added owned membership after the + * first read has already populated the derived list. + */ + @Test + public void getFeatureMembershipReflectsOwnedMembershipsAddedAfterFirstRead() { + initializeStandalone(); + + Type type = this.createType("FixtureType"); + Feature initialFeature = this.createFeature("initialFeature"); + FeatureMembership initialMembership = TypeUtil.addOwnedFeatureTo(type, initialFeature); + + EList initialMemberships = type.getFeatureMembership(); + + assertEquals(1, initialMemberships.size()); + assertSame(initialMembership, initialMemberships.get(0)); + assertSame(initialFeature, initialMemberships.get(0).getOwnedMemberFeature()); + + Feature addedFeature = this.createFeature("addedFeature"); + FeatureMembership addedMembership = TypeUtil.addOwnedFeatureTo(type, addedFeature); + + EList updatedMemberships = type.getFeatureMembership(); + + assertEquals(2, updatedMemberships.size()); + assertTrue(updatedMemberships.contains(initialMembership)); + assertTrue(updatedMemberships.contains(addedMembership)); + assertSame(addedMembership, updatedMemberships.get(1)); + assertSame(addedFeature, updatedMemberships.get(1).getOwnedMemberFeature()); + } + + /** + * Installs the standalone delegates used by direct EMF logic tests. + */ + private void initializeStandalone() { + SysMLLogicStandaloneSetup.doSetup(); + } + + /** + * Creates a type with the given declared name. + * + * @param name + * the declared type name used in the test fixture + * @return a new type instance + */ + private Type createType(String name) { + Type type = SysMLFactory.eINSTANCE.createType(); + type.setDeclaredName(name); + return type; + } + + /** + * Creates a feature with the given declared name. + * + * @param name + * the declared feature name used in the test fixture + * @return a new feature instance + */ + private Feature createFeature(String name) { + Feature feature = SysMLFactory.eINSTANCE.createFeature(); + feature.setDeclaredName(name); + return feature; + } +} From 7260317e02de052d5ce06e1a85841f6963216261 Mon Sep 17 00:00:00 2001 From: Ed Seidewitz Date: Wed, 26 Aug 2026 01:27:12 -0400 Subject: [PATCH 2/2] ST6RI-944 Replaced internal calls of getFeatureMembership with util. --- .../org.omg.sysml.logic-0.62.0-SNAPSHOT.jar | Bin 687504 -> 687766 bytes .../setting/Type_feature_SettingDelegate.java | 5 +++-- .../java/org/omg/sysml/util/TypeUtil.java | 2 +- .../org.omg.sysml.model-0.62.0-SNAPSHOT.jar | Bin 898006 -> 898006 bytes .../xtext/validation/SysMLValidator.xtend | 5 +++-- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/org.omg.sysml.logic.bundle/lib/org.omg.sysml.logic-0.62.0-SNAPSHOT.jar b/org.omg.sysml.logic.bundle/lib/org.omg.sysml.logic-0.62.0-SNAPSHOT.jar index ba24ed85625409dc2388c357b157faa82b45b148..983f7ace30ace5d36ecac6fd38f53f58ee505648 100644 GIT binary patch delta 42748 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 LZMh&G@xtVP9|2OR diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_feature_SettingDelegate.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_feature_SettingDelegate.java index ad081c49a..3ca983077 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_feature_SettingDelegate.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/delegate/setting/Type_feature_SettingDelegate.java @@ -1,7 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2022 Siemens AG - * Copyright (c) 2022 Model Driven Solutions, Inc. + * Copyright (c) 2022, 2026 Model Driven Solutions, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the Eclipse Public License as published by @@ -28,6 +28,7 @@ import org.omg.sysml.lang.sysml.FeatureMembership; import org.omg.sysml.lang.sysml.Type; import org.omg.sysml.util.NonNotifyingEObjectEList; +import org.omg.sysml.util.TypeUtil; public class Type_feature_SettingDelegate extends BasicDerivedListSettingDelegate { @@ -38,7 +39,7 @@ public Type_feature_SettingDelegate(EStructuralFeature eStructuralFeature) { @Override protected EList basicGet(InternalEObject owner) { EList features = new NonNotifyingEObjectEList<>(Feature.class, owner, eStructuralFeature.getFeatureID()); - ((Type) owner).getFeatureMembership().stream(). + TypeUtil.getFeatureMembershipOf((Type) owner).stream(). map(FeatureMembership::getOwnedMemberFeature). filter(f->f != null). forEachOrdered(features::add); diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/TypeUtil.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/TypeUtil.java index 58f08f811..eea7ea7ce 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/TypeUtil.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/TypeUtil.java @@ -319,7 +319,7 @@ public static Stream getInheritedMembersByMembershi } public static Stream getFeaturesByMembershipIn(Type type, Class kind) { - return type.getFeatureMembership().stream(). + return getFeatureMembershipOf(type).stream(). filter(kind::isInstance). map(FeatureMembership::getOwnedMemberFeature); } diff --git a/org.omg.sysml.model.bundle/lib/org.omg.sysml.model-0.62.0-SNAPSHOT.jar b/org.omg.sysml.model.bundle/lib/org.omg.sysml.model-0.62.0-SNAPSHOT.jar index cce2670e9d111fad62145812b7a68d0e02c3cf2c..4f6148ad2bb7a393e75aad03f1d177d53721af9b 100644 GIT binary patch delta 8861 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 kind, String msg, String eId) { - var mems = featuringType.featureMembership.filter[m | kind.isInstance(m)] + var mems = TypeUtil.getFeatureMembershipOf(featuringType).filter[m | kind.isInstance(m)] checkAtMostOneRelationship(featuringType, mems, msg, eId) }