From adeaa5216f94ae7c3c46c54d67082deac674665b Mon Sep 17 00:00:00 2001 From: Arthur Daussy Date: Mon, 3 Aug 2026 11:38:29 +0200 Subject: [PATCH 1/5] ST6RI-953 Move post adapter code into xtext modules --- .../META-INF/MANIFEST.MF | 7 +- .../kerml/xpect/tests/AllKerMLXpectTests.java | 48 ++-- .../tests/linking/ParserAdapterTest.java | 220 ++++++++++++++++++ .../linking/AnnotationParserAdapter.java | 43 ++++ .../xtext/linking/CommentParserAdapter.java | 35 +++ .../linking/ConjugationParserAdapter.java | 59 +++++ .../linking/DefinitionParserAdapter.java | 35 +++ .../linking/DependencyParserAdapter.java | 39 ++++ .../linking/DifferencingParserAdapter.java | 47 ++++ .../linking/DisjoiningParserAdapter.java | 66 ++++++ .../xtext/linking/ElementParserAdapter.java | 41 ++++ .../EndFeatureMembershipParserAdapter.java | 37 +++ .../FeatureInvertingParserAdapter.java | 64 +++++ .../xtext/linking/FeatureParserAdapter.java | 39 ++++ .../linking/FeatureTypingParserAdapter.java | 54 +++++ .../xtext/linking/ImportParserAdapter.java | 41 ++++ .../linking/IntersectingParserAdapter.java | 47 ++++ .../linking/LiteralStringParserAdapter.java | 34 +++ .../linking/MembershipParserAdapter.java | 38 +++ .../linking/NamespaceImportParserAdapter.java | 49 ++++ .../linking/OccurrenceUsageParserAdapter.java | 36 +++ .../ParameterMembershipParserAdapter.java | 37 +++ .../xtext/linking/ParserAdapterFactory.java | 216 +++++++++++++++++ .../linking/PortConjugationParserAdapter.java | 50 ++++ .../xtext/linking/PortUsageParserAdapter.java | 39 ++++ .../linking/RedefinitionParserAdapter.java | 58 +++++ .../ReferenceSubsettingParserAdapter.java | 45 ++++ .../linking/SpecializationParserAdapter.java | 60 +++++ .../SubclassificationParserAdapter.java | 44 ++++ .../linking/SubsettingParserAdapter.java | 60 +++++ .../TextualRepresentationParserAdapter.java | 35 +++ .../linking/TypeFeaturingParserAdapter.java | 43 ++++ .../xtext/linking/UnioningParserAdapter.java | 47 ++++ .../xtext/linking/UsageParserAdapter.java | 43 ++++ .../omg/kerml/xtext/scoping/KerMLLinker.java | 23 +- .../omg/sysml/adapter/AnnotationAdapter.java | 17 +- .../org/omg/sysml/adapter/CommentAdapter.java | 9 +- .../omg/sysml/adapter/ConjugationAdapter.java | 33 +-- .../omg/sysml/adapter/DefinitionAdapter.java | 9 +- .../omg/sysml/adapter/DependencyAdapter.java | 13 +- .../sysml/adapter/DifferencingAdapter.java | 21 +- .../omg/sysml/adapter/DisjoiningAdapter.java | 40 +--- .../org/omg/sysml/adapter/ElementAdapter.java | 9 +- .../adapter/EndFeatureMembershipAdapter.java | 12 +- .../org/omg/sysml/adapter/FeatureAdapter.java | 17 +- .../adapter/FeatureInvertingAdapter.java | 38 +-- .../sysml/adapter/FeatureTypingAdapter.java | 28 +-- .../omg/sysml/adapter/FlowUsageAdapter.java | 2 +- .../org/omg/sysml/adapter/ImportAdapter.java | 14 +- .../sysml/adapter/IntersectingAdapter.java | 21 +- .../sysml/adapter/LiteralStringAdapter.java | 8 +- .../omg/sysml/adapter/MembershipAdapter.java | 12 +- .../sysml/adapter/NamespaceImportAdapter.java | 21 +- .../sysml/adapter/OccurrenceUsageAdapter.java | 13 +- .../adapter/ParameterMembershipAdapter.java | 12 +- .../sysml/adapter/PortConjugationAdapter.java | 24 +- .../omg/sysml/adapter/PortUsageAdapter.java | 11 +- .../sysml/adapter/RedefinitionAdapter.java | 32 +-- .../adapter/ReferenceSubsettingAdapter.java | 19 +- .../sysml/adapter/SpecializationAdapter.java | 33 +-- .../adapter/SubclassificationAdapter.java | 18 +- .../omg/sysml/adapter/SubsettingAdapter.java | 34 +-- .../adapter/TextualRepresentationAdapter.java | 9 +- .../sysml/adapter/TypeFeaturingAdapter.java | 17 +- .../omg/sysml/adapter/UnioningAdapter.java | 21 +- .../org/omg/sysml/adapter/UsageAdapter.java | 22 +- .../java/org/omg/sysml/util/ElementUtil.java | 7 +- .../omg/sysml/logic/UsagePostProcessTest.java | 138 ----------- 68 files changed, 1884 insertions(+), 729 deletions(-) create mode 100644 org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/AnnotationParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/CommentParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ConjugationParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DefinitionParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DependencyParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DifferencingParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DisjoiningParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ElementParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/EndFeatureMembershipParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureInvertingParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureTypingParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ImportParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/IntersectingParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/LiteralStringParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/MembershipParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/NamespaceImportParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/OccurrenceUsageParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParameterMembershipParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParserAdapterFactory.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortConjugationParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortUsageParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/RedefinitionParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ReferenceSubsettingParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SpecializationParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubclassificationParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubsettingParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TextualRepresentationParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TypeFeaturingParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UnioningParserAdapter.java create mode 100644 org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UsageParserAdapter.java delete mode 100644 org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/UsagePostProcessTest.java diff --git a/org.omg.kerml.xpect.tests/META-INF/MANIFEST.MF b/org.omg.kerml.xpect.tests/META-INF/MANIFEST.MF index 030e6b919..d1728f3fa 100644 --- a/org.omg.kerml.xpect.tests/META-INF/MANIFEST.MF +++ b/org.omg.kerml.xpect.tests/META-INF/MANIFEST.MF @@ -10,9 +10,10 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.xpect.xtext.xbase.lib;bundle-version="[0.3.0,0.4.0)", org.eclipse.emf.codegen;bundle-version="2.6.0", org.eclipse.xtext.xbase;bundle-version="2.9.2", - org.eclipse.xtext.ui.shared;bundle-version="2.14.0", - org.omg.sysml;bundle-version="0.61.0", - org.omg.sysml.logic.bundle;bundle-version="0.61.0", + org.eclipse.xtext.ui.shared;bundle-version="2.14.0", + org.omg.sysml;bundle-version="0.61.0", + org.omg.sysml.model.bundle;bundle-version="0.61.0", + org.omg.sysml.logic.bundle;bundle-version="0.61.0", org.omg.kerml.xtext;bundle-version="0.61.0", org.omg.kerml.xtext.ui;bundle-version="0.61.0", org.aopalliance;bundle-version="1.0.0" diff --git a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java index bb4518fa2..35febe979 100644 --- a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java +++ b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java @@ -1,24 +1,36 @@ -package org.omg.kerml.xpect.tests; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; -import org.junit.runners.Suite.SuiteClasses; -import org.omg.kerml.xpect.tests.imports.global.KerMLImportGlobalTest; -import org.omg.kerml.xpect.tests.imports.local.KerMLImportLocalTest; -import org.omg.kerml.xpect.tests.imports.recursive.KerMLImportRecursiveTest; -import org.omg.kerml.xpect.tests.indexing.KerMLIndexerTest; -import org.omg.kerml.xpect.tests.linking.KerMLLinkingTest; -import org.omg.kerml.xpect.tests.parsing.KerMLParsingTest; -import org.omg.kerml.xpect.tests.scoping.KerMLScopingTest; -import org.omg.kerml.xpect.tests.testsuite.KerMLXtextTest; -import org.omg.kerml.xpect.tests.validation.KerMLValidationTest; -import org.omg.kerml.xpect.tests.visibility.KerMLVisibilityTest; - -@SuiteClasses({ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.omg.kerml.xpect.tests; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; +import org.omg.kerml.xpect.tests.imports.global.KerMLImportGlobalTest; +import org.omg.kerml.xpect.tests.imports.local.KerMLImportLocalTest; +import org.omg.kerml.xpect.tests.imports.recursive.KerMLImportRecursiveTest; +import org.omg.kerml.xpect.tests.indexing.KerMLIndexerTest; +import org.omg.kerml.xpect.tests.linking.KerMLLinkingTest; +import org.omg.kerml.xpect.tests.linking.ParserAdapterTest; +import org.omg.kerml.xpect.tests.parsing.KerMLParsingTest; +import org.omg.kerml.xpect.tests.scoping.KerMLScopingTest; +import org.omg.kerml.xpect.tests.testsuite.KerMLXtextTest; +import org.omg.kerml.xpect.tests.validation.KerMLValidationTest; +import org.omg.kerml.xpect.tests.visibility.KerMLVisibilityTest; + +@SuiteClasses({ KerMLImportGlobalTest.class, // KerMLImportLocalTest.class, // KerMLImportRecursiveTest.class, // - KerMLLinkingTest.class,// + KerMLLinkingTest.class,// + ParserAdapterTest.class, // KerMLParsingTest.class, // KerMLScopingTest.class, // KerMLXtextTest.class, // diff --git a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java new file mode 100644 index 000000000..62965bc46 --- /dev/null +++ b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java @@ -0,0 +1,220 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xpect.tests.linking; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.InvocationTargetException; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.omg.kerml.xtext.linking.ElementParserAdapter; +import org.omg.kerml.xtext.linking.ImportParserAdapter; +import org.omg.kerml.xtext.linking.LiteralStringParserAdapter; +import org.omg.kerml.xtext.linking.OccurrenceUsageParserAdapter; +import org.omg.kerml.xtext.linking.ParserAdapterFactory; +import org.omg.kerml.xtext.linking.PortUsageParserAdapter; +import org.omg.kerml.xtext.linking.RedefinitionParserAdapter; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.FeatureDirectionKind; +import org.omg.sysml.lang.sysml.LiteralString; +import org.omg.sysml.lang.sysml.Namespace; +import org.omg.sysml.lang.sysml.OccurrenceUsage; +import org.omg.sysml.lang.sysml.OwningMembership; +import org.omg.sysml.lang.sysml.Package; +import org.omg.sysml.lang.sysml.PartUsage; +import org.omg.sysml.lang.sysml.PortUsage; +import org.omg.sysml.lang.sysml.PortionKind; +import org.omg.sysml.lang.sysml.SysMLFactory; +import org.omg.sysml.lang.sysml.SysMLPackage; +import org.omg.sysml.lang.sysml.Usage; +import org.omg.sysml.lang.sysml.VariantMembership; +import org.omg.sysml.logic.SysMLLogicStandaloneSetup; +import org.omg.sysml.util.NamespaceUtil; +import org.omg.sysml.util.TypeUtil; + +public class ParserAdapterTest { + + @BeforeClass + public static void setUp() { + SysMLLogicStandaloneSetup.doSetup(); + SysMLPackage.eINSTANCE.eClass(); + } + + @Test + public void factorySelectsTheMostSpecificParserAdapterAndAvoidsDuplicates() { + PortUsage port = SysMLFactory.eINSTANCE.createPortUsage(); + ElementParserAdapter portAdapter = ParserAdapterFactory.getAdapter(port); + assertTrue(portAdapter instanceof PortUsageParserAdapter); + assertEquals(portAdapter, ParserAdapterFactory.getAdapter(port)); + assertEquals(1L, port.eAdapters().stream().filter(ElementParserAdapter.class::isInstance).count()); + + OccurrenceUsage occurrence = SysMLFactory.eINSTANCE.createOccurrenceUsage(); + assertTrue(ParserAdapterFactory.getAdapter(occurrence) instanceof OccurrenceUsageParserAdapter); + assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createConnectionUsage()) + instanceof OccurrenceUsageParserAdapter); + assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createAllocationUsage()) + instanceof OccurrenceUsageParserAdapter); + + LiteralString literal = SysMLFactory.eINSTANCE.createLiteralString(); + assertTrue(ParserAdapterFactory.getAdapter(literal) instanceof LiteralStringParserAdapter); + + assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createRedefinition()) + instanceof RedefinitionParserAdapter); + assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createMembershipImport()) + instanceof ImportParserAdapter); + + ParserAdapterFactory.removeAdapter(port); + assertFalse(port.eAdapters().stream().anyMatch(ElementParserAdapter.class::isInstance)); + } + + @Test + public void parserAdapterHierarchyPreservesSpecialCaseBehavior() { + Feature feature = SysMLFactory.eINSTANCE.createFeature(); + feature.setDeclaredName("'a name'"); + feature.setIsConstant(true); + postProcess(feature); + assertEquals("a name", feature.getDeclaredName()); + assertTrue(feature.isVariable()); + + Usage usage = SysMLFactory.eINSTANCE.createAttributeUsage(); + usage.setIsConstant(true); + postProcess(usage); + assertFalse(usage.isVariable()); + + OccurrenceUsage occurrence = SysMLFactory.eINSTANCE.createOccurrenceUsage(); + occurrence.setPortionKind(PortionKind.SNAPSHOT); + postProcess(occurrence); + assertTrue(occurrence.isPortion()); + + PortUsage port = SysMLFactory.eINSTANCE.createPortUsage(); + port.setPortionKind(PortionKind.SNAPSHOT); + postProcess(port); + assertFalse(port.isPortion()); + + LiteralString literal = SysMLFactory.eINSTANCE.createLiteralString(); + literal.setValue("\"hello\\nworld\""); + postProcess(literal); + assertEquals("hello\nworld", literal.getValue()); + } + + @Test + public void settingCompositeToFalse() throws InvocationTargetException { + Package test = (Package)createElement(SysMLPackage.Literals.PACKAGE, "test", null); + Usage p = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "p", test); + Usage a = (Usage)createElement(SysMLPackage.Literals.ATTRIBUTE_USAGE, "a", p); + Usage x = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "x", p); + Usage y = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "y", p); + y.setDirection(FeatureDirectionKind.IN); + Usage z = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "z", p); + z.setIsVariation(true); + Usage u = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "u", z); + u.setIsVariation(true); + Usage v = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "v", u); + Usage w = (Usage)createElement(SysMLPackage.Literals.PORT_USAGE, "w", u); + Usage q = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "q", test); + q.setIsVariation(true); + Usage r = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "r", q); + + postProcess(p, a, x, y, z, u, v, w, q, r); + + assertTrue(p.isReference()); + assertTrue(a.isReference()); + assertFalse(x.isReference()); + assertTrue(y.isReference()); + assertFalse(z.isReference()); + assertFalse(u.isReference()); + assertFalse(v.isReference()); + assertTrue(w.isReference()); + assertTrue(q.isReference()); + assertTrue(r.isReference()); + } + + protected static Element createElement(org.eclipse.emf.ecore.EClass eClass, String name, Namespace parent) { + Element element = (Element)SysMLFactory.eINSTANCE.create(eClass); + element.setDeclaredName(name); + if (element instanceof Usage usage && parent instanceof Usage parentUsage) { + if (parentUsage.isVariation()) { + VariantMembership membership = SysMLFactory.eINSTANCE.createVariantMembership(); + membership.setOwnedVariantUsage(usage); + parentUsage.getOwnedRelationship().add(membership); + } else { + TypeUtil.addOwnedFeatureTo(parentUsage, usage); + } + } else if (parent != null) { + NamespaceUtil.addOwnedMemberTo(parent, element); + } + return element; + } + + protected static void postProcess(Element... elements) { + for (Element element : elements) { + ParserAdapterFactory.getAdapter(element).postProcess(); + ParserAdapterFactory.removeAdapter(element); + assertFalse(element.eAdapters().stream().anyMatch(ElementParserAdapter.class::isInstance)); + } + } + + protected static PartUsage createPartUsage() { + return SysMLFactory.eINSTANCE.createPartUsage(); + } + + protected static PartUsage createPartUsageOwnedByFeatureMembership() { + PartUsage owner = createPartUsage(); + PartUsage usage = createPartUsage(); + TypeUtil.addOwnedFeatureTo(owner, usage); + return usage; + } + + @Test + public void postProcessPreservesCompositeUsageOwnedByFeatureMembership() { + PartUsage usage = createPartUsageOwnedByFeatureMembership(); + + postProcess(usage); + + assertTrue(usage.isComposite()); + } + + @Test + public void postProcessMakesDirectedUsageNonComposite() { + PartUsage usage = createPartUsageOwnedByFeatureMembership(); + usage.setDirection(FeatureDirectionKind.IN); + + postProcess(usage); + + assertFalse(usage.isComposite()); + } + + @Test + public void postProcessMakesEndUsageNonComposite() { + PartUsage usage = createPartUsageOwnedByFeatureMembership(); + usage.setIsEnd(true); + + postProcess(usage); + + assertFalse(usage.isComposite()); + } + + @Test + public void postProcessMakesUsageOutsideFeatureMembershipNonComposite() { + PartUsage usage = createPartUsage(); + OwningMembership membership = SysMLFactory.eINSTANCE.createOwningMembership(); + membership.setOwnedMemberElement(usage); + + postProcess(usage); + + assertFalse(usage.isComposite()); + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/AnnotationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/AnnotationParserAdapter.java new file mode 100644 index 000000000..9139deda7 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/AnnotationParserAdapter.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.AnnotatingElement; +import org.omg.sysml.lang.sysml.Annotation; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class AnnotationParserAdapter extends ElementParserAdapter { + + public AnnotationParserAdapter(Annotation element) { + super(element); + } + + @Override + public Annotation getTarget() { + return (Annotation)super.getTarget(); + } + + @Override + public void postProcess() { + Annotation obj = getTarget(); + + // If the Annotation is not owned by an AnnotatingElement, then the annotatedElement is the owningRelatedElement. + Object annotatedElement = obj.eGet(SysMLPackage.Literals.ANNOTATION__ANNOTATED_ELEMENT, false); + if (annotatedElement == null) { + Element owningRelatedElement = obj.getOwningRelatedElement(); + if (!(owningRelatedElement instanceof AnnotatingElement)) { + obj.setAnnotatedElement(owningRelatedElement); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/CommentParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/CommentParserAdapter.java new file mode 100644 index 000000000..0c3a1d2af --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/CommentParserAdapter.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Comment; +import org.omg.sysml.util.ElementUtil; + +public class CommentParserAdapter extends ElementParserAdapter { + + public CommentParserAdapter(Comment element) { + super(element); + } + + @Override + public Comment getTarget() { + return (Comment)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + Comment target = getTarget(); + target.setLocale(ElementUtil.unescapeString(target.getLocale())); + target.setBody(ElementUtil.processCommentBody(target.getBody())); + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ConjugationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ConjugationParserAdapter.java new file mode 100644 index 000000000..ec0863009 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ConjugationParserAdapter.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Conjugation; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.SysMLPackage; +import org.omg.sysml.lang.sysml.Type; + +public class ConjugationParserAdapter extends ElementParserAdapter { + + public ConjugationParserAdapter(Conjugation element) { + super(element); + } + + @Override + public Conjugation getTarget() { + return (Conjugation)super.getTarget(); + } + + @Override + public void postProcess() { + Conjugation obj = getTarget(); + + // If the conjugatedType is not set, then set it to the owningRelatedElement, if this is a Type, + // otherwise set it to the first ownedRelatedElement. + Object conjugatedType = obj.eGet(SysMLPackage.Literals.CONJUGATION__CONJUGATED_TYPE, false); + if (conjugatedType == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Type) { + obj.setConjugatedType((Type)owner); + } else { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setConjugatedType((Type)ownedRelatedElements.get(0)); + } + } + } + + // If the originalType is not set, set it to the last ownedRelatedElement. + Object originalType = obj.eGet(SysMLPackage.Literals.CONJUGATION__ORIGINAL_TYPE, false); + if (originalType == null) { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setOriginalType((Type)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DefinitionParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DefinitionParserAdapter.java new file mode 100644 index 000000000..e572b8f08 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DefinitionParserAdapter.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Definition; + +public class DefinitionParserAdapter extends ElementParserAdapter { + + public DefinitionParserAdapter(Definition element) { + super(element); + } + + @Override + public Definition getTarget() { + return (Definition)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + Definition target = getTarget(); + if (target.isVariation()) { + target.setIsAbstract(true); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DependencyParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DependencyParserAdapter.java new file mode 100644 index 000000000..47a4d9655 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DependencyParserAdapter.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.util.EObjectResolvingEList; +import org.omg.sysml.lang.sysml.Dependency; +import org.omg.sysml.lang.sysml.Element; + +public class DependencyParserAdapter extends ElementParserAdapter { + + public DependencyParserAdapter(Dependency element) { + super(element); + } + + @Override + public Dependency getTarget() { + return (Dependency)super.getTarget(); + } + + @Override + public void postProcess() { + Dependency target = getTarget(); + + // Add all ownedRelatedElements to supplier. + EObjectResolvingEList suppliers = (EObjectResolvingEList)target.getSupplier(); + EList ownedRelatedElements = target.getOwnedRelatedElement(); + ownedRelatedElements.stream().forEachOrdered(suppliers::addUnique); + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DifferencingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DifferencingParserAdapter.java new file mode 100644 index 000000000..d5c0dee09 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DifferencingParserAdapter.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Differencing; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class DifferencingParserAdapter extends ElementParserAdapter { + + public DifferencingParserAdapter(Differencing element) { + super(element); + } + + @Override + public Differencing getTarget() { + return (Differencing)super.getTarget(); + } + + @Override + public void postProcess() { + Differencing obj = getTarget(); + + // If a Differencing is parsed targeting a Feature chain, then the differencingType will be empty, + // but the Differencing will own the differencingType. So, in this case, the differencingType should + // be set to the (last) ownedRelatedelement. + Object differencingType = obj.eGet(SysMLPackage.Literals.DIFFERENCING__DIFFERENCING_TYPE, false); + if (differencingType == null) { + // Handle a differencingType that is a Feature chain. + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setDifferencingType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DisjoiningParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DisjoiningParserAdapter.java new file mode 100644 index 000000000..92cdd3511 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DisjoiningParserAdapter.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Disjoining; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.SysMLPackage; +import org.omg.sysml.lang.sysml.Type; + +public class DisjoiningParserAdapter extends ElementParserAdapter { + + public DisjoiningParserAdapter(Disjoining element) { + super(element); + } + + @Override + public Disjoining getTarget() { + return (Disjoining)super.getTarget(); + } + + @Override + public void postProcess() { + Disjoining obj = getTarget(); + + // If a Disjoining is parsed targeting a Feature chain, then the disjoiningType will be empty, + // but the Disjoining will own the disjoiningType. So, in this case, the disjoiningType should + // be set to the (last) ownedRelatedelement. + Object disjoiningType = obj.eGet(SysMLPackage.Literals.DISJOINING__DISJOINING_TYPE, false); + if (disjoiningType == null) { + // Handle a disjoiningType that is a Feature chain. + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setDisjoiningType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + + // If the typedDisjoined (source) is empty, set it to the owningRelatedElement, if it is a Type. + // Otherwise, set it to the first ownedRelatedElement, to the first ownedRelatedElement, + // which will be a Feature chain. + Object typeDisjoined = obj.eGet(SysMLPackage.Literals.DISJOINING__TYPE_DISJOINED, false); + if (typeDisjoined == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Type) { + // Handle a Disjoining owned by the typeDisjoined. + obj.setTypeDisjoined((Type)owner); + } else { + // Handle a typeDisjoined that is a Feature chain. + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setTypeDisjoined((Feature)ownedRelatedElements.get(0)); + } + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ElementParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ElementParserAdapter.java new file mode 100644 index 000000000..437e3b017 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ElementParserAdapter.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.notify.impl.AdapterImpl; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.util.ElementUtil; + +public class ElementParserAdapter extends AdapterImpl { + + protected Class kind; + + public ElementParserAdapter(Element element) { + super(); + kind = element.getClass(); + } + + public Element getTarget() { + return (Element)super.getTarget(); + } + + @Override + public boolean isAdapterForType(Object object) { + return kind.isInstance(object); + } + + public void postProcess() { + Element target = getTarget(); + target.setDeclaredName(ElementUtil.unescapeString(target.getDeclaredName())); + target.setDeclaredShortName(ElementUtil.unescapeString(target.getDeclaredShortName())); + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/EndFeatureMembershipParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/EndFeatureMembershipParserAdapter.java new file mode 100644 index 000000000..80308fdbb --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/EndFeatureMembershipParserAdapter.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.EndFeatureMembership; +import org.omg.sysml.lang.sysml.Feature; + +public class EndFeatureMembershipParserAdapter extends MembershipParserAdapter { + + public EndFeatureMembershipParserAdapter(EndFeatureMembership element) { + super(element); + } + + @Override + public EndFeatureMembership getTarget() { + return (EndFeatureMembership)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + EndFeatureMembership target = getTarget(); + Feature endFeature = target.getOwnedMemberFeature(); + if (endFeature != null) { + endFeature.setIsEnd(true); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureInvertingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureInvertingParserAdapter.java new file mode 100644 index 000000000..139adae04 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureInvertingParserAdapter.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.FeatureInverting; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class FeatureInvertingParserAdapter extends ElementParserAdapter { + + public FeatureInvertingParserAdapter(FeatureInverting element) { + super(element); + } + + @Override + public FeatureInverting getTarget() { + return (FeatureInverting)super.getTarget(); + } + + @Override + public void postProcess() { + FeatureInverting obj = getTarget(); + + // If the featureInverted is empty, then set it to the owningRelatedElement of the FeatureInverting, + // if that is a Feature, otherwise set it to the first ownedRelatedElement (which will be a + // Feature chain). + Object featureInverted = obj.eGet(SysMLPackage.Literals.FEATURE_INVERTING__FEATURE_INVERTED, false); + if (featureInverted == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Feature) { + // Handle FeatureInverting owned by the featureInverted. + obj.setFeatureInverted((Feature)owner); + } else { + // Handle featureInverted that is a Feature chain. + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setFeatureInverted((Feature)ownedRelatedElements.get(0)); + } + } + } + + // If the invertingFeature is empty, then set it to the last ownedRelatedElement + // (which will be a Feature chain). + Object invertingFeature = obj.eGet(SysMLPackage.Literals.FEATURE_INVERTING__INVERTING_FEATURE, false); + if (invertingFeature == null) { + // Handle invertingFeature that is a Feature chain. + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setInvertingFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureParserAdapter.java new file mode 100644 index 000000000..13a058424 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureParserAdapter.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Feature; + +public class FeatureParserAdapter extends ElementParserAdapter { + + public FeatureParserAdapter(Feature element) { + super(element); + } + + @Override + public Feature getTarget() { + return (Feature)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + setIsVariableIfConstant(); + } + + protected void setIsVariableIfConstant() { + Feature target = getTarget(); + if (target.isConstant()) { + target.setIsVariable(true); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureTypingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureTypingParserAdapter.java new file mode 100644 index 000000000..57d479c57 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureTypingParserAdapter.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.FeatureTyping; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class FeatureTypingParserAdapter extends SpecializationParserAdapter { + + public FeatureTypingParserAdapter(FeatureTyping element) { + super(element); + } + + @Override + public FeatureTyping getTarget() { + return (FeatureTyping)super.getTarget(); + } + + @Override + public void postProcess() { + FeatureTyping obj = getTarget(); + + // If the type is empty, then set it to the first owned related element + // (which will be a Feature chain). + Object type = obj.eGet(SysMLPackage.Literals.FEATURE_TYPING__TYPE, false); + if (type == null) { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setType((Feature)ownedRelatedElements.get(0)); + } + } + + // If the typedFeature is empty, then set it to the owningRelatedElement (if that is a Feature). + Object typedFeature = obj.eGet(SysMLPackage.Literals.FEATURE_TYPING__TYPED_FEATURE, false); + if (typedFeature == null) { + Element owningRelatedElement = obj.getOwningRelatedElement(); + if (owningRelatedElement instanceof Feature) { + obj.setTypedFeature((Feature) owningRelatedElement); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ImportParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ImportParserAdapter.java new file mode 100644 index 000000000..a93c81a6b --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ImportParserAdapter.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Import; +import org.omg.sysml.lang.sysml.Namespace; +import org.omg.sysml.lang.sysml.NamespaceImport; +import org.omg.sysml.lang.sysml.VisibilityKind; + +public class ImportParserAdapter extends ElementParserAdapter { + + public ImportParserAdapter(Import element) { + super(element); + } + + @Override + public Import getTarget() { + return (Import)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + + // If the target Import is for a filtered import package, set its visibility to PUBLIC. + Import target = getTarget(); + Namespace owningNamespace = target.getImportOwningNamespace(); + if (owningNamespace != null && owningNamespace.getOwningRelationship() instanceof NamespaceImport) { + target.setVisibility(VisibilityKind.PUBLIC); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/IntersectingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/IntersectingParserAdapter.java new file mode 100644 index 000000000..1546bc90b --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/IntersectingParserAdapter.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Intersecting; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class IntersectingParserAdapter extends ElementParserAdapter { + + public IntersectingParserAdapter(Intersecting element) { + super(element); + } + + @Override + public Intersecting getTarget() { + return (Intersecting)super.getTarget(); + } + + @Override + public void postProcess() { + Intersecting obj = getTarget(); + + // If a Intersecting is parsed targeting a Feature chain, then the intersectingType will be empty, + // but the Intersecting will own the intersectingType. So, in this case, the intersectingType should + // be set to the (last) ownedRelatedelement. + Object intersectingType = obj.eGet(SysMLPackage.Literals.INTERSECTING__INTERSECTING_TYPE, false); + if (intersectingType == null) { + // Handle a intersectingType that is a Feature chain. + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setIntersectingType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/LiteralStringParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/LiteralStringParserAdapter.java new file mode 100644 index 000000000..b17918e32 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/LiteralStringParserAdapter.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.LiteralString; +import org.omg.sysml.util.ElementUtil; + +public class LiteralStringParserAdapter extends FeatureParserAdapter { + + public LiteralStringParserAdapter(LiteralString element) { + super(element); + } + + @Override + public LiteralString getTarget() { + return (LiteralString)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + LiteralString target = getTarget(); + target.setValue(ElementUtil.unescapeString(target.getValue())); + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/MembershipParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/MembershipParserAdapter.java new file mode 100644 index 000000000..d36df542d --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/MembershipParserAdapter.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Membership; +import org.omg.sysml.lang.sysml.OwningMembership; +import org.omg.sysml.util.ElementUtil; + +public class MembershipParserAdapter extends ElementParserAdapter { + + public MembershipParserAdapter(Membership element) { + super(element); + } + + @Override + public Membership getTarget() { + return (Membership)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + Membership target = getTarget(); + if (!(target instanceof OwningMembership)) { + target.setMemberName(ElementUtil.unescapeString(target.getMemberName())); + target.setMemberShortName(ElementUtil.unescapeString(target.getMemberShortName())); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/NamespaceImportParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/NamespaceImportParserAdapter.java new file mode 100644 index 000000000..9365e265a --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/NamespaceImportParserAdapter.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.NamespaceImport; +import org.omg.sysml.lang.sysml.SysMLPackage; +import org.omg.sysml.lang.sysml.Namespace; + +public class NamespaceImportParserAdapter extends ImportParserAdapter { + + public NamespaceImportParserAdapter(NamespaceImport element) { + super(element); + } + + @Override + public NamespaceImport getTarget() { + return (NamespaceImport)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + + NamespaceImport obj = getTarget(); + // If importedNamespace is empty, then set it to the first ownedRelatedElement, if this is a namespace + // (filling in the implicit import for a filter package). Otherwise, set it to the importOwningNamspace. + Object importedNamespace = obj.eGet(SysMLPackage.Literals.NAMESPACE_IMPORT__IMPORTED_NAMESPACE, false); + if (importedNamespace == null) { + EList ownedRelatedElement = obj.getOwnedRelatedElement(); + if (!ownedRelatedElement.isEmpty() && ownedRelatedElement.get(0) instanceof Namespace) { + // Fill in the implicit import for a filter package. + obj.setImportedNamespace((Namespace)ownedRelatedElement.get(0)); + } else { + obj.setImportedNamespace(obj.getImportOwningNamespace()); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/OccurrenceUsageParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/OccurrenceUsageParserAdapter.java new file mode 100644 index 000000000..19ac9cd48 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/OccurrenceUsageParserAdapter.java @@ -0,0 +1,36 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.OccurrenceUsage; + +public class OccurrenceUsageParserAdapter extends UsageParserAdapter { + + public OccurrenceUsageParserAdapter(OccurrenceUsage element) { + super(element); + } + + @Override + public OccurrenceUsage getTarget() { + return (OccurrenceUsage)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + + OccurrenceUsage self = getTarget(); + if (self.getPortionKind() != null) { + self.setIsPortion(true); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParameterMembershipParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParameterMembershipParserAdapter.java new file mode 100644 index 000000000..0a8c9e699 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParameterMembershipParserAdapter.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.ParameterMembership; + +public class ParameterMembershipParserAdapter extends MembershipParserAdapter { + + public ParameterMembershipParserAdapter(ParameterMembership element) { + super(element); + } + + @Override + public ParameterMembership getTarget() { + return (ParameterMembership)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + ParameterMembership target = getTarget(); + Feature parameter = target.getOwnedMemberParameter(); + if (parameter != null) { + parameter.setDirection(target.parameterDirection()); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParserAdapterFactory.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParserAdapterFactory.java new file mode 100644 index 000000000..965c5c018 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParserAdapterFactory.java @@ -0,0 +1,216 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import java.util.Optional; + +import org.omg.sysml.lang.sysml.*; +import org.omg.sysml.lang.sysml.util.SysMLSwitch; + +public final class ParserAdapterFactory { + + public static ElementParserAdapter getAdapter(Element element) { + return getExistingAdapter(element).orElseGet(() -> createAdapter(element)); + } + + public static void removeAdapter(Element element) { + getExistingAdapter(element).ifPresent(element.eAdapters()::remove); + } + + protected static Optional getExistingAdapter(Element element) { + return element == null ? Optional.empty() : + element.eAdapters().stream() + .filter(ElementParserAdapter.class::isInstance) + .map(ElementParserAdapter.class::cast) + .findFirst(); + } + + protected static ElementParserAdapter createAdapter(Element element) { + ElementParserAdapter adapter = null; + // PortUsage must be checked before OccurrenceUsage because its parser adapter deliberately + // inherits directly from UsageParserAdapter and applies port-specific post-processing. + if (element instanceof PortUsage portUsage) { + adapter = new PortUsageParserAdapter(portUsage); + // Some concrete OccurrenceUsage subtypes have multiple inheritance. In the generated + // SysMLSwitch, caseFeature may then be visited before caseOccurrenceUsage and would select + // a FeatureParserAdapter, skipping the occurrence-specific portion post-processing. + } else if (element instanceof OccurrenceUsage occurrenceUsage) { + adapter = new OccurrenceUsageParserAdapter(occurrenceUsage); + // For the same reason, some other concrete Usage subtypes reach caseFeature before caseUsage. + // Selecting UsageParserAdapter here guarantees that their common Usage post-processing runs. + } else if (element instanceof Usage usage) { + adapter = new UsageParserAdapter(usage); + } else if (element != null) { + adapter = SWITCH.doSwitch(element); + } + if (adapter != null) { + element.eAdapters().add(adapter); + } + return adapter; + } + + private ParserAdapterFactory() { + } + + private static final SysMLSwitch SWITCH = new SysMLSwitch() { + @Override + public ElementParserAdapter caseAnnotation(Annotation element) { + return new AnnotationParserAdapter(element); + } + + @Override + public ElementParserAdapter caseComment(Comment element) { + return new CommentParserAdapter(element); + } + + @Override + public ElementParserAdapter caseConjugation(Conjugation element) { + return new ConjugationParserAdapter(element); + } + + @Override + public ElementParserAdapter caseDefinition(Definition element) { + return new DefinitionParserAdapter(element); + } + + @Override + public ElementParserAdapter caseDependency(Dependency element) { + return new DependencyParserAdapter(element); + } + + @Override + public ElementParserAdapter caseDifferencing(Differencing element) { + return new DifferencingParserAdapter(element); + } + + @Override + public ElementParserAdapter caseDisjoining(Disjoining element) { + return new DisjoiningParserAdapter(element); + } + + @Override + public ElementParserAdapter caseElement(Element element) { + return new ElementParserAdapter(element); + } + + @Override + public ElementParserAdapter caseEndFeatureMembership(EndFeatureMembership element) { + return new EndFeatureMembershipParserAdapter(element); + } + + @Override + public ElementParserAdapter caseFeature(Feature element) { + return new FeatureParserAdapter(element); + } + + @Override + public ElementParserAdapter caseFeatureInverting(FeatureInverting element) { + return new FeatureInvertingParserAdapter(element); + } + + @Override + public ElementParserAdapter caseFeatureTyping(FeatureTyping element) { + return new FeatureTypingParserAdapter(element); + } + + @Override + public ElementParserAdapter caseImport(Import element) { + return new ImportParserAdapter(element); + } + + @Override + public ElementParserAdapter caseIntersecting(Intersecting element) { + return new IntersectingParserAdapter(element); + } + + @Override + public ElementParserAdapter caseLiteralString(LiteralString element) { + return new LiteralStringParserAdapter(element); + } + + @Override + public ElementParserAdapter caseMembership(Membership element) { + return new MembershipParserAdapter(element); + } + + @Override + public ElementParserAdapter caseNamespaceImport(NamespaceImport element) { + return new NamespaceImportParserAdapter(element); + } + + @Override + public ElementParserAdapter caseOccurrenceUsage(OccurrenceUsage element) { + return new OccurrenceUsageParserAdapter(element); + } + + @Override + public ElementParserAdapter caseParameterMembership(ParameterMembership element) { + return new ParameterMembershipParserAdapter(element); + } + + @Override + public ElementParserAdapter casePortConjugation(PortConjugation element) { + return new PortConjugationParserAdapter(element); + } + + @Override + public ElementParserAdapter casePortUsage(PortUsage element) { + return new PortUsageParserAdapter(element); + } + + @Override + public ElementParserAdapter caseRedefinition(Redefinition element) { + return new RedefinitionParserAdapter(element); + } + + @Override + public ElementParserAdapter caseReferenceSubsetting(ReferenceSubsetting element) { + return new ReferenceSubsettingParserAdapter(element); + } + + @Override + public ElementParserAdapter caseSpecialization(Specialization element) { + return new SpecializationParserAdapter(element); + } + + @Override + public ElementParserAdapter caseSubclassification(Subclassification element) { + return new SubclassificationParserAdapter(element); + } + + @Override + public ElementParserAdapter caseSubsetting(Subsetting element) { + return new SubsettingParserAdapter(element); + } + + @Override + public ElementParserAdapter caseTextualRepresentation(TextualRepresentation element) { + return new TextualRepresentationParserAdapter(element); + } + + @Override + public ElementParserAdapter caseTypeFeaturing(TypeFeaturing element) { + return new TypeFeaturingParserAdapter(element); + } + + @Override + public ElementParserAdapter caseUnioning(Unioning element) { + return new UnioningParserAdapter(element); + } + + @Override + public ElementParserAdapter caseUsage(Usage element) { + return new UsageParserAdapter(element); + } + + }; +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortConjugationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortConjugationParserAdapter.java new file mode 100644 index 000000000..054534ad7 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortConjugationParserAdapter.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.PortConjugation; +import org.omg.sysml.lang.sysml.PortDefinition; +import org.omg.sysml.lang.sysml.ConjugatedPortDefinition; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class PortConjugationParserAdapter extends ConjugationParserAdapter { + + public PortConjugationParserAdapter(PortConjugation element) { + super(element); + } + + @Override + public PortConjugation getTarget() { + return (PortConjugation)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + + PortConjugation obj = getTarget(); + + // If the originalPortDefinition is empty, then set it to the owner of the conjugatedPortDefinition + // (if that is a PortDefinition). + Object originalPortDefinition = obj.eGet(SysMLPackage.Literals.PORT_CONJUGATION__ORIGINAL_PORT_DEFINITION, false); + if (originalPortDefinition == null) { + ConjugatedPortDefinition conjugatedPortDefinition = obj.getConjugatedPortDefinition(); + if (conjugatedPortDefinition != null) { + Element conjugatedPortDefinitionOwner = conjugatedPortDefinition.getOwner(); + if (conjugatedPortDefinitionOwner instanceof PortDefinition) { + obj.setOriginalPortDefinition((PortDefinition)conjugatedPortDefinitionOwner); + } + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortUsageParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortUsageParserAdapter.java new file mode 100644 index 000000000..df5693eb4 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortUsageParserAdapter.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.ecore.EObject; +import org.omg.sysml.lang.sysml.PortDefinition; +import org.omg.sysml.lang.sysml.PortUsage; +import org.omg.sysml.util.UsageUtil; + +public class PortUsageParserAdapter extends UsageParserAdapter { + + public PortUsageParserAdapter(PortUsage element) { + super(element); + } + + @Override + public PortUsage getTarget() { + return (PortUsage)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + PortUsage target = getTarget(); + EObject featuringType = UsageUtil.getExpectedFeaturingTypeOf(target); + if (!(featuringType instanceof PortDefinition || featuringType instanceof PortUsage)) { + target.setIsComposite(false); + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/RedefinitionParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/RedefinitionParserAdapter.java new file mode 100644 index 000000000..f24a8b514 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/RedefinitionParserAdapter.java @@ -0,0 +1,58 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.Redefinition; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class RedefinitionParserAdapter extends SubsettingParserAdapter { + + public RedefinitionParserAdapter(Redefinition element) { + super(element); + } + + @Override + public Redefinition getTarget() { + return (Redefinition)super.getTarget(); + } + + @Override + public void postProcess() { + Redefinition obj = getTarget(); + + // If the redefiningFeature is empty, then set it to the owningRelatedElement, if that is a Feature. + // Otherwise, set it to the first ownedRelatedElement (which will be a Feature chain). + Object redefiningFeature = obj.eGet(SysMLPackage.Literals.REDEFINITION__REDEFINING_FEATURE, false); + if (redefiningFeature == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Feature) { + obj.setRedefiningFeature((Feature) owner); + } else { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setRedefiningFeature((Feature)ownedRelatedElements.get(0)); + } + } + } + + Object redefinedFeature = obj.eGet(SysMLPackage.Literals.REDEFINITION__REDEFINED_FEATURE, false); + if (redefinedFeature == null) { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setRedefinedFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ReferenceSubsettingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ReferenceSubsettingParserAdapter.java new file mode 100644 index 000000000..ff49159b6 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ReferenceSubsettingParserAdapter.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.ReferenceSubsetting; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class ReferenceSubsettingParserAdapter extends SubsettingParserAdapter { + + public ReferenceSubsettingParserAdapter(ReferenceSubsetting element) { + super(element); + } + + @Override + public ReferenceSubsetting getTarget() { + return (ReferenceSubsetting)super.getTarget(); + } + + @Override + public void postProcess() { + ReferenceSubsetting obj = getTarget(); + + // If the referencedFeature is empty, then set it to the last ownedRelatedElement + // (which will be a Feature chain). + Object referencedFeature = obj.eGet(SysMLPackage.Literals.REFERENCE_SUBSETTING__REFERENCED_FEATURE, false); + if (referencedFeature == null) { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setReferencedFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SpecializationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SpecializationParserAdapter.java new file mode 100644 index 000000000..1270a8db3 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SpecializationParserAdapter.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Specialization; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.SysMLPackage; +import org.omg.sysml.lang.sysml.Type; + +public class SpecializationParserAdapter extends ElementParserAdapter { + + public SpecializationParserAdapter(Specialization element) { + super(element); + } + + @Override + public Specialization getTarget() { + return (Specialization)super.getTarget(); + } + + @Override + public void postProcess() { + Specialization obj = getTarget(); + + // If general is empty, then set it to the last ownedRelatedElement (which will be a Feature chain). + Object general = obj.eGet(SysMLPackage.Literals.SPECIALIZATION__GENERAL, false); + if (general == null) { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setGeneral((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + + // If specific is empty, then set it to the owningRelatedElement, if that is a Type. + // Otherwise set it to the first ownedRelatedElement (which will be a FeatureChain). + Object specific = obj.eGet(SysMLPackage.Literals.SPECIALIZATION__SPECIFIC, false); + if (specific == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Type) { + obj.setSpecific((Type)owner); + } else { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setSpecific((Feature)ownedRelatedElements.get(0)); + } + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubclassificationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubclassificationParserAdapter.java new file mode 100644 index 000000000..e54afacdc --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubclassificationParserAdapter.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Classifier; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Subclassification; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class SubclassificationParserAdapter extends SpecializationParserAdapter { + + public SubclassificationParserAdapter(Subclassification element) { + super(element); + } + + @Override + public Subclassification getTarget() { + return (Subclassification)super.getTarget(); + } + + @Override + public void postProcess() { + Subclassification obj = getTarget(); + + // If the subclassifier is empty, then set it to the owningRelatedElement, + // if this is a Classifier. + Object subclassifier = obj.eGet(SysMLPackage.Literals.SUBCLASSIFICATION__SUBCLASSIFIER, false); + if (subclassifier == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Classifier) { + obj.setSubclassifier((Classifier) owner); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubsettingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubsettingParserAdapter.java new file mode 100644 index 000000000..023879be0 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubsettingParserAdapter.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.Subsetting; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class SubsettingParserAdapter extends SpecializationParserAdapter { + + public SubsettingParserAdapter(Subsetting element) { + super(element); + } + + @Override + public Subsetting getTarget() { + return (Subsetting)super.getTarget(); + } + + @Override + public void postProcess() { + Subsetting obj = getTarget(); + + // If the subsettedFeature is empty, then set it to the last ownedRelatedElement + // (which will be a Feature chain). + Object subsettedFeature = obj.eGet(SysMLPackage.Literals.SUBSETTING__SUBSETTED_FEATURE, false); + if (subsettedFeature == null) { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setSubsettedFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + + // If the subsettingFeature is empty, then set it to the owningRelatedFeature, if this is a Feature. + // Otherwise set it to the first ownedRelatedElement (which will be a Feature chain). + Object subsettingFeature = obj.eGet(SysMLPackage.Literals.SUBSETTING__SUBSETTING_FEATURE, false); + if (subsettingFeature == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Feature) { + obj.setSubsettingFeature((Feature) owner); + } else { + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setSubsettingFeature((Feature)ownedRelatedElements.get(0)); + } + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TextualRepresentationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TextualRepresentationParserAdapter.java new file mode 100644 index 000000000..b8fc332f9 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TextualRepresentationParserAdapter.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.TextualRepresentation; +import org.omg.sysml.util.ElementUtil; + +public class TextualRepresentationParserAdapter extends ElementParserAdapter { + + public TextualRepresentationParserAdapter(TextualRepresentation element) { + super(element); + } + + @Override + public TextualRepresentation getTarget() { + return (TextualRepresentation)super.getTarget(); + } + + @Override + public void postProcess() { + super.postProcess(); + TextualRepresentation target = getTarget(); + target.setLanguage(ElementUtil.unescapeString(target.getLanguage())); + target.setBody(ElementUtil.processCommentBody(target.getBody())); + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TypeFeaturingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TypeFeaturingParserAdapter.java new file mode 100644 index 000000000..4cbc1c0b2 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TypeFeaturingParserAdapter.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.TypeFeaturing; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class TypeFeaturingParserAdapter extends ElementParserAdapter { + + public TypeFeaturingParserAdapter(TypeFeaturing element) { + super(element); + } + + @Override + public TypeFeaturing getTarget() { + return (TypeFeaturing)super.getTarget(); + } + + @Override + public void postProcess() { + TypeFeaturing obj = getTarget(); + + // If the featureOfType is empty, then set it to the owningRelatedElement (if this is a Feature). + Object featureOfType = obj.eGet(SysMLPackage.Literals.TYPE_FEATURING__FEATURE_OF_TYPE, false); + if (featureOfType == null) { + Element owner = obj.getOwningRelatedElement(); + if (owner instanceof Feature) { + obj.setFeatureOfType((Feature)owner); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UnioningParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UnioningParserAdapter.java new file mode 100644 index 000000000..3cdef05c2 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UnioningParserAdapter.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.eclipse.emf.common.util.EList; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Feature; +import org.omg.sysml.lang.sysml.Unioning; +import org.omg.sysml.lang.sysml.SysMLPackage; + +public class UnioningParserAdapter extends ElementParserAdapter { + + public UnioningParserAdapter(Unioning element) { + super(element); + } + + @Override + public Unioning getTarget() { + return (Unioning)super.getTarget(); + } + + @Override + public void postProcess() { + Unioning obj = getTarget(); + + // If a Unioning is parsed targeting a Feature chain, then the unioningType will be empty, + // but the Unioning will own the unioningType. So, in this case, the unioningType should + // be set to the (last) ownedRelatedelement. + Object unioningType = obj.eGet(SysMLPackage.Literals.UNIONING__UNIONING_TYPE, false); + if (unioningType == null) { + // Handle a intersectingType that is a Feature chain. + EList ownedRelatedElements = obj.getOwnedRelatedElement(); + if (!ownedRelatedElements.isEmpty()) { + obj.setUnioningType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); + } + } + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UsageParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UsageParserAdapter.java new file mode 100644 index 000000000..15e6c1c08 --- /dev/null +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UsageParserAdapter.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.omg.kerml.xtext.linking; + +import org.omg.sysml.lang.sysml.Usage; +import org.omg.sysml.util.UsageUtil; + +public class UsageParserAdapter extends FeatureParserAdapter { + + public UsageParserAdapter(Usage element) { + super(element); + } + + @Override + public Usage getTarget() { + return (Usage)super.getTarget(); + } + + @Override + public void postProcess () { + super.postProcess(); + Usage target = getTarget(); + if (target.isVariation()) { + target.setIsAbstract(true); + } + if (target.getDirection() != null || target.isEnd() || !UsageUtil.hasFeaturingType(target)) { + target.setIsComposite(false); + } + } + + @Override + protected void setIsVariableIfConstant() { + } +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java index a03d9faa7..159fba73c 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java @@ -2,6 +2,7 @@ * SysML 2 Pilot Implementation * Copyright (c) 2020-2021, 2024, 2026 Model Driven Solutions, Inc. * Copyright (c) 2024 Budapest University of Technology and Economics + * 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 @@ -35,9 +36,9 @@ import org.eclipse.xtext.linking.lazy.LazyLinker; import org.eclipse.xtext.util.OnChangeEvictingCache; import org.eclipse.xtext.util.concurrent.IUnitOfWork; +import org.omg.kerml.xtext.linking.ParserAdapterFactory; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.SysMLPackage; -import org.omg.sysml.util.ElementUtil; import com.google.inject.Inject; @@ -70,11 +71,21 @@ protected void postProcessAll(EObject model) { cache.execWithoutCacheClear(model.eResource(), new IUnitOfWork.Void() { @Override public void process(Resource state) throws Exception { - TreeIterator iterator = getAllLinkableContents(model); - while (iterator.hasNext()) { - EObject obj = iterator.next(); - if (obj instanceof Element) { - ElementUtil.postProcess((Element)obj); + try { + TreeIterator iterator = getAllLinkableContents(model); + while (iterator.hasNext()) { + EObject obj = iterator.next(); + if (obj instanceof Element element) { + ParserAdapterFactory.getAdapter(element).postProcess(); + } + } + } finally { + TreeIterator iterator = getAllLinkableContents(model); + while (iterator.hasNext()) { + EObject obj = iterator.next(); + if (obj instanceof Element element) { + ParserAdapterFactory.removeAdapter(element); + } } } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/AnnotationAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/AnnotationAdapter.java index 65addbb32..1063a0e91 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/AnnotationAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/AnnotationAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024, 2025 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,10 +22,7 @@ package org.omg.sysml.adapter; -import org.omg.sysml.lang.sysml.AnnotatingElement; import org.omg.sysml.lang.sysml.Annotation; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.SysMLPackage; public class AnnotationAdapter extends RelationshipAdapter { @@ -37,18 +35,5 @@ public Annotation getTarget() { return (Annotation)super.getTarget(); } - @Override - public void postProcess() { - Annotation obj = getTarget(); - - // If the Annotation is not owned by an AnnotatingElement, then the annotatedElement is the owningRelatedElement. - Object annotatedElement = obj.eGet(SysMLPackage.Literals.ANNOTATION__ANNOTATED_ELEMENT, false); - if (annotatedElement == null) { - Element owningRelatedElement = obj.getOwningRelatedElement(); - if (!(owningRelatedElement instanceof AnnotatingElement)) { - obj.setAnnotatedElement(owningRelatedElement); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/CommentAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/CommentAdapter.java index 2d60c5dac..daad36341 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/CommentAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/CommentAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 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 @@ -19,7 +20,6 @@ package org.omg.sysml.adapter; import org.omg.sysml.lang.sysml.Comment; -import org.omg.sysml.util.ElementUtil; public class CommentAdapter extends AnnotatingElementAdapter { @@ -32,11 +32,4 @@ public Comment getTarget() { return (Comment)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - Comment target = getTarget(); - target.setLocale(ElementUtil.unescapeString(target.getLocale())); - target.setBody(ElementUtil.processCommentBody(target.getBody())); - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ConjugationAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ConjugationAdapter.java index 60a890242..b215db289 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ConjugationAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ConjugationAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Conjugation; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.SysMLPackage; -import org.omg.sysml.lang.sysml.Type; public class ConjugationAdapter extends RelationshipAdapter { @@ -38,33 +35,5 @@ public Conjugation getTarget() { return (Conjugation)super.getTarget(); } - @Override - public void postProcess() { - Conjugation obj = getTarget(); - - // If the conjugatedType is not set, then set it to the owningRelatedElement, if this is a Type, - // otherwise set it to the first ownedRelatedElement. - Object conjugatedType = obj.eGet(SysMLPackage.Literals.CONJUGATION__CONJUGATED_TYPE, false); - if (conjugatedType == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Type) { - obj.setConjugatedType((Type)owner); - } else { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setConjugatedType((Type)ownedRelatedElements.get(0)); - } - } - } - - // If the originalType is not set, set it to the last ownedRelatedElement. - Object originalType = obj.eGet(SysMLPackage.Literals.CONJUGATION__ORIGINAL_TYPE, false); - if (originalType == null) { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setOriginalType((Type)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DefinitionAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DefinitionAdapter.java index b6f92f314..c3046a8c6 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DefinitionAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DefinitionAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021, 2024, 2025 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 @@ -33,13 +34,5 @@ public Definition getTarget() { return (Definition)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - Definition target = getTarget(); - if (target.isVariation()) { - target.setIsAbstract(true); - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DependencyAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DependencyAdapter.java index 0cf60033e..81a4dd865 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DependencyAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DependencyAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 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 @@ -20,10 +21,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectResolvingEList; import org.omg.sysml.lang.sysml.Dependency; -import org.omg.sysml.lang.sysml.Element; public class DependencyAdapter extends RelationshipAdapter { @@ -35,13 +33,4 @@ public Dependency getTarget() { return (Dependency)super.getTarget(); } - public void postProcess() { - Dependency target = getTarget(); - - // Add all ownedRelatedElements to supplier. - EObjectResolvingEList suppliers = (EObjectResolvingEList)target.getSupplier(); - EList ownedRelatedElements = target.getOwnedRelatedElement(); - ownedRelatedElements.stream().forEachOrdered(suppliers::addUnique); - } - } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DifferencingAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DifferencingAdapter.java index ba3dbce90..2dad7b313 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DifferencingAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DifferencingAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Differencing; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; -import org.omg.sysml.lang.sysml.SysMLPackage; public class DifferencingAdapter extends RelationshipAdapter { @@ -38,21 +35,5 @@ public Differencing getTarget() { return (Differencing)super.getTarget(); } - @Override - public void postProcess() { - Differencing obj = getTarget(); - - // If a Differencing is parsed targeting a Feature chain, then the differencingType will be empty, - // but the Differencing will own the differencingType. So, in this case, the differencingType should - // be set to the (last) ownedRelatedelement. - Object differencingType = obj.eGet(SysMLPackage.Literals.DIFFERENCING__DIFFERENCING_TYPE, false); - if (differencingType == null) { - // Handle a differencingType that is a Feature chain. - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setDifferencingType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DisjoiningAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DisjoiningAdapter.java index 6df64089d..9bc642f24 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DisjoiningAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/DisjoiningAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,12 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Disjoining; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; -import org.omg.sysml.lang.sysml.SysMLPackage; -import org.omg.sysml.lang.sysml.Type; public class DisjoiningAdapter extends RelationshipAdapter { @@ -39,39 +35,5 @@ public Disjoining getTarget() { return (Disjoining)super.getTarget(); } - @Override - public void postProcess() { - Disjoining obj = getTarget(); - - // If a Disjoining is parsed targeting a Feature chain, then the disjoiningType will be empty, - // but the Disjoining will own the disjoiningType. So, in this case, the disjoiningType should - // be set to the (last) ownedRelatedelement. - Object disjoiningType = obj.eGet(SysMLPackage.Literals.DISJOINING__DISJOINING_TYPE, false); - if (disjoiningType == null) { - // Handle a disjoiningType that is a Feature chain. - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setDisjoiningType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - - // If the typedDisjoined (source) is empty, set it to the owningRelatedElement, if it is a Type. - // Otherwise, set it to the first ownedRelatedElement, to the first ownedRelatedElement, - // which will be a Feature chain. - Object typeDisjoined = obj.eGet(SysMLPackage.Literals.DISJOINING__TYPE_DISJOINED, false); - if (typeDisjoined == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Type) { - // Handle a Disjoining owned by the typeDisjoined. - obj.setTypeDisjoined((Type)owner); - } else { - // Handle a typeDisjoined that is a Feature chain. - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setTypeDisjoined((Feature)ownedRelatedElements.get(0)); - } - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ElementAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ElementAdapter.java index 454c0371d..7a72a2621 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ElementAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ElementAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021-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 @@ -108,14 +109,6 @@ public MetadataFeature getMetaclassFeature() { return metaclassFeature; } - // Parse post-processing - - public void postProcess() { - Element target = getTarget(); - target.setDeclaredName(ElementUtil.unescapeString(target.getDeclaredName())); - target.setDeclaredShortName(ElementUtil.unescapeString(target.getDeclaredShortName())); - } - // Transformation public boolean isTransformed() { diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/EndFeatureMembershipAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/EndFeatureMembershipAdapter.java index 268494295..bc65d4adb 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/EndFeatureMembershipAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/EndFeatureMembershipAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 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 @@ -21,7 +22,6 @@ package org.omg.sysml.adapter; import org.omg.sysml.lang.sysml.EndFeatureMembership; -import org.omg.sysml.lang.sysml.Feature; public class EndFeatureMembershipAdapter extends FeatureMembershipAdapter { @@ -37,14 +37,4 @@ public EndFeatureMembership getTarget() { /** * @satisfies validateEndFeatureMembershipIsEnd */ - @Override - public void postProcess() { - super.postProcess(); - EndFeatureMembership target = getTarget(); - Feature endFeature = target.getOwnedMemberFeature(); - if (endFeature != null) { - endFeature.setIsEnd(true); - } - } - } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureAdapter.java index d24992bd0..b332f58bf 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021-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 @@ -75,22 +76,6 @@ public Feature getTarget() { return (Feature)super.getTarget(); } - // Post-processing - - @Override - public void postProcess() { - super.postProcess(); - setIsVariableIfConstant(); - } - - // Note: Can be individually overridden. - protected void setIsVariableIfConstant() { - Feature target = getTarget(); - if (target.isConstant()) { - target.setIsVariable(true); - } - } - // Caching EList types = null; diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureInvertingAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureInvertingAdapter.java index 0e0674807..587deb293 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureInvertingAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureInvertingAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.FeatureInverting; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; -import org.omg.sysml.lang.sysml.SysMLPackage; public class FeatureInvertingAdapter extends RelationshipAdapter { @@ -38,38 +35,5 @@ public FeatureInverting getTarget() { return (FeatureInverting)super.getTarget(); } - @Override - public void postProcess() { - FeatureInverting obj = getTarget(); - - // If the featureInverted is empty, then set it to the owningRelatedElement of the FeatureInverting, - // if that is a Feature, otherwise set it to the first ownedRelatedElement (which will be a - // Feature chain). - Object featureInverted = obj.eGet(SysMLPackage.Literals.FEATURE_INVERTING__FEATURE_INVERTED, false); - if (featureInverted == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Feature) { - // Handle FeatureInverting owned by the featureInverted. - obj.setFeatureInverted((Feature)owner); - } else { - // Handle featureInverted that is a Feature chain. - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setFeatureInverted((Feature)ownedRelatedElements.get(0)); - } - } - } - - // If the invertingFeature is empty, then set it to the last ownedRelatedElement - // (which will be a Feature chain). - Object invertingFeature = obj.eGet(SysMLPackage.Literals.FEATURE_INVERTING__INVERTING_FEATURE, false); - if (invertingFeature == null) { - // Handle invertingFeature that is a Feature chain. - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setInvertingFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureTypingAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureTypingAdapter.java index 441e88661..065f143ed 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureTypingAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FeatureTypingAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.FeatureTyping; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; -import org.omg.sysml.lang.sysml.SysMLPackage; public class FeatureTypingAdapter extends SpecializationAdapter { @@ -38,28 +35,5 @@ public FeatureTyping getTarget() { return (FeatureTyping)super.getTarget(); } - @Override - public void postProcess() { - FeatureTyping obj = getTarget(); - - // If the type is empty, then set it to the first owned related element - // (which will be a Feature chain). - Object type = obj.eGet(SysMLPackage.Literals.FEATURE_TYPING__TYPE, false); - if (type == null) { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setType((Feature)ownedRelatedElements.get(0)); - } - } - - // If the typedFeature is empty, then set it to the owningRelatedElement (if that is a Feature). - Object typedFeature = obj.eGet(SysMLPackage.Literals.FEATURE_TYPING__TYPED_FEATURE, false); - if (typedFeature == null) { - Element owningRelatedElement = obj.getOwningRelatedElement(); - if (owningRelatedElement instanceof Feature) { - obj.setTypedFeature((Feature) owningRelatedElement); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FlowUsageAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FlowUsageAdapter.java index fc9c5bd9c..e27b46fe2 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FlowUsageAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/FlowUsageAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021-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 @@ -103,7 +104,6 @@ protected String getDefaultSupertype() { * (For a FlowUsage that is a message.) */ protected void makeMessageAbstract() { - super.postProcess(); FlowUsage target = getTarget(); if (UsageUtil.isMessageConnection(target) && target.getRelatedFeature().size() < 2) { target.setIsAbstract(true); diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ImportAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ImportAdapter.java index 4f5aeb141..879dbe219 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ImportAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ImportAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024, 2025 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 @@ -26,8 +27,6 @@ import org.omg.sysml.lang.sysml.Import; import org.omg.sysml.lang.sysml.Membership; import org.omg.sysml.lang.sysml.Namespace; -import org.omg.sysml.lang.sysml.NamespaceImport; -import org.omg.sysml.lang.sysml.VisibilityKind; public abstract class ImportAdapter extends RelationshipAdapter { @@ -39,17 +38,6 @@ public Import getTarget() { return (Import)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - - // If the target Import is for a filtered import package, set its visibility to PUBLIC. - Import target = getTarget(); - Namespace owningNamespace = target.getImportOwningNamespace(); - if (owningNamespace != null && owningNamespace.getOwningRelationship() instanceof NamespaceImport) { - target.setVisibility(VisibilityKind.PUBLIC); - } - } // Additional operations diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/IntersectingAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/IntersectingAdapter.java index b7e208a6c..e596d5037 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/IntersectingAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/IntersectingAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Intersecting; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; -import org.omg.sysml.lang.sysml.SysMLPackage; public class IntersectingAdapter extends RelationshipAdapter { @@ -38,21 +35,5 @@ public Intersecting getTarget() { return (Intersecting)super.getTarget(); } - @Override - public void postProcess() { - Intersecting obj = getTarget(); - - // If a Intersecting is parsed targeting a Feature chain, then the intersectingType will be empty, - // but the Intersecting will own the intersectingType. So, in this case, the intersectingType should - // be set to the (last) ownedRelatedelement. - Object intersectingType = obj.eGet(SysMLPackage.Literals.INTERSECTING__INTERSECTING_TYPE, false); - if (intersectingType == null) { - // Handle a intersectingType that is a Feature chain. - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setIntersectingType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/LiteralStringAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/LiteralStringAdapter.java index 44f69f58b..b018161d0 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/LiteralStringAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/LiteralStringAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 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 @@ -21,7 +22,6 @@ package org.omg.sysml.adapter; import org.omg.sysml.lang.sysml.LiteralString; -import org.omg.sysml.util.ElementUtil; public class LiteralStringAdapter extends ExpressionAdapter { @@ -34,11 +34,5 @@ public LiteralString getTarget() { return (LiteralString)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - LiteralString target = getTarget(); - target.setValue(ElementUtil.unescapeString(target.getValue())); - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/MembershipAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/MembershipAdapter.java index 145f8370c..403da4bc3 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/MembershipAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/MembershipAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021-2022, 2024 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 @@ -21,8 +22,6 @@ package org.omg.sysml.adapter; import org.omg.sysml.lang.sysml.Membership; -import org.omg.sysml.lang.sysml.OwningMembership; -import org.omg.sysml.util.ElementUtil; public class MembershipAdapter extends RelationshipAdapter { @@ -35,14 +34,5 @@ public Membership getTarget() { return (Membership)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - Membership target = getTarget(); - if (!(target instanceof OwningMembership)) { - target.setMemberName(ElementUtil.unescapeString(target.getMemberName())); - target.setMemberShortName(ElementUtil.unescapeString(target.getMemberShortName())); - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/NamespaceImportAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/NamespaceImportAdapter.java index c10f8936a..a2aa76a10 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/NamespaceImportAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/NamespaceImportAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024, 2025 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -25,10 +26,8 @@ import java.util.Set; import org.eclipse.emf.common.util.EList; -import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.Membership; import org.omg.sysml.lang.sysml.NamespaceImport; -import org.omg.sysml.lang.sysml.SysMLPackage; import org.omg.sysml.util.NamespaceUtil; import org.omg.sysml.lang.sysml.Namespace; @@ -42,24 +41,6 @@ public NamespaceImport getTarget() { return (NamespaceImport)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - - NamespaceImport obj = getTarget(); - // If importedNamespace is empty, then set it to the first ownedRelatedElement, if this is a namespace - // (filling in the implicit import for a filter package). Otherwise, set it to the importOwningNamspace. - Object importedNamespace = obj.eGet(SysMLPackage.Literals.NAMESPACE_IMPORT__IMPORTED_NAMESPACE, false); - if (importedNamespace == null) { - EList ownedRelatedElement = obj.getOwnedRelatedElement(); - if (!ownedRelatedElement.isEmpty() && ownedRelatedElement.get(0) instanceof Namespace) { - // Fill in the implicit import for a filter package. - obj.setImportedNamespace((Namespace)ownedRelatedElement.get(0)); - } else { - obj.setImportedNamespace(obj.getImportOwningNamespace()); - } - } - } @Override public void importMemberships(EList importedMemberships, Set excluded) { diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/OccurrenceUsageAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/OccurrenceUsageAdapter.java index 65cd0d56f..efff98bca 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/OccurrenceUsageAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/OccurrenceUsageAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021, 2023-2025 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 @@ -34,18 +35,6 @@ public OccurrenceUsage getTarget() { return (OccurrenceUsage)super.getTarget(); } - // Post-processing - - @Override - public void postProcess() { - super.postProcess(); - - OccurrenceUsage self = getTarget(); - if (self.getPortionKind() != null) { - self.setIsPortion(true); - } - } - // Implicit Generalization /** diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ParameterMembershipAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ParameterMembershipAdapter.java index 4c4283ef6..587882323 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ParameterMembershipAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ParameterMembershipAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 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 @@ -20,7 +21,6 @@ package org.omg.sysml.adapter; -import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.ParameterMembership; public class ParameterMembershipAdapter extends FeatureMembershipAdapter { @@ -34,14 +34,4 @@ public ParameterMembership getTarget() { return (ParameterMembership)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - ParameterMembership target = getTarget(); - Feature parameter = target.getOwnedMemberParameter(); - if (parameter != null) { - parameter.setDirection(target.parameterDirection()); - } - } - } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortConjugationAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortConjugationAdapter.java index 80a275eb6..2f9416528 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortConjugationAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortConjugationAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -22,10 +23,6 @@ package org.omg.sysml.adapter; import org.omg.sysml.lang.sysml.PortConjugation; -import org.omg.sysml.lang.sysml.PortDefinition; -import org.omg.sysml.lang.sysml.ConjugatedPortDefinition; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.SysMLPackage; public class PortConjugationAdapter extends ConjugationAdapter { @@ -38,24 +35,5 @@ public PortConjugation getTarget() { return (PortConjugation)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - - PortConjugation obj = getTarget(); - - // If the originalPortDefinition is empty, then set it to the owner of the conjugatedPortDefinition - // (if that is a PortDefinition). - Object originalPortDefinition = obj.eGet(SysMLPackage.Literals.PORT_CONJUGATION__ORIGINAL_PORT_DEFINITION, false); - if (originalPortDefinition == null) { - ConjugatedPortDefinition conjugatedPortDefinition = obj.getConjugatedPortDefinition(); - if (conjugatedPortDefinition != null) { - Element conjugatedPortDefinitionOwner = conjugatedPortDefinition.getOwner(); - if (conjugatedPortDefinitionOwner instanceof PortDefinition) { - obj.setOriginalPortDefinition((PortDefinition)conjugatedPortDefinitionOwner); - } - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortUsageAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortUsageAdapter.java index a52f5e2eb..e5e7502ff 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortUsageAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/PortUsageAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021, 2022, 2025, 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 @@ -20,13 +21,11 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.ecore.EObject; import org.omg.sysml.lang.sysml.PartDefinition; import org.omg.sysml.lang.sysml.PartUsage; import org.omg.sysml.lang.sysml.PortDefinition; import org.omg.sysml.lang.sysml.PortUsage; import org.omg.sysml.lang.sysml.Type; -import org.omg.sysml.util.UsageUtil; public class PortUsageAdapter extends UsageAdapter { @@ -41,14 +40,6 @@ public PortUsage getTarget() { /** * @satisfies validatePortUsageIsReference */ - public void postProcess() { - super.postProcess(); - PortUsage target = getTarget(); - EObject featuringType = UsageUtil.getExpectedFeaturingTypeOf(target); - if (!(featuringType instanceof PortDefinition || featuringType instanceof PortUsage)) { - target.setIsComposite(false); - } - } // Implicit Generalization diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/RedefinitionAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/RedefinitionAdapter.java index 0eeccb4e0..9c00acecf 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/RedefinitionAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/RedefinitionAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.Redefinition; -import org.omg.sysml.lang.sysml.SysMLPackage; public class RedefinitionAdapter extends SubsettingAdapter { @@ -38,32 +35,5 @@ public Redefinition getTarget() { return (Redefinition)super.getTarget(); } - @Override - public void postProcess() { - Redefinition obj = getTarget(); - - // If the redefiningFeature is empty, then set it to the owningRelatedElement, if that is a Feature. - // Otherwise, set it to the first ownedRelatedElement (which will be a Feature chain). - Object redefiningFeature = obj.eGet(SysMLPackage.Literals.REDEFINITION__REDEFINING_FEATURE, false); - if (redefiningFeature == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Feature) { - obj.setRedefiningFeature((Feature) owner); - } else { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setRedefiningFeature((Feature)ownedRelatedElements.get(0)); - } - } - } - - Object redefinedFeature = obj.eGet(SysMLPackage.Literals.REDEFINITION__REDEFINED_FEATURE, false); - if (redefinedFeature == null) { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setRedefinedFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ReferenceSubsettingAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ReferenceSubsettingAdapter.java index 781f86a4e..f8b8b99d2 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ReferenceSubsettingAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/ReferenceSubsettingAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.ReferenceSubsetting; -import org.omg.sysml.lang.sysml.SysMLPackage; public class ReferenceSubsettingAdapter extends SubsettingAdapter { @@ -38,19 +35,5 @@ public ReferenceSubsetting getTarget() { return (ReferenceSubsetting)super.getTarget(); } - @Override - public void postProcess() { - ReferenceSubsetting obj = getTarget(); - - // If the referencedFeature is empty, then set it to the last ownedRelatedElement - // (which will be a Feature chain). - Object referencedFeature = obj.eGet(SysMLPackage.Literals.REFERENCE_SUBSETTING__REFERENCED_FEATURE, false); - if (referencedFeature == null) { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setReferencedFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SpecializationAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SpecializationAdapter.java index cba4bbde6..5125ea768 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SpecializationAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SpecializationAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,12 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Specialization; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; -import org.omg.sysml.lang.sysml.SysMLPackage; -import org.omg.sysml.lang.sysml.Type; public class SpecializationAdapter extends RelationshipAdapter { @@ -39,32 +35,5 @@ public Specialization getTarget() { return (Specialization)super.getTarget(); } - public void postProcess() { - Specialization obj = getTarget(); - - // If general is empty, then set it to the last ownedRelatedElement (which will be a Feature chain). - Object general = obj.eGet(SysMLPackage.Literals.SPECIALIZATION__GENERAL, false); - if (general == null) { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setGeneral((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - - // If specific is empty, then set it to the owningRelatedElement, if that is a Type. - // Otherwise set it to the first ownedRelatedElement (which will be a FeatureChain). - Object specific = obj.eGet(SysMLPackage.Literals.SPECIALIZATION__SPECIFIC, false); - if (specific == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Type) { - obj.setSpecific((Type)owner); - } else { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setSpecific((Feature)ownedRelatedElements.get(0)); - } - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubclassificationAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubclassificationAdapter.java index 4014d6398..6e6ada6e7 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubclassificationAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubclassificationAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,10 +22,7 @@ package org.omg.sysml.adapter; -import org.omg.sysml.lang.sysml.Classifier; -import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.Subclassification; -import org.omg.sysml.lang.sysml.SysMLPackage; public class SubclassificationAdapter extends SpecializationAdapter { @@ -37,19 +35,5 @@ public Subclassification getTarget() { return (Subclassification)super.getTarget(); } - @Override - public void postProcess() { - Subclassification obj = getTarget(); - - // If the subclassifier is empty, then set it to the owningRelatedElement, - // if this is a Classifier. - Object subclassifier = obj.eGet(SysMLPackage.Literals.SUBCLASSIFICATION__SUBCLASSIFIER, false); - if (subclassifier == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Classifier) { - obj.setSubclassifier((Classifier) owner); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubsettingAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubsettingAdapter.java index 7578e47e5..5c5a143fa 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubsettingAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/SubsettingAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.Subsetting; -import org.omg.sysml.lang.sysml.SysMLPackage; public class SubsettingAdapter extends SpecializationAdapter { @@ -38,34 +35,5 @@ public Subsetting getTarget() { return (Subsetting)super.getTarget(); } - @Override - public void postProcess() { - Subsetting obj = getTarget(); - - // If the subsettedFeature is empty, then set it to the last ownedRelatedElement - // (which will be a Feature chain). - Object subsettedFeature = obj.eGet(SysMLPackage.Literals.SUBSETTING__SUBSETTED_FEATURE, false); - if (subsettedFeature == null) { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setSubsettedFeature((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - - // If the subsettingFeature is empty, then set it to the owningRelatedFeature, if this is a Feature. - // Otherwise set it to the first ownedRelatedElement (which will be a Feature chain). - Object subsettingFeature = obj.eGet(SysMLPackage.Literals.SUBSETTING__SUBSETTING_FEATURE, false); - if (subsettingFeature == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Feature) { - obj.setSubsettingFeature((Feature) owner); - } else { - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setSubsettingFeature((Feature)ownedRelatedElements.get(0)); - } - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TextualRepresentationAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TextualRepresentationAdapter.java index 7d8c67864..909f806d4 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TextualRepresentationAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TextualRepresentationAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 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 @@ -19,7 +20,6 @@ package org.omg.sysml.adapter; import org.omg.sysml.lang.sysml.TextualRepresentation; -import org.omg.sysml.util.ElementUtil; public class TextualRepresentationAdapter extends AnnotatingElementAdapter { @@ -32,11 +32,4 @@ public TextualRepresentation getTarget() { return (TextualRepresentation)super.getTarget(); } - @Override - public void postProcess() { - super.postProcess(); - TextualRepresentation target = getTarget(); - target.setLanguage(ElementUtil.unescapeString(target.getLanguage())); - target.setBody(ElementUtil.processCommentBody(target.getBody())); - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TypeFeaturingAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TypeFeaturingAdapter.java index 6d539361f..c88004699 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TypeFeaturingAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/TypeFeaturingAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,10 +22,7 @@ package org.omg.sysml.adapter; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.TypeFeaturing; -import org.omg.sysml.lang.sysml.SysMLPackage; public class TypeFeaturingAdapter extends RelationshipAdapter { @@ -37,18 +35,5 @@ public TypeFeaturing getTarget() { return (TypeFeaturing)super.getTarget(); } - @Override - public void postProcess() { - TypeFeaturing obj = getTarget(); - - // If the featureOfType is empty, then set it to the owningRelatedElement (if this is a Feature). - Object featureOfType = obj.eGet(SysMLPackage.Literals.TYPE_FEATURING__FEATURE_OF_TYPE, false); - if (featureOfType == null) { - Element owner = obj.getOwningRelatedElement(); - if (owner instanceof Feature) { - obj.setFeatureOfType((Feature)owner); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UnioningAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UnioningAdapter.java index 21c49b75d..72e58bf0c 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UnioningAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UnioningAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2024 Model Driven Solutions, Inc. + * Copyright (c) 2026 Obeo * Copyright (c) 2024 Budapest University of Technology and Economics * * This program is free software: you can redistribute it and/or modify @@ -21,11 +22,7 @@ package org.omg.sysml.adapter; -import org.eclipse.emf.common.util.EList; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.Unioning; -import org.omg.sysml.lang.sysml.SysMLPackage; public class UnioningAdapter extends RelationshipAdapter { @@ -38,21 +35,5 @@ public Unioning getTarget() { return (Unioning)super.getTarget(); } - @Override - public void postProcess() { - Unioning obj = getTarget(); - - // If a Unioning is parsed targeting a Feature chain, then the unioningType will be empty, - // but the Unioning will own the unioningType. So, in this case, the unioningType should - // be set to the (last) ownedRelatedelement. - Object unioningType = obj.eGet(SysMLPackage.Literals.UNIONING__UNIONING_TYPE, false); - if (unioningType == null) { - // Handle a intersectingType that is a Feature chain. - EList ownedRelatedElements = obj.getOwnedRelatedElement(); - if (!ownedRelatedElements.isEmpty()) { - obj.setUnioningType((Feature)ownedRelatedElements.get(ownedRelatedElements.size() - 1)); - } - } - } } diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UsageAdapter.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UsageAdapter.java index 97f23f2d4..6f89ca086 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UsageAdapter.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/adapter/UsageAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2021-2025, 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 @@ -50,27 +51,6 @@ public Usage getTarget() { return (Usage)super.getTarget(); } - // Post-processing - - /** - * @satisfies validateUsageIsReferential - */ - @Override - public void postProcess () { - super.postProcess(); - Usage target = getTarget(); - if (target.isVariation()) { - target.setIsAbstract(true); - } - if (target.getDirection() != null || target.isEnd() || !UsageUtil.hasFeaturingType(target)) { - target.setIsComposite(false); - } - } - - @Override - protected void setIsVariableIfConstant() { - } - // Caching private Boolean mayTimeVary = null; diff --git a/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/ElementUtil.java b/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/ElementUtil.java index f50987559..be418e844 100644 --- a/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/ElementUtil.java +++ b/org.omg.sysml.logic/src/main/java/org/omg/sysml/util/ElementUtil.java @@ -2,6 +2,7 @@ * SysML 2 Pilot Implementation * Copyright (c) 2019, 2020, 2022, 2024, 2025 Model Driven Solutions, Inc. * Copyright (c) 2023 Mgnite 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 @@ -331,12 +332,6 @@ public static void setElementIdOf(Element element, String elementId) { getElementAdapter(element).setElementId(elementId); } - // Parse post-processing - - public static void postProcess(Element element) { - getElementAdapter(element).postProcess(); - } - // Transformation public static void transformAll(ResourceSet resourceSet, boolean addImplicitElements) { diff --git a/org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/UsagePostProcessTest.java b/org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/UsagePostProcessTest.java deleted file mode 100644 index db261dac0..000000000 --- a/org.omg.sysml.logic/src/test/java/org/omg/sysml/logic/UsagePostProcessTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/******************************************************************************* - * SysML 2 Pilot Implementation - * Copyright (c) 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 - * the Eclipse Foundation, version 2 of the License. - * (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 - * Eclipse Public License for more details. - * - * You should have received a copy of theEclipse Public License - * along with this program. If not, see . - * - * @license EPL-2.0 - * - *******************************************************************************/ -package org.omg.sysml.logic; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.lang.reflect.InvocationTargetException; - -import org.eclipse.emf.ecore.EClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.FeatureDirectionKind; -import org.omg.sysml.lang.sysml.Namespace; -import org.omg.sysml.lang.sysml.Package; -import org.omg.sysml.lang.sysml.SysMLFactory; -import org.omg.sysml.lang.sysml.SysMLPackage; -import org.omg.sysml.lang.sysml.Usage; -import org.omg.sysml.lang.sysml.VariantMembership; -import org.omg.sysml.util.ElementUtil; -import org.omg.sysml.util.NamespaceUtil; -import org.omg.sysml.util.TypeUtil; - -public class UsagePostProcessTest { - - @BeforeClass - public static void setUp() { - SysMLLogicStandaloneSetup.doSetup(); - SysMLPackage.eINSTANCE.eClass(); - } - - /** - * Test that Usage.postProcess sets the property "composite" to false in appropriate cases. - * @throws InvocationTargetException - */ - @Test - public void settingCompositeToFalse() throws InvocationTargetException { - /* - * package Test {\n" - * part p { - * attribute a; - * part x; - * in part y - * variation part z { - * variant variation part u { - * variant part v; - * } - * variant port w; - * } - * } - * variation part q { - * variant part r; - * } - * } - */ - Package test = (Package) createElement(SysMLPackage.Literals.PACKAGE, "test", null); - Usage p = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "p", test); - Usage a = (Usage) createElement(SysMLPackage.Literals.ATTRIBUTE_USAGE, "a", p); - Usage x = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "x", p); - Usage y = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "y", p); - y.setDirection(FeatureDirectionKind.IN); - Usage z = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "z", p); - z.setIsVariation(true); - Usage u = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "u", z); - u.setIsVariation(true); - Usage v = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "v", u); - Usage w = (Usage) createElement(SysMLPackage.Literals.PORT_USAGE, "w", u); - Usage q = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "q", test); - q.setIsVariation(true); - Usage r = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "r", q); - - // Post-process after creating the entire model. - postProcess(p, a, x, y, z, u, v, w, q, r); - - assertTrue(p.isReference()); - assertTrue(a.isReference()); - assertFalse(x.isReference()); - assertTrue(y.isReference()); - assertFalse(z.isReference()); - assertFalse(u.isReference()); - assertFalse(v.isReference()); - assertTrue(w.isReference()); - assertTrue(q.isReference()); - assertTrue(r.isReference()); - } - - /** - * Create an Element with the given eClass, name and parent. If the created Element and the parent - * are both Usages, then the Element is added to the parent as a variant, if the parent is a variation, - * or as an ownedFeature, if the parent is not a variation. Otherwise, the Element is added as an - * ownedMember of the parent. (Adding ownedFeatures of Definitions is not currently needed.) - */ - protected static Element createElement(EClass eClass, String name, Namespace parent) { - Element element = (Element)SysMLFactory.eINSTANCE.create(eClass); - element.setDeclaredName(name); - if (element instanceof Usage usage && parent instanceof Usage parentUsage) { - if (parentUsage.isVariation()) { - VariantMembership membership = SysMLFactory.eINSTANCE.createVariantMembership(); - membership.setOwnedVariantUsage(usage); - parentUsage.getOwnedRelationship().add(membership); - } else { - TypeUtil.addOwnedFeatureTo(parentUsage, usage); - } - } else if (parent != null) { - NamespaceUtil.addOwnedMemberTo(parent, element); - } - return element; - } - - /** - * Call the postProcess method of the ElementAdapter of the given array of elements. - */ - protected static void postProcess(Element... elements) { - for (Element element: elements) { - ElementUtil.getElementAdapter(element).postProcess(); - } - } - -} From 96e6156a8bd96470a09606ac28438d0474fbc4c8 Mon Sep 17 00:00:00 2001 From: Arthur Daussy Date: Tue, 1 Sep 2026 10:13:49 +0200 Subject: [PATCH 2/5] STR6RI-953 Move adapters dedicated package --- .../xpect/tests/linking/ParserAdapterTest.java | 16 ++++++++-------- org.omg.kerml.xtext/META-INF/MANIFEST.MF | 1 + .../AnnotationParserAdapter.java | 2 +- .../CommentParserAdapter.java | 2 +- .../ConjugationParserAdapter.java | 2 +- .../DefinitionParserAdapter.java | 2 +- .../DependencyParserAdapter.java | 2 +- .../DifferencingParserAdapter.java | 2 +- .../DisjoiningParserAdapter.java | 2 +- .../ElementParserAdapter.java | 2 +- .../EndFeatureMembershipParserAdapter.java | 2 +- .../FeatureInvertingParserAdapter.java | 2 +- .../FeatureParserAdapter.java | 2 +- .../FeatureTypingParserAdapter.java | 2 +- .../ImportParserAdapter.java | 2 +- .../IntersectingParserAdapter.java | 2 +- .../LiteralStringParserAdapter.java | 2 +- .../MembershipParserAdapter.java | 2 +- .../NamespaceImportParserAdapter.java | 2 +- .../OccurrenceUsageParserAdapter.java | 2 +- .../ParameterMembershipParserAdapter.java | 2 +- .../ParserAdapterFactory.java | 2 +- .../PortConjugationParserAdapter.java | 2 +- .../PortUsageParserAdapter.java | 2 +- .../RedefinitionParserAdapter.java | 2 +- .../ReferenceSubsettingParserAdapter.java | 2 +- .../SpecializationParserAdapter.java | 2 +- .../SubclassificationParserAdapter.java | 2 +- .../SubsettingParserAdapter.java | 2 +- .../TextualRepresentationParserAdapter.java | 2 +- .../TypeFeaturingParserAdapter.java | 2 +- .../UnioningParserAdapter.java | 2 +- .../{linking => adapter}/UsageParserAdapter.java | 2 +- .../org/omg/kerml/xtext/scoping/KerMLLinker.java | 2 +- .../semantics/tests/UsagePostProcessTest.java | 2 +- 35 files changed, 42 insertions(+), 41 deletions(-) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/AnnotationParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/CommentParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/ConjugationParserAdapter.java (98%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/DefinitionParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/DependencyParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/DifferencingParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/DisjoiningParserAdapter.java (98%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/ElementParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/EndFeatureMembershipParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/FeatureInvertingParserAdapter.java (98%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/FeatureParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/FeatureTypingParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/ImportParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/IntersectingParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/LiteralStringParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/MembershipParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/NamespaceImportParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/OccurrenceUsageParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/ParameterMembershipParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/ParserAdapterFactory.java (99%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/PortConjugationParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/PortUsageParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/RedefinitionParserAdapter.java (98%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/ReferenceSubsettingParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/SpecializationParserAdapter.java (98%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/SubclassificationParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/SubsettingParserAdapter.java (98%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/TextualRepresentationParserAdapter.java (96%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/TypeFeaturingParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/UnioningParserAdapter.java (97%) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/{linking => adapter}/UsageParserAdapter.java (97%) diff --git a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java index 62965bc46..99140b34a 100644 --- a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java +++ b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java @@ -11,21 +11,21 @@ package org.omg.kerml.xpect.tests.linking; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.lang.reflect.InvocationTargetException; import org.junit.BeforeClass; import org.junit.Test; -import org.omg.kerml.xtext.linking.ElementParserAdapter; -import org.omg.kerml.xtext.linking.ImportParserAdapter; -import org.omg.kerml.xtext.linking.LiteralStringParserAdapter; -import org.omg.kerml.xtext.linking.OccurrenceUsageParserAdapter; -import org.omg.kerml.xtext.linking.ParserAdapterFactory; -import org.omg.kerml.xtext.linking.PortUsageParserAdapter; -import org.omg.kerml.xtext.linking.RedefinitionParserAdapter; +import org.omg.kerml.xtext.adapter.ElementParserAdapter; +import org.omg.kerml.xtext.adapter.ImportParserAdapter; +import org.omg.kerml.xtext.adapter.LiteralStringParserAdapter; +import org.omg.kerml.xtext.adapter.OccurrenceUsageParserAdapter; +import org.omg.kerml.xtext.adapter.ParserAdapterFactory; +import org.omg.kerml.xtext.adapter.PortUsageParserAdapter; +import org.omg.kerml.xtext.adapter.RedefinitionParserAdapter; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.FeatureDirectionKind; diff --git a/org.omg.kerml.xtext/META-INF/MANIFEST.MF b/org.omg.kerml.xtext/META-INF/MANIFEST.MF index e76ec65cb..3cc9aa600 100644 --- a/org.omg.kerml.xtext/META-INF/MANIFEST.MF +++ b/org.omg.kerml.xtext/META-INF/MANIFEST.MF @@ -23,6 +23,7 @@ Require-Bundle: org.eclipse.xtext, org.eclipse.xtext.common.types, org.objectweb.asm;bundle-version="9.3.0";resolution:=optional Export-Package: org.omg.kerml.xtext, + org.omg.kerml.xtext.adapter, org.omg.kerml.xtext.conversion, org.omg.kerml.xtext.generator, org.omg.kerml.xtext.library, diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/AnnotationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/AnnotationParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java index 9139deda7..bb8f113b9 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/AnnotationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.AnnotatingElement; import org.omg.sysml.lang.sysml.Annotation; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/CommentParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/CommentParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/CommentParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/CommentParserAdapter.java index 0c3a1d2af..8069d065d 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/CommentParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/CommentParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Comment; import org.omg.sysml.util.ElementUtil; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ConjugationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java similarity index 98% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ConjugationParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java index ec0863009..8ef9d0d4c 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ConjugationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Conjugation; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DefinitionParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DefinitionParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DefinitionParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DefinitionParserAdapter.java index e572b8f08..a339f4d69 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DefinitionParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DefinitionParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Definition; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DependencyParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DependencyParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DependencyParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DependencyParserAdapter.java index 47a4d9655..af7062fef 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DependencyParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DependencyParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.util.EObjectResolvingEList; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DifferencingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DifferencingParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DifferencingParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DifferencingParserAdapter.java index d5c0dee09..84beb8797 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DifferencingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DifferencingParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Differencing; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DisjoiningParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java similarity index 98% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DisjoiningParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java index 92cdd3511..2a2379508 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/DisjoiningParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Disjoining; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ElementParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ElementParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ElementParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ElementParserAdapter.java index 437e3b017..c5fc03579 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ElementParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ElementParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.omg.sysml.lang.sysml.Element; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/EndFeatureMembershipParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/EndFeatureMembershipParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/EndFeatureMembershipParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/EndFeatureMembershipParserAdapter.java index 80308fdbb..46def0642 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/EndFeatureMembershipParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/EndFeatureMembershipParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.EndFeatureMembership; import org.omg.sysml.lang.sysml.Feature; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureInvertingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureInvertingParserAdapter.java similarity index 98% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureInvertingParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureInvertingParserAdapter.java index 139adae04..4d10528a8 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureInvertingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureInvertingParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.FeatureInverting; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureParserAdapter.java index 13a058424..197bf7119 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Feature; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureTypingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureTypingParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java index 57d479c57..9c7a14b64 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/FeatureTypingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.FeatureTyping; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ImportParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ImportParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ImportParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ImportParserAdapter.java index a93c81a6b..a517a7bc4 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ImportParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ImportParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Import; import org.omg.sysml.lang.sysml.Namespace; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/IntersectingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/IntersectingParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/IntersectingParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/IntersectingParserAdapter.java index 1546bc90b..7fd04a25a 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/IntersectingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/IntersectingParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Intersecting; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/LiteralStringParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/LiteralStringParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/LiteralStringParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/LiteralStringParserAdapter.java index b17918e32..fc68b8b92 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/LiteralStringParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/LiteralStringParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.LiteralString; import org.omg.sysml.util.ElementUtil; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/MembershipParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/MembershipParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/MembershipParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/MembershipParserAdapter.java index d36df542d..830ed30e9 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/MembershipParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/MembershipParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Membership; import org.omg.sysml.lang.sysml.OwningMembership; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/NamespaceImportParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/NamespaceImportParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/NamespaceImportParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/NamespaceImportParserAdapter.java index 9365e265a..83bbcf62c 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/NamespaceImportParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/NamespaceImportParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Element; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/OccurrenceUsageParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/OccurrenceUsageParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/OccurrenceUsageParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/OccurrenceUsageParserAdapter.java index 19ac9cd48..f5a00feaa 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/OccurrenceUsageParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/OccurrenceUsageParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.OccurrenceUsage; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParameterMembershipParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParameterMembershipParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParameterMembershipParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParameterMembershipParserAdapter.java index 0a8c9e699..e51881a13 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParameterMembershipParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParameterMembershipParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.ParameterMembership; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParserAdapterFactory.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParserAdapterFactory.java similarity index 99% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParserAdapterFactory.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParserAdapterFactory.java index 965c5c018..32834b57e 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ParserAdapterFactory.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParserAdapterFactory.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import java.util.Optional; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortConjugationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortConjugationParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortConjugationParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortConjugationParserAdapter.java index 054534ad7..70d32bc4e 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortConjugationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortConjugationParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.PortConjugation; import org.omg.sysml.lang.sysml.PortDefinition; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortUsageParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortUsageParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortUsageParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortUsageParserAdapter.java index df5693eb4..7a52d8a14 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/PortUsageParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortUsageParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.ecore.EObject; import org.omg.sysml.lang.sysml.PortDefinition; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/RedefinitionParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/RedefinitionParserAdapter.java similarity index 98% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/RedefinitionParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/RedefinitionParserAdapter.java index f24a8b514..0cf7abe95 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/RedefinitionParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/RedefinitionParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Element; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ReferenceSubsettingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ReferenceSubsettingParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java index ff49159b6..13b31ce99 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/ReferenceSubsettingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Element; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SpecializationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SpecializationParserAdapter.java similarity index 98% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SpecializationParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SpecializationParserAdapter.java index 1270a8db3..37cb7e81e 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SpecializationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SpecializationParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Specialization; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubclassificationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubclassificationParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubclassificationParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubclassificationParserAdapter.java index e54afacdc..d01966a22 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubclassificationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubclassificationParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Classifier; import org.omg.sysml.lang.sysml.Element; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubsettingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java similarity index 98% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubsettingParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java index 023879be0..9f4b79368 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/SubsettingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Element; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TextualRepresentationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TextualRepresentationParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TextualRepresentationParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TextualRepresentationParserAdapter.java index b8fc332f9..2aa9f223d 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TextualRepresentationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TextualRepresentationParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.TextualRepresentation; import org.omg.sysml.util.ElementUtil; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TypeFeaturingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TypeFeaturingParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java index 4cbc1c0b2..be35d2b5f 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/TypeFeaturingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.Feature; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UnioningParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UnioningParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UnioningParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UnioningParserAdapter.java index 3cdef05c2..420a2e4b0 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UnioningParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UnioningParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.eclipse.emf.common.util.EList; import org.omg.sysml.lang.sysml.Element; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UsageParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UsageParserAdapter.java similarity index 97% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UsageParserAdapter.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UsageParserAdapter.java index a6000cb2b..83c12dcf0 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/linking/UsageParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UsageParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.linking; +package org.omg.kerml.xtext.adapter; import org.omg.sysml.lang.sysml.AttributeDefinition; import org.omg.sysml.lang.sysml.AttributeUsage; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java index 159fba73c..c35e5fd5a 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java @@ -36,7 +36,7 @@ import org.eclipse.xtext.linking.lazy.LazyLinker; import org.eclipse.xtext.util.OnChangeEvictingCache; import org.eclipse.xtext.util.concurrent.IUnitOfWork; -import org.omg.kerml.xtext.linking.ParserAdapterFactory; +import org.omg.kerml.xtext.adapter.ParserAdapterFactory; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.SysMLPackage; diff --git a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java b/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java index 7ede0f630..0010c9f91 100644 --- a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java +++ b/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java @@ -27,7 +27,7 @@ import org.eclipse.emf.ecore.EClass; import org.junit.Test; -import org.omg.kerml.xtext.linking.ParserAdapterFactory; +import org.omg.kerml.xtext.adapter.ParserAdapterFactory; import org.omg.sysml.lang.sysml.Definition; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.FeatureDirectionKind; From 6405d6eb81c6e23ad7d77b9e6fc33f151ede735c Mon Sep 17 00:00:00 2001 From: Arthur Daussy Date: Tue, 1 Sep 2026 11:13:32 +0200 Subject: [PATCH 3/5] STR6RI-953 Separate SysML and KerML concepts in their own Xtext module This commit also move the test in the interactive module --- .../kerml/xpect/tests/AllKerMLXpectTests.java | 2 - ...ry.java => KerMLParserAdapterFactory.java} | 53 ++------- .../omg/kerml/xtext/scoping/KerMLLinker.java | 12 ++- .../META-INF/MANIFEST.MF | 4 +- .../semantics/tests}/ParserAdapterTest.java | 32 +++--- .../semantics/tests/UsagePostProcessTest.java | 4 +- .../org.omg.sysml.logic-0.62.0-SNAPSHOT.jar | Bin 701863 -> 675714 bytes .../org.omg.sysml.model-0.62.0-SNAPSHOT.jar | Bin 898108 -> 898011 bytes org.omg.sysml.xtext/META-INF/MANIFEST.MF | 1 + .../omg/sysml/xtext/SysMLRuntimeModule.xtend | 18 ++-- .../adapter/DefinitionParserAdapter.java | 3 +- .../adapter/OccurrenceUsageParserAdapter.java | 2 +- .../adapter/PortConjugationParserAdapter.java | 3 +- .../xtext/adapter/PortUsageParserAdapter.java | 2 +- .../adapter/SysMLParserAdapterFactory.java | 102 ++++++++++++++++++ .../xtext/adapter/UsageParserAdapter.java | 3 +- .../omg/sysml/xtext/scoping/SysMLLinker.java | 25 +++++ 17 files changed, 184 insertions(+), 82 deletions(-) rename org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/{ParserAdapterFactory.java => KerMLParserAdapterFactory.java} (72%) rename {org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking => org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests}/ParserAdapterTest.java (86%) rename {org.omg.kerml.xtext/src/org/omg/kerml => org.omg.sysml.xtext/src/org/omg/sysml}/xtext/adapter/DefinitionParserAdapter.java (90%) rename {org.omg.kerml.xtext/src/org/omg/kerml => org.omg.sysml.xtext/src/org/omg/sysml}/xtext/adapter/OccurrenceUsageParserAdapter.java (96%) rename {org.omg.kerml.xtext/src/org/omg/kerml => org.omg.sysml.xtext/src/org/omg/sysml}/xtext/adapter/PortConjugationParserAdapter.java (94%) rename {org.omg.kerml.xtext/src/org/omg/kerml => org.omg.sysml.xtext/src/org/omg/sysml}/xtext/adapter/PortUsageParserAdapter.java (96%) create mode 100644 org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/SysMLParserAdapterFactory.java rename {org.omg.kerml.xtext/src/org/omg/kerml => org.omg.sysml.xtext/src/org/omg/sysml}/xtext/adapter/UsageParserAdapter.java (93%) create mode 100644 org.omg.sysml.xtext/src/org/omg/sysml/xtext/scoping/SysMLLinker.java diff --git a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java index 35febe979..c5811bbb5 100644 --- a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java +++ b/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/AllKerMLXpectTests.java @@ -18,7 +18,6 @@ import org.omg.kerml.xpect.tests.imports.recursive.KerMLImportRecursiveTest; import org.omg.kerml.xpect.tests.indexing.KerMLIndexerTest; import org.omg.kerml.xpect.tests.linking.KerMLLinkingTest; -import org.omg.kerml.xpect.tests.linking.ParserAdapterTest; import org.omg.kerml.xpect.tests.parsing.KerMLParsingTest; import org.omg.kerml.xpect.tests.scoping.KerMLScopingTest; import org.omg.kerml.xpect.tests.testsuite.KerMLXtextTest; @@ -30,7 +29,6 @@ KerMLImportLocalTest.class, // KerMLImportRecursiveTest.class, // KerMLLinkingTest.class,// - ParserAdapterTest.class, // KerMLParsingTest.class, // KerMLScopingTest.class, // KerMLXtextTest.class, // diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParserAdapterFactory.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/KerMLParserAdapterFactory.java similarity index 72% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParserAdapterFactory.java rename to org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/KerMLParserAdapterFactory.java index 32834b57e..49e13dc37 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ParserAdapterFactory.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/KerMLParserAdapterFactory.java @@ -16,7 +16,7 @@ import org.omg.sysml.lang.sysml.*; import org.omg.sysml.lang.sysml.util.SysMLSwitch; -public final class ParserAdapterFactory { +public final class KerMLParserAdapterFactory { public static ElementParserAdapter getAdapter(Element element) { return getExistingAdapter(element).orElseGet(() -> createAdapter(element)); @@ -34,22 +34,9 @@ protected static Optional getExistingAdapter(Element eleme .findFirst(); } - protected static ElementParserAdapter createAdapter(Element element) { + public static ElementParserAdapter createAdapter(Element element) { ElementParserAdapter adapter = null; - // PortUsage must be checked before OccurrenceUsage because its parser adapter deliberately - // inherits directly from UsageParserAdapter and applies port-specific post-processing. - if (element instanceof PortUsage portUsage) { - adapter = new PortUsageParserAdapter(portUsage); - // Some concrete OccurrenceUsage subtypes have multiple inheritance. In the generated - // SysMLSwitch, caseFeature may then be visited before caseOccurrenceUsage and would select - // a FeatureParserAdapter, skipping the occurrence-specific portion post-processing. - } else if (element instanceof OccurrenceUsage occurrenceUsage) { - adapter = new OccurrenceUsageParserAdapter(occurrenceUsage); - // For the same reason, some other concrete Usage subtypes reach caseFeature before caseUsage. - // Selecting UsageParserAdapter here guarantees that their common Usage post-processing runs. - } else if (element instanceof Usage usage) { - adapter = new UsageParserAdapter(usage); - } else if (element != null) { + if (element != null) { adapter = SWITCH.doSwitch(element); } if (adapter != null) { @@ -58,10 +45,15 @@ protected static ElementParserAdapter createAdapter(Element element) { return adapter; } - private ParserAdapterFactory() { + private KerMLParserAdapterFactory() { } - private static final SysMLSwitch SWITCH = new SysMLSwitch() { + private static final SysMLSwitch SWITCH = new KerMLFactoryAdapterSwitch(); + + + + public static class KerMLFactoryAdapterSwitch extends SysMLSwitch { + @Override public ElementParserAdapter caseAnnotation(Annotation element) { return new AnnotationParserAdapter(element); @@ -77,11 +69,6 @@ public ElementParserAdapter caseConjugation(Conjugation element) { return new ConjugationParserAdapter(element); } - @Override - public ElementParserAdapter caseDefinition(Definition element) { - return new DefinitionParserAdapter(element); - } - @Override public ElementParserAdapter caseDependency(Dependency element) { return new DependencyParserAdapter(element); @@ -147,26 +134,11 @@ public ElementParserAdapter caseNamespaceImport(NamespaceImport element) { return new NamespaceImportParserAdapter(element); } - @Override - public ElementParserAdapter caseOccurrenceUsage(OccurrenceUsage element) { - return new OccurrenceUsageParserAdapter(element); - } - @Override public ElementParserAdapter caseParameterMembership(ParameterMembership element) { return new ParameterMembershipParserAdapter(element); } - @Override - public ElementParserAdapter casePortConjugation(PortConjugation element) { - return new PortConjugationParserAdapter(element); - } - - @Override - public ElementParserAdapter casePortUsage(PortUsage element) { - return new PortUsageParserAdapter(element); - } - @Override public ElementParserAdapter caseRedefinition(Redefinition element) { return new RedefinitionParserAdapter(element); @@ -207,10 +179,5 @@ public ElementParserAdapter caseUnioning(Unioning element) { return new UnioningParserAdapter(element); } - @Override - public ElementParserAdapter caseUsage(Usage element) { - return new UsageParserAdapter(element); - } - }; } diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java index c35e5fd5a..75018671c 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLLinker.java @@ -36,7 +36,8 @@ import org.eclipse.xtext.linking.lazy.LazyLinker; import org.eclipse.xtext.util.OnChangeEvictingCache; import org.eclipse.xtext.util.concurrent.IUnitOfWork; -import org.omg.kerml.xtext.adapter.ParserAdapterFactory; +import org.omg.kerml.xtext.adapter.ElementParserAdapter; +import org.omg.kerml.xtext.adapter.KerMLParserAdapterFactory; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.SysMLPackage; @@ -76,7 +77,7 @@ public void process(Resource state) throws Exception { while (iterator.hasNext()) { EObject obj = iterator.next(); if (obj instanceof Element element) { - ParserAdapterFactory.getAdapter(element).postProcess(); + doGetAdapter(element).postProcess(); } } } finally { @@ -84,11 +85,16 @@ public void process(Resource state) throws Exception { while (iterator.hasNext()) { EObject obj = iterator.next(); if (obj instanceof Element element) { - ParserAdapterFactory.removeAdapter(element); + KerMLParserAdapterFactory.removeAdapter(element); } } } } + }); } + + protected ElementParserAdapter doGetAdapter(Element element) { + return KerMLParserAdapterFactory.getAdapter(element); + } } diff --git a/org.omg.sysml.interactive.tests/META-INF/MANIFEST.MF b/org.omg.sysml.interactive.tests/META-INF/MANIFEST.MF index 3dac09baa..616c070a3 100644 --- a/org.omg.sysml.interactive.tests/META-INF/MANIFEST.MF +++ b/org.omg.sysml.interactive.tests/META-INF/MANIFEST.MF @@ -12,5 +12,5 @@ Require-Bundle: org.omg.sysml.interactive;bundle-version="0.62.0", org.omg.sysml.logic.bundle;bundle-version="0.62.0", org.omg.sysml;bundle-version="0.62.0", org.eclipse.xtext;bundle-version="2.22.0", - org.omg.kerml.xtext;bundle-version="0.62.0" - + org.omg.kerml.xtext;bundle-version="0.62.0", + org.omg.sysml.xtext;bundle-version="0.62.0" diff --git a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java b/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/ParserAdapterTest.java similarity index 86% rename from org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java rename to org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/ParserAdapterTest.java index 99140b34a..3e99e1254 100644 --- a/org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/linking/ParserAdapterTest.java +++ b/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/ParserAdapterTest.java @@ -9,10 +9,10 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xpect.tests.linking; +package org.omg.sysml.semantics.tests; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.lang.reflect.InvocationTargetException; @@ -22,9 +22,9 @@ import org.omg.kerml.xtext.adapter.ElementParserAdapter; import org.omg.kerml.xtext.adapter.ImportParserAdapter; import org.omg.kerml.xtext.adapter.LiteralStringParserAdapter; -import org.omg.kerml.xtext.adapter.OccurrenceUsageParserAdapter; -import org.omg.kerml.xtext.adapter.ParserAdapterFactory; -import org.omg.kerml.xtext.adapter.PortUsageParserAdapter; +import org.omg.sysml.xtext.adapter.OccurrenceUsageParserAdapter; +import org.omg.sysml.xtext.adapter.SysMLParserAdapterFactory; +import org.omg.sysml.xtext.adapter.PortUsageParserAdapter; import org.omg.kerml.xtext.adapter.RedefinitionParserAdapter; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.Feature; @@ -56,27 +56,27 @@ public static void setUp() { @Test public void factorySelectsTheMostSpecificParserAdapterAndAvoidsDuplicates() { PortUsage port = SysMLFactory.eINSTANCE.createPortUsage(); - ElementParserAdapter portAdapter = ParserAdapterFactory.getAdapter(port); + ElementParserAdapter portAdapter = SysMLParserAdapterFactory.getAdapter(port); assertTrue(portAdapter instanceof PortUsageParserAdapter); - assertEquals(portAdapter, ParserAdapterFactory.getAdapter(port)); + assertEquals(portAdapter, SysMLParserAdapterFactory.getAdapter(port)); assertEquals(1L, port.eAdapters().stream().filter(ElementParserAdapter.class::isInstance).count()); OccurrenceUsage occurrence = SysMLFactory.eINSTANCE.createOccurrenceUsage(); - assertTrue(ParserAdapterFactory.getAdapter(occurrence) instanceof OccurrenceUsageParserAdapter); - assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createConnectionUsage()) + assertTrue(SysMLParserAdapterFactory.getAdapter(occurrence) instanceof OccurrenceUsageParserAdapter); + assertTrue(SysMLParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createConnectionUsage()) instanceof OccurrenceUsageParserAdapter); - assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createAllocationUsage()) + assertTrue(SysMLParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createAllocationUsage()) instanceof OccurrenceUsageParserAdapter); LiteralString literal = SysMLFactory.eINSTANCE.createLiteralString(); - assertTrue(ParserAdapterFactory.getAdapter(literal) instanceof LiteralStringParserAdapter); + assertTrue(SysMLParserAdapterFactory.getAdapter(literal) instanceof LiteralStringParserAdapter); - assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createRedefinition()) + assertTrue(SysMLParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createRedefinition()) instanceof RedefinitionParserAdapter); - assertTrue(ParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createMembershipImport()) + assertTrue(SysMLParserAdapterFactory.getAdapter(SysMLFactory.eINSTANCE.createMembershipImport()) instanceof ImportParserAdapter); - ParserAdapterFactory.removeAdapter(port); + SysMLParserAdapterFactory.removeAdapter(port); assertFalse(port.eAdapters().stream().anyMatch(ElementParserAdapter.class::isInstance)); } @@ -161,8 +161,8 @@ protected static Element createElement(org.eclipse.emf.ecore.EClass eClass, Stri protected static void postProcess(Element... elements) { for (Element element : elements) { - ParserAdapterFactory.getAdapter(element).postProcess(); - ParserAdapterFactory.removeAdapter(element); + SysMLParserAdapterFactory.getAdapter(element).postProcess(); + SysMLParserAdapterFactory.removeAdapter(element); assertFalse(element.eAdapters().stream().anyMatch(ElementParserAdapter.class::isInstance)); } } diff --git a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java b/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java index 0010c9f91..632696982 100644 --- a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java +++ b/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java @@ -27,7 +27,7 @@ import org.eclipse.emf.ecore.EClass; import org.junit.Test; -import org.omg.kerml.xtext.adapter.ParserAdapterFactory; +import org.omg.sysml.xtext.adapter.SysMLParserAdapterFactory; import org.omg.sysml.lang.sysml.Definition; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.FeatureDirectionKind; @@ -142,7 +142,7 @@ protected static Element createElement(EClass eClass, String name, Namespace par */ protected static void postProcess(Element... elements) { for (Element element: elements) { - ParserAdapterFactory.getAdapter(element).postProcess(); + SysMLParserAdapterFactory.getAdapter(element).postProcess(); } } 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 56c2da7b4a7b6aa75867e8e9ed883f45727d905f..89bf37cce95e3b047bdc209fe8a934bac0a3e57a 100644 GIT binary patch delta 244896 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

GlTFl4FM;}lYHQI?H;Z_yx;>?%9a&9tn^Is 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

fOH(wLgNDAm`sh)xOM?H#cTZgq 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 Cqw(ed delta 270292 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 z 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

l=GW**;M6q&(_y?D3u&jQx+e(a^H!^uo%tI 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 diff --git a/org.omg.sysml.xtext/META-INF/MANIFEST.MF b/org.omg.sysml.xtext/META-INF/MANIFEST.MF index 4907a9777..d7ca865e8 100644 --- a/org.omg.sysml.xtext/META-INF/MANIFEST.MF +++ b/org.omg.sysml.xtext/META-INF/MANIFEST.MF @@ -27,6 +27,7 @@ Require-Bundle: org.eclipse.xtext, org.objectweb.asm;bundle-version="9.3.0";resolution:=optional, org.apache.commons.cli Export-Package: org.omg.sysml.xtext, + org.omg.sysml.xtext.adapter, org.omg.sysml.xtext.generator, org.omg.sysml.xtext.library, org.omg.sysml.xtext.parser.antlr, diff --git a/org.omg.sysml.xtext/src/org/omg/sysml/xtext/SysMLRuntimeModule.xtend b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/SysMLRuntimeModule.xtend index eb937ca74..2444a9b91 100644 --- a/org.omg.sysml.xtext/src/org/omg/sysml/xtext/SysMLRuntimeModule.xtend +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/SysMLRuntimeModule.xtend @@ -4,29 +4,29 @@ package org.omg.sysml.xtext import com.google.inject.Binder +import com.google.inject.Provides import com.google.inject.name.Names +import org.eclipse.xtext.conversion.IValueConverterService import org.eclipse.xtext.linking.ILinker import org.eclipse.xtext.naming.IQualifiedNameConverter import org.eclipse.xtext.naming.IQualifiedNameProvider +import org.eclipse.xtext.resource.IResourceServiceProvider import org.eclipse.xtext.resource.XtextResource import org.eclipse.xtext.scoping.IGlobalScopeProvider -import org.eclipse.xtext.resource.IResourceServiceProvider import org.eclipse.xtext.validation.CompositeEValidator import org.eclipse.xtext.validation.IResourceValidator -import org.omg.kerml.xtext.linking.KerMLLazyLinkingResource import org.omg.kerml.xtext.conversion.KerMLValueConverterService +import org.omg.kerml.xtext.library.ILibraryIndexProvider +import org.omg.kerml.xtext.library.PrecalculatedLibraryIndexProvider +import org.omg.kerml.xtext.linking.KerMLLazyLinkingResource import org.omg.kerml.xtext.naming.KerMLQualifiedNameProvider -import org.omg.kerml.xtext.scoping.KerMLLinker import org.omg.kerml.xtext.validation.KerMLResourceValidator import org.omg.sysml.logic.api.IModelLibraryProvider +import org.omg.sysml.util.SysMLLibraryUtil import org.omg.sysml.xtext.library.SysMLLibraryProvider import org.omg.sysml.xtext.naming.SysMLQualifiedNameConverter import org.omg.sysml.xtext.scoping.SysMLGlobalScopeProvider -import org.omg.kerml.xtext.library.ILibraryIndexProvider -import org.omg.kerml.xtext.library.PrecalculatedLibraryIndexProvider -import com.google.inject.Provides -import org.eclipse.xtext.conversion.IValueConverterService -import org.omg.sysml.util.SysMLLibraryUtil +import org.omg.sysml.xtext.scoping.SysMLLinker /** * Use this class to register components to be used at runtime / without the Equinox extension registry. @@ -67,7 +67,7 @@ class SysMLRuntimeModule extends AbstractSysMLRuntimeModule { } override Class bindILinker() { - KerMLLinker + SysMLLinker } def void configureUseEObjectValidator(Binder binder) { diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DefinitionParserAdapter.java b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/DefinitionParserAdapter.java similarity index 90% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DefinitionParserAdapter.java rename to org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/DefinitionParserAdapter.java index a339f4d69..86765e557 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DefinitionParserAdapter.java +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/DefinitionParserAdapter.java @@ -9,8 +9,9 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.adapter; +package org.omg.sysml.xtext.adapter; +import org.omg.kerml.xtext.adapter.ElementParserAdapter; import org.omg.sysml.lang.sysml.Definition; public class DefinitionParserAdapter extends ElementParserAdapter { diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/OccurrenceUsageParserAdapter.java b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/OccurrenceUsageParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/OccurrenceUsageParserAdapter.java rename to org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/OccurrenceUsageParserAdapter.java index f5a00feaa..af953e63a 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/OccurrenceUsageParserAdapter.java +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/OccurrenceUsageParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.adapter; +package org.omg.sysml.xtext.adapter; import org.omg.sysml.lang.sysml.OccurrenceUsage; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortConjugationParserAdapter.java b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/PortConjugationParserAdapter.java similarity index 94% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortConjugationParserAdapter.java rename to org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/PortConjugationParserAdapter.java index 70d32bc4e..adb3e54d4 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortConjugationParserAdapter.java +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/PortConjugationParserAdapter.java @@ -9,10 +9,11 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.adapter; +package org.omg.sysml.xtext.adapter; import org.omg.sysml.lang.sysml.PortConjugation; import org.omg.sysml.lang.sysml.PortDefinition; +import org.omg.kerml.xtext.adapter.ConjugationParserAdapter; import org.omg.sysml.lang.sysml.ConjugatedPortDefinition; import org.omg.sysml.lang.sysml.Element; import org.omg.sysml.lang.sysml.SysMLPackage; diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortUsageParserAdapter.java b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/PortUsageParserAdapter.java similarity index 96% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortUsageParserAdapter.java rename to org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/PortUsageParserAdapter.java index 7a52d8a14..6e011413b 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/PortUsageParserAdapter.java +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/PortUsageParserAdapter.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.adapter; +package org.omg.sysml.xtext.adapter; import org.eclipse.emf.ecore.EObject; import org.omg.sysml.lang.sysml.PortDefinition; diff --git a/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/SysMLParserAdapterFactory.java b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/SysMLParserAdapterFactory.java new file mode 100644 index 000000000..a202bbaaf --- /dev/null +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/SysMLParserAdapterFactory.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.omg.sysml.xtext.adapter; + +import java.util.Optional; + +import org.omg.kerml.xtext.adapter.ElementParserAdapter; +import org.omg.kerml.xtext.adapter.KerMLParserAdapterFactory.KerMLFactoryAdapterSwitch; +import org.omg.sysml.lang.sysml.Definition; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.OccurrenceUsage; +import org.omg.sysml.lang.sysml.PortConjugation; +import org.omg.sysml.lang.sysml.PortUsage; +import org.omg.sysml.lang.sysml.Usage; +import org.omg.sysml.lang.sysml.util.SysMLSwitch; + +public class SysMLParserAdapterFactory { + + public static ElementParserAdapter getAdapter(Element element) { + return getExistingAdapter(element).orElseGet(() -> createAdapter(element)); + } + + public static void removeAdapter(Element element) { + getExistingAdapter(element).ifPresent(element.eAdapters()::remove); + } + + protected static Optional getExistingAdapter(Element element) { + return element == null ? Optional.empty() : + element.eAdapters().stream() + .filter(ElementParserAdapter.class::isInstance) + .map(ElementParserAdapter.class::cast) + .findFirst(); + } + + protected static ElementParserAdapter createAdapter(Element element) { + ElementParserAdapter adapter = null; + // PortUsage must be checked before OccurrenceUsage because its parser adapter deliberately + // inherits directly from UsageParserAdapter and applies port-specific post-processing. + if (element instanceof PortUsage portUsage) { + adapter = new PortUsageParserAdapter(portUsage); + // Some concrete OccurrenceUsage subtypes have multiple inheritance. In the generated + // SysMLSwitch, caseFeature may then be visited before caseOccurrenceUsage and would select + // a FeatureParserAdapter, skipping the occurrence-specific portion post-processing. + } else if (element instanceof OccurrenceUsage occurrenceUsage) { + adapter = new OccurrenceUsageParserAdapter(occurrenceUsage); + // For the same reason, some other concrete Usage subtypes reach caseFeature before caseUsage. + // Selecting UsageParserAdapter here guarantees that their common Usage post-processing runs. + } else if (element instanceof Usage usage) { + adapter = new UsageParserAdapter(usage); + } else if (element != null) { + adapter = SWITCH.doSwitch(element); + } + if (adapter != null) { + element.eAdapters().add(adapter); + } + return adapter; + } + + private SysMLParserAdapterFactory() { + } + + public static final SysMLSwitch SWITCH = new SysMLFactoryAdapterSwitch(); + + public static class SysMLFactoryAdapterSwitch extends KerMLFactoryAdapterSwitch { + + @Override + public ElementParserAdapter caseDefinition(Definition element) { + return new DefinitionParserAdapter(element); + } + + @Override + public ElementParserAdapter caseOccurrenceUsage(OccurrenceUsage element) { + return new OccurrenceUsageParserAdapter(element); + } + + @Override + public ElementParserAdapter casePortConjugation(PortConjugation element) { + return new PortConjugationParserAdapter(element); + } + + @Override + public ElementParserAdapter casePortUsage(PortUsage element) { + return new PortUsageParserAdapter(element); + } + + @Override + public ElementParserAdapter caseUsage(Usage element) { + return new UsageParserAdapter(element); + } + + } + + +} diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UsageParserAdapter.java b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/UsageParserAdapter.java similarity index 93% rename from org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UsageParserAdapter.java rename to org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/UsageParserAdapter.java index 83c12dcf0..8265b6312 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UsageParserAdapter.java +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/adapter/UsageParserAdapter.java @@ -9,8 +9,9 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.kerml.xtext.adapter; +package org.omg.sysml.xtext.adapter; +import org.omg.kerml.xtext.adapter.FeatureParserAdapter; import org.omg.sysml.lang.sysml.AttributeDefinition; import org.omg.sysml.lang.sysml.AttributeUsage; import org.omg.sysml.lang.sysml.Type; diff --git a/org.omg.sysml.xtext/src/org/omg/sysml/xtext/scoping/SysMLLinker.java b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/scoping/SysMLLinker.java new file mode 100644 index 000000000..0291410f0 --- /dev/null +++ b/org.omg.sysml.xtext/src/org/omg/sysml/xtext/scoping/SysMLLinker.java @@ -0,0 +1,25 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.omg.sysml.xtext.scoping; + +import org.omg.kerml.xtext.adapter.ElementParserAdapter; +import org.omg.kerml.xtext.scoping.KerMLLinker; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.xtext.adapter.SysMLParserAdapterFactory; + +public class SysMLLinker extends KerMLLinker{ + + @Override + protected ElementParserAdapter doGetAdapter(Element element) { + return SysMLParserAdapterFactory.getAdapter(element); + } + +} From 6af25959300b9450536080ed2bc75a5378fee500 Mon Sep 17 00:00:00 2001 From: Ed Seidewitz Date: Tue, 1 Sep 2026 20:46:57 -0400 Subject: [PATCH 4/5] ST6RI-953 Revised parser adapter tests. - Moved ParserAdapterTest and UsagePostProcessTest from semantics/tests to interactive/tests. - Revised UsagePostProcessTest to extend SysMLInteractiveTest. - Removed method equivalent to UsagePostProcessTest from ParserAdapterTest. --- .../tests/ParserAdapterTest.java | 60 +------ .../tests/UsagePostProcessTest.java | 104 ++++++++++++ .../semantics/tests/UsagePostProcessTest.java | 149 ------------------ org.omg.sysml.jupyter.jupyterlab/package.json | 2 +- 4 files changed, 108 insertions(+), 207 deletions(-) rename org.omg.sysml.interactive.tests/src/org/omg/sysml/{semantics => interactive}/tests/ParserAdapterTest.java (71%) create mode 100644 org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/UsagePostProcessTest.java delete mode 100644 org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java diff --git a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/ParserAdapterTest.java b/org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/ParserAdapterTest.java similarity index 71% rename from org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/ParserAdapterTest.java rename to org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/ParserAdapterTest.java index 3e99e1254..9afda9f69 100644 --- a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/ParserAdapterTest.java +++ b/org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/ParserAdapterTest.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 ModelDrivenSolutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -9,14 +10,12 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -package org.omg.sysml.semantics.tests; +package org.omg.sysml.interactive.tests; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import java.lang.reflect.InvocationTargetException; - import org.junit.BeforeClass; import org.junit.Test; import org.omg.kerml.xtext.adapter.ElementParserAdapter; @@ -30,22 +29,18 @@ import org.omg.sysml.lang.sysml.Feature; import org.omg.sysml.lang.sysml.FeatureDirectionKind; import org.omg.sysml.lang.sysml.LiteralString; -import org.omg.sysml.lang.sysml.Namespace; import org.omg.sysml.lang.sysml.OccurrenceUsage; import org.omg.sysml.lang.sysml.OwningMembership; -import org.omg.sysml.lang.sysml.Package; import org.omg.sysml.lang.sysml.PartUsage; import org.omg.sysml.lang.sysml.PortUsage; import org.omg.sysml.lang.sysml.PortionKind; import org.omg.sysml.lang.sysml.SysMLFactory; import org.omg.sysml.lang.sysml.SysMLPackage; import org.omg.sysml.lang.sysml.Usage; -import org.omg.sysml.lang.sysml.VariantMembership; import org.omg.sysml.logic.SysMLLogicStandaloneSetup; -import org.omg.sysml.util.NamespaceUtil; import org.omg.sysml.util.TypeUtil; -public class ParserAdapterTest { +public class ParserAdapterTest extends SysMLInteractiveTest { @BeforeClass public static void setUp() { @@ -110,55 +105,6 @@ public void parserAdapterHierarchyPreservesSpecialCaseBehavior() { assertEquals("hello\nworld", literal.getValue()); } - @Test - public void settingCompositeToFalse() throws InvocationTargetException { - Package test = (Package)createElement(SysMLPackage.Literals.PACKAGE, "test", null); - Usage p = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "p", test); - Usage a = (Usage)createElement(SysMLPackage.Literals.ATTRIBUTE_USAGE, "a", p); - Usage x = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "x", p); - Usage y = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "y", p); - y.setDirection(FeatureDirectionKind.IN); - Usage z = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "z", p); - z.setIsVariation(true); - Usage u = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "u", z); - u.setIsVariation(true); - Usage v = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "v", u); - Usage w = (Usage)createElement(SysMLPackage.Literals.PORT_USAGE, "w", u); - Usage q = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "q", test); - q.setIsVariation(true); - Usage r = (Usage)createElement(SysMLPackage.Literals.PART_USAGE, "r", q); - - postProcess(p, a, x, y, z, u, v, w, q, r); - - assertTrue(p.isReference()); - assertTrue(a.isReference()); - assertFalse(x.isReference()); - assertTrue(y.isReference()); - assertFalse(z.isReference()); - assertFalse(u.isReference()); - assertFalse(v.isReference()); - assertTrue(w.isReference()); - assertTrue(q.isReference()); - assertTrue(r.isReference()); - } - - protected static Element createElement(org.eclipse.emf.ecore.EClass eClass, String name, Namespace parent) { - Element element = (Element)SysMLFactory.eINSTANCE.create(eClass); - element.setDeclaredName(name); - if (element instanceof Usage usage && parent instanceof Usage parentUsage) { - if (parentUsage.isVariation()) { - VariantMembership membership = SysMLFactory.eINSTANCE.createVariantMembership(); - membership.setOwnedVariantUsage(usage); - parentUsage.getOwnedRelationship().add(membership); - } else { - TypeUtil.addOwnedFeatureTo(parentUsage, usage); - } - } else if (parent != null) { - NamespaceUtil.addOwnedMemberTo(parent, element); - } - return element; - } - protected static void postProcess(Element... elements) { for (Element element : elements) { SysMLParserAdapterFactory.getAdapter(element).postProcess(); diff --git a/org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/UsagePostProcessTest.java b/org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/UsagePostProcessTest.java new file mode 100644 index 000000000..ac033a18c --- /dev/null +++ b/org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/UsagePostProcessTest.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * SysML 2 Pilot Implementation + * Copyright (c) 2026 Obeo. + * Copyright (c) 2026 Model Driveh 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 + * the Eclipse Foundation, version 2 of the License. + * (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 + * Eclipse Public License for more details. + * + * You should have received a copy of theEclipse Public License + * along with this program. If not, see . + * + * @license EPL-2.0 + * + *******************************************************************************/ +package org.omg.sysml.interactive.tests; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.InvocationTargetException; +import java.util.List; + +import org.junit.Test; +import org.omg.sysml.lang.sysml.Definition; +import org.omg.sysml.lang.sysml.Element; +import org.omg.sysml.lang.sysml.Namespace; +import org.omg.sysml.lang.sysml.Usage; + +public class UsagePostProcessTest extends SysMLInteractiveTest{ + + public static final String TEST = + " package Test {\n" + + " part p {\n" + + " attribute a;\n" + + " part x;\n" + + " in part y;\n" + + " variation occurrence z {\n" + + " variant variation part u {\n" + + " variant part v;\n" + + " }\n" + + " variant port w;\n" + + " }\n" + + " }\n" + + " variation part q {\n" + + " variant part r;\n" + + " }\n" + + " attribute def B {\n" + + " part p1;\n" + + " }\n" + + " attribute b {\n" + + " part p2;\n" + + " }\n" + + " }\n"; + + /** + * Test that Usage postProcess sets the property "composite" to false in appropriate cases. + * @throws InvocationTargetException + */ + @Test + public void testSettingCompositeToFalse() throws InvocationTargetException { + List elements = process(TEST); + Namespace test = (Namespace)elements.get(0); + Usage p = (Usage) test.getOwnedMember().get(0); + Usage a = (Usage) p.getOwnedMember().get(0); + Usage x = (Usage) p.getOwnedMember().get(1); + Usage y = (Usage) p.getOwnedMember().get(2); + Usage z = (Usage) p.getOwnedMember().get(3);; + Usage u = (Usage) z.getOwnedMember().get(0); + Usage v = (Usage) u.getOwnedMember().get(0);; + Usage w = (Usage) z.getOwnedMember().get(1); + + Usage q = (Usage) test.getOwnedMember().get(1); + Usage r = (Usage) q.getOwnedMember().get(0); + + Definition B = (Definition) test.getOwnedMember().get(2); + Usage p1 = (Usage) B.getOwnedMember().get(0); + + Usage b = (Usage) test.getOwnedMember().get(3); + Usage p2 = (Usage) b.getOwnedMember().get(0); + + assertTrue(p.isReference()); + assertTrue(a.isReference()); + assertFalse(x.isReference()); + assertTrue(y.isReference()); + assertFalse(z.isReference()); + assertFalse(u.isReference()); + assertFalse(v.isReference()); + assertTrue(w.isReference()); + assertTrue(q.isReference()); + assertTrue(r.isReference()); + + assertTrue(p1.isReference()); + assertTrue(b.isReference()); + assertTrue(p2.isReference()); + } + +} diff --git a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java b/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java deleted file mode 100644 index 632696982..000000000 --- a/org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/UsagePostProcessTest.java +++ /dev/null @@ -1,149 +0,0 @@ -/******************************************************************************* - * 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 Eclipse Public License as published by - * the Eclipse Foundation, version 2 of the License. - * (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 - * Eclipse Public License for more details. - * - * You should have received a copy of theEclipse Public License - * along with this program. If not, see . - * - * @license EPL-2.0 - * - *******************************************************************************/ -package org.omg.sysml.semantics.tests; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.lang.reflect.InvocationTargetException; - -import org.eclipse.emf.ecore.EClass; -import org.junit.Test; -import org.omg.sysml.xtext.adapter.SysMLParserAdapterFactory; -import org.omg.sysml.lang.sysml.Definition; -import org.omg.sysml.lang.sysml.Element; -import org.omg.sysml.lang.sysml.FeatureDirectionKind; -import org.omg.sysml.lang.sysml.Namespace; -import org.omg.sysml.lang.sysml.Package; -import org.omg.sysml.lang.sysml.SysMLFactory; -import org.omg.sysml.lang.sysml.SysMLPackage; -import org.omg.sysml.lang.sysml.Usage; -import org.omg.sysml.lang.sysml.VariantMembership; -import org.omg.sysml.util.NamespaceUtil; -import org.omg.sysml.util.TypeUtil; - -public class UsagePostProcessTest extends SysMLSemanticTest{ - - /** - * Test that Usage.postProcess sets the property "composite" to false in appropriate cases. - * @throws InvocationTargetException - */ - @Test - public void settingCompositeToFalse() throws InvocationTargetException { - /* - * package Test {\n" - * part p { - * attribute a; - * part x; - * in part y - * variation part z { - * variant variation part u { - * variant part v; - * } - * variant port w; - * } - * } - * variation part q { - * variant part r; - * } - * attribute def B { - * part p1; - * } - * attribute b { - * part p2; - * } - * } - */ - Package test = (Package) createElement(SysMLPackage.Literals.PACKAGE, "test", null); - Usage p = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "p", test); - Usage a = (Usage) createElement(SysMLPackage.Literals.ATTRIBUTE_USAGE, "a", p); - Usage x = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "x", p); - Usage y = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "y", p); - y.setDirection(FeatureDirectionKind.IN); - Usage z = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "z", p); - z.setIsVariation(true); - Usage u = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "u", z); - u.setIsVariation(true); - Usage v = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "v", u); - Usage w = (Usage) createElement(SysMLPackage.Literals.PORT_USAGE, "w", u); - Usage q = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "q", test); - q.setIsVariation(true); - Usage r = (Usage) createElement(SysMLPackage.Literals.PART_USAGE, "r", q); - - Definition B = SysMLFactory.eINSTANCE.createAttributeDefinition(); - Usage p1 = SysMLFactory.eINSTANCE.createPartUsage(); - TypeUtil.addOwnedFeatureTo(B, p1); - Usage b = SysMLFactory.eINSTANCE.createAttributeUsage(); - Usage p2 = SysMLFactory.eINSTANCE.createPartUsage(); - TypeUtil.addOwnedFeatureTo(b, p2); - - // Post-process after creating the entire model. - postProcess(p, a, x, y, z, u, v, w, q, r, B, p1, b, p2); - - assertTrue(p.isReference()); - assertTrue(a.isReference()); - assertFalse(x.isReference()); - assertTrue(y.isReference()); - assertFalse(z.isReference()); - assertFalse(u.isReference()); - assertFalse(v.isReference()); - assertTrue(w.isReference()); - assertTrue(q.isReference()); - assertTrue(r.isReference()); - - assertTrue(p1.isReference()); - assertTrue(b.isReference()); - assertTrue(p2.isReference()); - } - - /** - * Create an Element with the given eClass, name and parent. If the created Element and the parent - * are both Usages, then the Element is added to the parent as a variant, if the parent is a variation, - * or as an ownedFeature, if the parent is not a variation. Otherwise, the Element is added as an - * ownedMember of the parent. (Adding ownedFeatures of Definitions is not currently needed.) - */ - protected static Element createElement(EClass eClass, String name, Namespace parent) { - Element element = (Element)SysMLFactory.eINSTANCE.create(eClass); - element.setDeclaredName(name); - if (element instanceof Usage usage && parent instanceof Usage parentUsage) { - if (parentUsage.isVariation()) { - VariantMembership membership = SysMLFactory.eINSTANCE.createVariantMembership(); - membership.setOwnedVariantUsage(usage); - parentUsage.getOwnedRelationship().add(membership); - } else { - TypeUtil.addOwnedFeatureTo(parentUsage, usage); - } - } else if (parent != null) { - NamespaceUtil.addOwnedMemberTo(parent, element); - } - return element; - } - - /** - * Call the postProcess method of the ElementAdapter of the given array of elements. - */ - protected static void postProcess(Element... elements) { - for (Element element: elements) { - SysMLParserAdapterFactory.getAdapter(element).postProcess(); - } - } - -} diff --git a/org.omg.sysml.jupyter.jupyterlab/package.json b/org.omg.sysml.jupyter.jupyterlab/package.json index 4830bc726..1b933a23c 100644 --- a/org.omg.sysml.jupyter.jupyterlab/package.json +++ b/org.omg.sysml.jupyter.jupyterlab/package.json @@ -1,6 +1,6 @@ { "name": "@systems-modeling/jupyterlab-sysml", - "version": "0.61.0-SNAPSHOT", + "version": "0.62.0-SNAPSHOT", "description": "A JupyterLab extension for system modeling using SysML", "repository": "github:Systems-Modeling/SysML-v2-Pilot-Implementation", "author": "SysML v2 Submission Team", From ca84db65c78dc4fdc15778bfa42999a77c17d6e6 Mon Sep 17 00:00:00 2001 From: Ed Seidewitz Date: Wed, 2 Sep 2026 02:40:01 -0400 Subject: [PATCH 5/5] ST6RI-953 Ensured KerML parser adapters always call super in postProcess --- .../org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java | 2 ++ .../org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java | 2 ++ .../org/omg/kerml/xtext/adapter/DependencyParserAdapter.java | 2 ++ .../omg/kerml/xtext/adapter/DifferencingParserAdapter.java | 2 ++ .../org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java | 2 ++ .../kerml/xtext/adapter/FeatureInvertingParserAdapter.java | 4 +++- .../omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java | 2 ++ .../omg/kerml/xtext/adapter/IntersectingParserAdapter.java | 2 ++ .../omg/kerml/xtext/adapter/RedefinitionParserAdapter.java | 2 ++ .../kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java | 2 ++ .../omg/kerml/xtext/adapter/SpecializationParserAdapter.java | 2 ++ .../kerml/xtext/adapter/SubclassificationParserAdapter.java | 2 ++ .../org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java | 2 ++ .../omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java | 2 ++ .../org/omg/kerml/xtext/adapter/UnioningParserAdapter.java | 3 +++ 15 files changed, 32 insertions(+), 1 deletion(-) diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java index bb8f113b9..1fa87bd1d 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/AnnotationParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -29,6 +30,7 @@ public Annotation getTarget() { @Override public void postProcess() { + super.postProcess(); Annotation obj = getTarget(); // If the Annotation is not owned by an AnnotatingElement, then the annotatedElement is the owningRelatedElement. diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java index 8ef9d0d4c..d57eacfdc 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ConjugationParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +31,7 @@ public Conjugation getTarget() { @Override public void postProcess() { + super.postProcess(); Conjugation obj = getTarget(); // If the conjugatedType is not set, then set it to the owningRelatedElement, if this is a Type, diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DependencyParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DependencyParserAdapter.java index af7062fef..1d2a74cfa 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DependencyParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DependencyParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -29,6 +30,7 @@ public Dependency getTarget() { @Override public void postProcess() { + super.postProcess(); Dependency target = getTarget(); // Add all ownedRelatedElements to supplier. diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DifferencingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DifferencingParserAdapter.java index 84beb8797..f93f28fd4 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DifferencingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DifferencingParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +31,7 @@ public Differencing getTarget() { @Override public void postProcess() { + super.postProcess(); Differencing obj = getTarget(); // If a Differencing is parsed targeting a Feature chain, then the differencingType will be empty, diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java index 2a2379508..372a23642 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/DisjoiningParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -31,6 +32,7 @@ public Disjoining getTarget() { @Override public void postProcess() { + super.postProcess(); Disjoining obj = getTarget(); // If a Disjoining is parsed targeting a Feature chain, then the disjoiningType will be empty, diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureInvertingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureInvertingParserAdapter.java index 4d10528a8..06ffa56c0 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureInvertingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureInvertingParserAdapter.java @@ -1,7 +1,8 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo - * + * Copyright (c) 2026 Model Driven Solutions, Inc. +* * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. @@ -30,6 +31,7 @@ public FeatureInverting getTarget() { @Override public void postProcess() { + super.postProcess(); FeatureInverting obj = getTarget(); // If the featureInverted is empty, then set it to the owningRelatedElement of the FeatureInverting, diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java index 9c7a14b64..8ac280150 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/FeatureTypingParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +31,7 @@ public FeatureTyping getTarget() { @Override public void postProcess() { + super.postProcess(); FeatureTyping obj = getTarget(); // If the type is empty, then set it to the first owned related element diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/IntersectingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/IntersectingParserAdapter.java index 7fd04a25a..f351221e4 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/IntersectingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/IntersectingParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +31,7 @@ public Intersecting getTarget() { @Override public void postProcess() { + super.postProcess(); Intersecting obj = getTarget(); // If a Intersecting is parsed targeting a Feature chain, then the intersectingType will be empty, diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/RedefinitionParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/RedefinitionParserAdapter.java index 0cf7abe95..adb5fe40b 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/RedefinitionParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/RedefinitionParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +31,7 @@ public Redefinition getTarget() { @Override public void postProcess() { + super.postProcess(); Redefinition obj = getTarget(); // If the redefiningFeature is empty, then set it to the owningRelatedElement, if that is a Feature. diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java index 13b31ce99..19aa23357 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/ReferenceSubsettingParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +31,7 @@ public ReferenceSubsetting getTarget() { @Override public void postProcess() { + super.postProcess(); ReferenceSubsetting obj = getTarget(); // If the referencedFeature is empty, then set it to the last ownedRelatedElement diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SpecializationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SpecializationParserAdapter.java index 37cb7e81e..42f125d30 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SpecializationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SpecializationParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -31,6 +32,7 @@ public Specialization getTarget() { @Override public void postProcess() { + super.postProcess(); Specialization obj = getTarget(); // If general is empty, then set it to the last ownedRelatedElement (which will be a Feature chain). diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubclassificationParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubclassificationParserAdapter.java index d01966a22..95c03cf40 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubclassificationParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubclassificationParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -29,6 +30,7 @@ public Subclassification getTarget() { @Override public void postProcess() { + super.postProcess(); Subclassification obj = getTarget(); // If the subclassifier is empty, then set it to the owningRelatedElement, diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java index 9f4b79368..4d9d2ccbe 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/SubsettingParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +31,7 @@ public Subsetting getTarget() { @Override public void postProcess() { + super.postProcess(); Subsetting obj = getTarget(); // If the subsettedFeature is empty, then set it to the last ownedRelatedElement diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java index be35d2b5f..ed5607811 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/TypeFeaturingParserAdapter.java @@ -1,6 +1,7 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -29,6 +30,7 @@ public TypeFeaturing getTarget() { @Override public void postProcess() { + super.postProcess(); TypeFeaturing obj = getTarget(); // If the featureOfType is empty, then set it to the owningRelatedElement (if this is a Feature). diff --git a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UnioningParserAdapter.java b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UnioningParserAdapter.java index 420a2e4b0..cef19228f 100644 --- a/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UnioningParserAdapter.java +++ b/org.omg.kerml.xtext/src/org/omg/kerml/xtext/adapter/UnioningParserAdapter.java @@ -1,6 +1,8 @@ /******************************************************************************* * SysML 2 Pilot Implementation * Copyright (c) 2026 Obeo + * Copyright (c) 2026 Model Driven Solutions, Inc. + * * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -30,6 +32,7 @@ public Unioning getTarget() { @Override public void postProcess() { + super.postProcess(); Unioning obj = getTarget(); // If a Unioning is parsed targeting a Feature chain, then the unioningType will be empty,