From eaf9a3bbfbce7d3a6ec21acf2a691c73ac98cfe1 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 02:02:40 +0000 Subject: [PATCH 1/7] fix: resolve the SonarCloud quality-gate breakers - syson: compare exported document names by value so duplicates get -1 suffixes\n- java client: rename Condition.equal to Condition.equalTo\n- workflows: npm ci --ignore-scripts for the SysON jobs Co-Authored-By: jason.han --- .github/workflows/pr.yml | 2 +- .github/workflows/syson-artifacts.yml | 2 +- .../java-condition-equal-to.changed.md | 1 + client/java/README.md | 2 +- .../org/openmbee/opensysml/Condition.java | 4 +- .../opensysml/ApiIntegrationTest.java | 74 ++++++++----------- .../openmbee/opensysml/ResultTypesTest.java | 14 ++-- .../opensysml/internal/ResultProtosTest.java | 2 +- .../openmbee/opensysml/conformance/Api.java | 3 +- docs/guide/09-clients.md | 2 +- docs/reference/java-api.md | 2 +- .../syson/export/ProjectTextExporter.java | 8 +- .../syson/ProjectTextExporterTest.java | 16 ++++ .../{ => run}/RunVerdictSummaryTest.java | 0 editors/syson/frontend/package.json | 2 +- 15 files changed, 71 insertions(+), 63 deletions(-) create mode 100644 changes/unreleased/java-condition-equal-to.changed.md rename editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/{ => run}/RunVerdictSummaryTest.java (100%) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 34b47f3ede..a8a96b48f2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -1235,7 +1235,7 @@ jobs: - name: Build and test the SysON frontend working-directory: editors/syson/frontend run: | - npm ci + npm ci --ignore-scripts npm run typecheck npm run format:check npm test diff --git a/.github/workflows/syson-artifacts.yml b/.github/workflows/syson-artifacts.yml index 2119932edc..fb814afd4f 100644 --- a/.github/workflows/syson-artifacts.yml +++ b/.github/workflows/syson-artifacts.yml @@ -44,7 +44,7 @@ jobs: - name: Build against the real Sirius packages working-directory: editors/syson/frontend run: | - npm ci + npm ci --ignore-scripts cp .npmrc.example .npmrc npm run install:syson npm run build:syson diff --git a/changes/unreleased/java-condition-equal-to.changed.md b/changes/unreleased/java-condition-equal-to.changed.md new file mode 100644 index 0000000000..3cc5469da4 --- /dev/null +++ b/changes/unreleased/java-condition-equal-to.changed.md @@ -0,0 +1 @@ +- **The Java client's `Condition.equal` is renamed `Condition.equalTo`.** The old name collided with `Object.equals` on every use; `Condition.equalTo(property, values)` is a drop-in rename. diff --git a/client/java/README.md b/client/java/README.md index c9a75839b1..7100fda89e 100644 --- a/client/java/README.md +++ b/client/java/README.md @@ -35,7 +35,7 @@ try (Connection connection = Connection.open()) { // starts a private sysml boolean holds = v.holds(); // false is an answer, not a failure Analysis study = model.runAnalysis("Trade::lightest"); // outputs, verdicts, case evaluations List parts = model.query( - Query.all().where(Condition.equal("@type", List.of("PartUsage")))); + Query.all().where(Condition.equalTo("@type", List.of("PartUsage")))); connection.capabilities().require(Capabilities.FEATURE_VALUES); } diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Condition.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Condition.java index 46564a2df9..61d7ba06be 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Condition.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Condition.java @@ -5,7 +5,7 @@ /** * A {@link Query} filter: one comparison of a property, or several conditions combined. Build one - * with {@link #equal}, {@link #greater}, {@link #less}, {@link #all} or {@link #any}, and negate it + * with {@link #equalTo}, {@link #greater}, {@link #less}, {@link #all} or {@link #any}, and negate it * with {@link #negated()}. */ public sealed interface Condition { @@ -19,7 +19,7 @@ public sealed interface Condition { * @param values the values it may equal * @return the comparison */ - static Comparison equal(String property, List values) { + static Comparison equalTo(String property, List values) { return new Comparison(property, Comparison.Operator.EQUAL, values, false); } diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java index f47f869d50..ad32a3ef18 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java @@ -665,19 +665,15 @@ void anActionThatCannotStartIsAModelFailureAndABadScheduleIsRefused() { ModelException failed = assertThrows(ModelException.class, () -> model.executeAction("Test::noStart")); assertFalse(failed.getMessage().isBlank()); + ExecutionOptions seeded = ExecutionOptions.defaults().withSchedule("seed:abc"); ServiceException refused = assertThrows( - ServiceException.class, - () -> - model.executeAction( - "Test::race", Map.of(), ExecutionOptions.defaults().withSchedule("seed:abc"))); + ServiceException.class, () -> model.executeAction("Test::race", Map.of(), seeded)); assertEquals(StatusCode.INVALID_ARGUMENT, refused.status()); assertTrue(refused.getMessage().contains("seed:abc")); + ExecutionOptions declared = ExecutionOptions.defaults().withSchedule("declared"); assertThrows( - IllegalArgumentException.class, - () -> - model.exploreAction( - "Test::race", Map.of(), ExecutionOptions.defaults().withSchedule("declared"))); + IllegalArgumentException.class, () -> model.exploreAction("Test::race", Map.of(), declared)); } @Test @@ -771,7 +767,7 @@ void aConstraintIsVerifiedAgainstDeclaredValuesOrAnObjectAndAFalseAnswerIsNotAFa assertFalse(wrongKind.verdict().decided()); assertFalse(wrongKind.holds()); assertEquals(FailureReason.WRONG_KIND, wrongKind.verdict().failureReason()); - assertTrue(wrongKind.verdict().error().orElseThrow().length() > 0); + assertFalse(wrongKind.verdict().error().orElseThrow().isEmpty()); } @Test @@ -900,13 +896,10 @@ void anAnalysisBindsItsArgumentsAndAFailedRunKeepsWhatItLeft() { List.of(Optional.of(new Value.RealValue(10.0)), Optional.of(new Value.RealValue(10.0))), three.evaluations().stream().map(org.openmbee.opensysml.CaseEvaluation::result).toList()); + AnalysisOptions arguments = + AnalysisOptions.defaults().withArguments(List.of(new Value.IntegerValue(4))); AnalysisException failed = - assertThrows( - AnalysisException.class, - () -> - model.runAnalysis( - "Trade::perOffset", - AnalysisOptions.defaults().withArguments(List.of(new Value.IntegerValue(4))))); + assertThrows(AnalysisException.class, () -> model.runAnalysis("Trade::perOffset", arguments)); assertTrue(failed.getMessage().contains("division by zero")); assertEquals(FailureReason.EVALUATION, failed.failureReason()); Analysis partial = failed.partial().orElseThrow(); @@ -956,7 +949,7 @@ void aQuerySelectsElementsByTypeScopeAndProperty() { assertTrue(all.containsAll(List.of("Demo", "Demo::Vehicle", "Demo::vehicle::wheels", "Demo::spare"))); List parts = - model.query(Query.all().where(Condition.equal("@type", List.of("PartUsage")))); + model.query(Query.all().where(Condition.equalTo("@type", List.of("PartUsage")))); assertEquals( List.of("Demo::spare", "Demo::vehicle", "Demo::vehicle::wheels"), parts.stream().map(QueryElement::id).sorted().toList()); @@ -969,7 +962,7 @@ void aQuerySelectsElementsByTypeScopeAndProperty() { model.query( Query.all() .withSelect(List.of("name", "owner")) - .where(Condition.equal("qualifiedName", List.of("Demo::vehicle::wheels")))); + .where(Condition.equalTo("qualifiedName", List.of("Demo::vehicle::wheels")))); assertEquals( List.of( new QueryElement( @@ -980,10 +973,9 @@ void aQuerySelectsElementsByTypeScopeAndProperty() { assertEquals( 3, model.queryOslc("oslc.where=rdf:type=\"PartUsage\"&oslc.select=sysml:name").size()); + Query missingScope = Query.all().withScope(List.of("Demo::Missing")); ServiceException refused = - assertThrows( - ServiceException.class, - () -> model.query(Query.all().withScope(List.of("Demo::Missing")))); + assertThrows(ServiceException.class, () -> model.query(missingScope)); assertEquals(StatusCode.INVALID_ARGUMENT, refused.status()); } @@ -1025,16 +1017,14 @@ void parseSourcesParsesSeveralDocumentsAsOneModel() throws Exception { @Test void parseSourcesRefusesTwoDocumentsOfOneName() throws Exception { + String librarySource = Files.readString(fixture("engine_library.sysml")); + String userSource = Files.readString(fixture("engine_user.sysml")); + List documents = + List.of( + SourceDocument.inline("same.sysml", librarySource), + SourceDocument.inline("same.sysml", userSource)); ServiceException refused = - assertThrows( - ServiceException.class, - () -> - connection.parseSources( - List.of( - SourceDocument.inline( - "same.sysml", Files.readString(fixture("engine_library.sysml"))), - SourceDocument.inline( - "same.sysml", Files.readString(fixture("engine_user.sysml")))))); + assertThrows(ServiceException.class, () -> connection.parseSources(documents)); assertEquals(StatusCode.INVALID_ARGUMENT, refused.status()); } @@ -1057,12 +1047,10 @@ void convertRewritesContentAndAParsedModel() throws Exception { @Test void convertOfUnreadableNotationIsAModelFailure() throws Exception { String source = Files.readString(fixture("syntax_error.sysml")); + ConversionOptions convertOptions = ConversionOptions.defaults().withFromFormat("sysml"); ModelException failed = assertThrows( - ModelException.class, - () -> - connection.convert( - source, "sysml", ConversionOptions.defaults().withFromFormat("sysml"))); + ModelException.class, () -> connection.convert(source, "sysml", convertOptions)); assertFalse(failed.diagnostics().isEmpty()); } @@ -1080,10 +1068,9 @@ void applyEditsRewritesAValueAndAnswersTheText() { @Test void applyEditsRefusesAnUnknownTargetByKind() { Model model = connection.load(fixture("editable.sysml")); + List edits = List.of(new Edit.SetValue("Demo::SC::nope", "1.0")); EditException refused = - assertThrows( - EditException.class, - () -> model.applyEdits(List.of(new Edit.SetValue("Demo::SC::nope", "1.0")))); + assertThrows(EditException.class, () -> model.applyEdits(edits)); assertEquals(EditFailure.UNKNOWN_TARGET, refused.failure()); assertEquals("EDIT_FAILURE_UNKNOWN_TARGET", refused.failureName()); } @@ -1111,15 +1098,14 @@ void runSweepStepsThroughARangeAndReportsEachRow() { void runSweepOfAnotherKindIsAModelFailure() { Model model = connection.load(fixture("sweep.sysml")); ModelException failed = - assertThrows( + List ranges = + List.of( + org.openmbee.opensysml.SweepRange.of( + "limit", new Value.RealValue(0.0), new Value.RealValue(4.0)) + .withStep(new Value.RealValue(2.0))); + assertThrows( ModelException.class, - () -> - model.runSweep( - "Sw::barge", - List.of( - org.openmbee.opensysml.SweepRange.of( - "limit", new Value.RealValue(0.0), new Value.RealValue(4.0)) - .withStep(new Value.RealValue(2.0))))); + () -> model.runSweep("Sw::barge", ranges)); assertEquals(FailureReason.WRONG_KIND, failed.failureReason()); } diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ResultTypesTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ResultTypesTest.java index 2ea003fdef..42299c0e48 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ResultTypesTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ResultTypesTest.java @@ -96,9 +96,11 @@ void resultsCopyTheCollectionsTheyAreGivenAndRefuseChanges() { assertEquals(1, analysis.verdicts().size()); assertEquals(List.of("total"), List.copyOf(analysis.outputs().keySet())); Value added = new Value.RealValue(2.0); - assertThrows(UnsupportedOperationException.class, () -> analysis.outputs().put("x", added)); + Map analysisOutputs = analysis.outputs(); + assertThrows(UnsupportedOperationException.class, () -> analysisOutputs.put("x", added)); Verdict extra = verdict(false, ""); - assertThrows(UnsupportedOperationException.class, () -> analysis.verdicts().add(extra)); + List analysisVerdicts = analysis.verdicts(); + assertThrows(UnsupportedOperationException.class, () -> analysisVerdicts.add(extra)); Map context = new LinkedHashMap<>(Map.of("n", new Value.IntegerValue(1))); StateRun run = @@ -258,12 +260,13 @@ void analysisOptionsAccumulateAndCopyTheirArguments() { assertTrue(options.explores()); assertFalse(AnalysisOptions.defaults().explores()); Value extra = new Value.RealValue(1.0); - assertThrows(UnsupportedOperationException.class, () -> options.arguments().add(extra)); + List optionArguments = options.arguments(); + assertThrows(UnsupportedOperationException.class, () -> optionArguments.add(extra)); } @Test void aQueryIsBuiltUpAndItsConditionsNegate() { - Condition.Comparison parts = Condition.equal("@type", List.of("PartUsage", "PartDefinition")); + Condition.Comparison parts = Condition.equalTo("@type", List.of("PartUsage", "PartDefinition")); Condition.Comparison heavy = Condition.greater("mass", "1000"); Query query = Query.all() @@ -295,7 +298,8 @@ void aQueryElementCopiesItsProperties() { QueryElement element = new QueryElement("Demo::sedan", "PartUsage", properties); properties.clear(); assertEquals(Map.of("name", "sedan"), element.properties()); - assertThrows(UnsupportedOperationException.class, () -> element.properties().put("a", "b")); + Map elementProperties = element.properties(); + assertThrows(UnsupportedOperationException.class, () -> elementProperties.put("a", "b")); } @Test diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/ResultProtosTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/ResultProtosTest.java index bff7ae40d8..6079566f03 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/ResultProtosTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/ResultProtosTest.java @@ -346,7 +346,7 @@ void aQueryWritesItsScopeSelectionAndNestedConditions() { .where( Condition.all( List.of( - Condition.equal("@type", List.of("PartUsage", "PartDefinition")).negated(), + Condition.equalTo("@type", List.of("PartUsage", "PartDefinition")).negated(), Condition.any( List.of( Condition.greater("mass", "1000"), diff --git a/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java b/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java index 5b2ca35ee1..fff9efe54e 100644 --- a/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java +++ b/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java @@ -32,7 +32,6 @@ import org.openmbee.opensysml.ServiceException; import org.openmbee.opensysml.SourceDocument; import org.openmbee.opensysml.StateRun; -import org.openmbee.opensysml.Sweep; import org.openmbee.opensysml.SweepOptions; import org.openmbee.opensysml.SweepRange; import org.openmbee.opensysml.Symbol; @@ -814,7 +813,7 @@ private static Condition condition(Constraint constraint) { Condition.Comparison comparison = switch (primitive.getOperator()) { case PRIMITIVE_OPERATOR_EQUAL -> - Condition.equal(primitive.getProperty(), primitive.getValueList()); + Condition.equalTo(primitive.getProperty(), primitive.getValueList()); case PRIMITIVE_OPERATOR_GREATER -> Condition.greater(primitive.getProperty(), soleValue(primitive)); case PRIMITIVE_OPERATOR_LESS -> diff --git a/docs/guide/09-clients.md b/docs/guide/09-clients.md index 53606078fc..aa16230b7b 100644 --- a/docs/guide/09-clients.md +++ b/docs/guide/09-clients.md @@ -1302,7 +1302,7 @@ try (Connection connection = Connection.open()) { // starts a private sysml Verification light = model.verifyConstraint("Demo::Vehicle::massLight", "Demo::sedan"); Analysis study = model.runAnalysis("Trade::lightest"); // selected alternative, evaluations List parts = model.query( - Query.all().where(Condition.equal("@type", List.of("PartUsage")))); + Query.all().where(Condition.equalTo("@type", List.of("PartUsage")))); } ``` diff --git a/docs/reference/java-api.md b/docs/reference/java-api.md index a1f845b3f2..626645cf5d 100644 --- a/docs/reference/java-api.md +++ b/docs/reference/java-api.md @@ -194,7 +194,7 @@ List parts = model.query( .withScope(List.of("Demo::vehicle")) // beneath these elements .withSelect(List.of("name", "owner")) // properties to read .where(Condition.all(List.of( - Condition.equal("@type", List.of("PartUsage")), + Condition.equalTo("@type", List.of("PartUsage")), Condition.greater("mass", "1000").negated())))); parts.get(0).id(); parts.get(0).type(); parts.get(0).properties(); // qualified name, metaclass, selected values List same = model.queryOslc("oslc.where=rdf:type=\"PartUsage\"&oslc.select=sysml:name"); diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java index 7a2cfe2feb..300e9f8398 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java @@ -18,6 +18,8 @@ import org.openmbee.opensysml.syson.identity.ElementIndex; public class ProjectTextExporter implements ProjectExporter { + private static final String SYSML_EXTENSION = ".sysml"; + private final ElementSerializer serializer; private final IIdentityService identityService; @@ -38,11 +40,11 @@ public ExportedProject export(IEMFEditingContext context) { if (uri.startsWith(ElementUtil.KERML_LIBRARY_SCHEME) || uri.startsWith(ElementUtil.SYSML_LIBRARY_SCHEME)) continue; String base = resource.getURI() == null ? "" : resource.getURI().lastSegment(); if (base == null || base.isBlank()) base = "document-" + documentIndex; - if (!base.endsWith(".sysml")) base += ".sysml"; + if (!base.endsWith(SYSML_EXTENSION)) base += SYSML_EXTENSION; String name = base; int suffix = 1; while (containsDocument(documents, name)) { - name = base.replace(".sysml", "-" + suffix++ + ".sysml"); + name = base.replace(SYSML_EXTENSION, "-" + suffix++ + SYSML_EXTENSION); } StringBuilder text = new StringBuilder(); for (EObject root : resource.getContents()) { @@ -90,6 +92,6 @@ private int lineCount(CharSequence value) { } private boolean containsDocument(List documents, String name) { - return documents.stream().anyMatch(document -> document.name().equals(name)); + return documents.stream().anyMatch(document -> document.name().filter(name::equals).isPresent()); } } diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ProjectTextExporterTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ProjectTextExporterTest.java index 9017567cf0..364d0fa353 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ProjectTextExporterTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ProjectTextExporterTest.java @@ -108,6 +108,22 @@ void exportsStableDocumentNames() { assertThat(result.messages().get(0).message()).isEqualTo("warning"); } + @Test + void disambiguatesDuplicateDocumentNames() { + ResourceSet set = new ResourceSetImpl(); + set.getResources().add(new ResourceImpl(URI.createURI("sirius:///a/foo"))); + set.getResources().get(0).getContents().add(new FakeElement("First")); + set.getResources().add(new ResourceImpl(URI.createURI("sirius:///b/foo"))); + set.getResources().get(1).getContents().add(new FakeElement("Second")); + IEMFEditingContext context = context(set); + ElementSerializer serializer = (element, report) -> "part def X;"; + + var result = new ProjectTextExporter(serializer, mock(IIdentityService.class)).export(context); + + assertThat(result.documents()).extracting(document -> document.name().orElseThrow()) + .containsExactly("foo.sysml", "foo-1.sysml"); + } + private static IEMFEditingContext context(ResourceSet set) { AdapterFactoryEditingDomain domain = new AdapterFactoryEditingDomain(new ComposedAdapterFactory(), new BasicCommandStack(), set); diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunVerdictSummaryTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java similarity index 100% rename from editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunVerdictSummaryTest.java rename to editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java diff --git a/editors/syson/frontend/package.json b/editors/syson/frontend/package.json index ee76462294..40ebac3a40 100644 --- a/editors/syson/frontend/package.json +++ b/editors/syson/frontend/package.json @@ -56,7 +56,7 @@ "format": "prettier --write src", "format:check": "prettier --check src", "typecheck": "tsc --noEmit -p tsconfig.json", - "install:syson": "npm install --no-save @eclipse-sirius/sirius-components-core@2026.9.0 @eclipse-sirius/sirius-components-trees@2026.9.0", + "install:syson": "npm install --no-save --ignore-scripts @eclipse-sirius/sirius-components-core@2026.9.0 @eclipse-sirius/sirius-components-trees@2026.9.0", "build:syson": "OPENSYSML_SYSON_REAL=1 vite build && tsc -p tsconfig.syson.json" } } From f87a9aefc0abc962046b763d1cf9ad95d117f70f Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 02:02:48 +0000 Subject: [PATCH 2/7] refactor: resolve SonarCloud findings introduced since the last scan Builder for RunResult, verdict-label helper, hoisted asserts, duplicated-literal constants, interface/empty-func/import fixes, CSS rule merge, frontend prop narrowing and handler hoists Co-Authored-By: jason.han --- .../org/openmbee/opensysml/Connection.java | 16 ++-- .../java/org/openmbee/opensysml/Edit.java | 10 ++- .../java/org/openmbee/opensysml/Model.java | 42 ++++----- .../internal/DocumentProtosTest.java | 1 - .../opensysml/internal/EditProtosTest.java | 1 - cmd/sysml/render_document_pdf_test.go | 6 +- .../MutationRunWithOpenSysMLDataFetcher.java | 10 +-- .../opensysml/syson/run/RunResult.java | 80 +++++++++++------ .../syson/run/RunWithOpenSysMLService.java | 47 ++++++---- .../opensysml/syson/DiagnosticMapperTest.java | 9 +- .../opensysml/syson/ElementIndexTest.java | 7 +- .../syson/OpenSysMLValidationServiceTest.java | 27 +++--- .../opensysml/syson/RunResultStoreTest.java | 3 +- .../RunWithOpenSysMLServiceAnalysisTest.java | 14 +-- .../syson/RunWithOpenSysMLServiceTest.java | 26 +++--- .../syson/run/RunVerdictSummaryTest.java | 7 +- .../openmbee/opensysml/syson/FakeElement.java | 2 +- .../src/dialog/RunWithOpenSysMLDialog.tsx | 75 ++++++++-------- .../RunWithOpenSysMLMenuContribution.tsx | 22 +---- .../frontend/src/results/RunResultsPanel.tsx | 38 ++++----- editors/syson/frontend/src/test/setup.ts | 3 +- internal/doc/docpdf/converter.go | 2 +- internal/doc/docpdf/docpdf.go | 2 +- internal/doc/docpdf/docpdf_test.go | 10 +-- internal/doc/docpdf/pandoc.css | 8 +- internal/doc/docrender/html.go | 12 ++- internal/translate/migrate/activity.go | 55 +++++++----- internal/translate/migrate/behavior.go | 28 +++--- internal/translate/migrate/call_port.go | 12 ++- internal/translate/migrate/carriers.go | 12 ++- internal/translate/migrate/context.go | 15 +++- internal/translate/migrate/interaction.go | 85 +++++++++++-------- internal/translate/migrate/opaque.go | 44 ++++++---- internal/translate/migrate/states.go | 37 +++++--- internal/translate/migrate/swimlane.go | 17 ++-- internal/translate/migrate/values.go | 17 ++-- scripts/download-doc-pdf-toolchain.sh | 9 +- .../io/opensysml/fuml/FumlExpected.java | 26 +++--- 38 files changed, 475 insertions(+), 362 deletions(-) diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Connection.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Connection.java index 922bff7546..987c07d47c 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Connection.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Connection.java @@ -51,6 +51,8 @@ * } */ public final class Connection implements AutoCloseable { + private static final String NAME_OPTIONS = "options"; + private static final String NAME_CONTENT = "content"; private final ConnectTransport transport; private final String address; @@ -92,7 +94,7 @@ public static Connection open() { * @throws TransportException if the service could not be reached */ public static Connection open(ConnectionOptions options) { - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); Optional external = externalAddress(options); if (external.isPresent()) { String address = external.get(); @@ -217,7 +219,7 @@ public Model load(Path file, ParseOptions options) { * @throws ModelException if the source could not be parsed at all */ public Model parse(String content) { - Objects.requireNonNull(content, "content"); + Objects.requireNonNull(content, NAME_CONTENT); return parsed(ParseFileRequest.newBuilder().setContent(content).build()); } @@ -229,7 +231,7 @@ public Model parse(String content) { * @return the parsed model */ public Model parse(String content, ParseOptions options) { - Objects.requireNonNull(content, "content"); + Objects.requireNonNull(content, NAME_CONTENT); return parsed(request(options).setContent(content).build()); } @@ -267,7 +269,7 @@ public Model parseSources(List documents) { */ public Model parseSources(List documents, ParseOptions options) { Objects.requireNonNull(documents, "documents"); - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); capabilities.require(Capabilities.PARSE_SOURCES); if (options.strictConformance()) { capabilities.require(Capabilities.STRICT_CONFORMANCE); @@ -321,7 +323,7 @@ public Conversion convert(String content, String toFormat) { * @throws CapabilityException if the service does not advertise {@code convert} */ public Conversion convert(String content, String toFormat, ConversionOptions options) { - Objects.requireNonNull(content, "content"); + Objects.requireNonNull(content, NAME_CONTENT); return converted(ConvertRequest.newBuilder().setContent(content), toFormat, options); } @@ -420,7 +422,7 @@ private Model parsed(ParseFileRequest request) { private Conversion converted( ConvertRequest.Builder request, String toFormat, ConversionOptions options) { Objects.requireNonNull(toFormat, "toFormat"); - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); capabilities.require(Capabilities.CONVERT); request.setToFormat(toFormat).setTolerateSyntaxErrors(options.tolerateSyntaxErrors()); options.fromFormat().ifPresent(request::setFromFormat); @@ -434,7 +436,7 @@ private Conversion converted( } private static ParseFileRequest.Builder request(ParseOptions options) { - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); return ParseFileRequest.newBuilder() .setLanguage(options.language().wireName()) .setStrictConformance(options.strictConformance()); diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java index dcc3a0f968..62adb1f462 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java @@ -12,6 +12,8 @@ */ public sealed interface Edit { + String NAME_TARGET = "target"; + /** * Sets the value of a feature that already exists, replacing the expression of its {@code = * } or adding one before the declaration's {@code ;}. @@ -30,7 +32,7 @@ record SetValue(String target, String value) implements Edit { * @param value the new value, never {@code null} */ public SetValue { - Objects.requireNonNull(target, "target"); + Objects.requireNonNull(target, NAME_TARGET); Objects.requireNonNull(value, "value"); } } @@ -52,7 +54,7 @@ record Rename(String target, String newName) implements Edit { * @param newName the new name, never {@code null} */ public Rename { - Objects.requireNonNull(target, "target"); + Objects.requireNonNull(target, NAME_TARGET); Objects.requireNonNull(newName, "newName"); } } @@ -170,7 +172,7 @@ record Delete(String target, boolean cascade) implements Edit { * @param cascade whether referring declarations go too */ public Delete { - Objects.requireNonNull(target, "target"); + Objects.requireNonNull(target, NAME_TARGET); } } @@ -191,7 +193,7 @@ record Move(String target, String owner) implements Edit { * @param owner the receiving namespace, never {@code null} */ public Move { - Objects.requireNonNull(target, "target"); + Objects.requireNonNull(target, NAME_TARGET); Objects.requireNonNull(owner, "owner"); } } diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java index 29e5c044b0..d1e18a5f1b 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java @@ -72,6 +72,10 @@ * what the call needs. */ public final class Model { + private static final String EXPLORE = "explore"; + private static final String NAME_SUBJECT_SYMBOL_ID = "subjectSymbolId"; + private static final String NAME_SYMBOL_ID = "symbolId"; + private static final String NAME_OPTIONS = "options"; private final Connection connection; private final String hash; @@ -171,7 +175,7 @@ public Optional engine() { public Model withEngine(String engine) { Objects.requireNonNull(engine, "engine"); connection.capabilities().require(Capabilities.ENGINES); - if (engine.equals("explore")) { + if (engine.equals(EXPLORE)) { connection.capabilities().require(Capabilities.SCHEDULE_EXPLORE); } return new Model(connection, hash, roots, parseDiagnostics, Optional.of(engine)); @@ -263,7 +267,7 @@ public Value evalInContext(String expression, String contextSymbolId) { * would otherwise ignore rather than refuse */ public Value evalWithSubject(String expression, String subjectSymbolId) { - Objects.requireNonNull(subjectSymbolId, "subjectSymbolId"); + Objects.requireNonNull(subjectSymbolId, NAME_SUBJECT_SYMBOL_ID); connection.capabilities().require(Capabilities.EVALUATE_SUBJECT); return evaluated(request(expression).setSubjectSymbolId(subjectSymbolId).build()); } @@ -277,7 +281,7 @@ public Value evalWithSubject(String expression, String subjectSymbolId) { * @throws ServiceException if the service does not hold this model */ public Instantiation instantiate(String symbolId) { - Objects.requireNonNull(symbolId, "symbolId"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); InstantiateResponse response = connection.call( "Instantiate", @@ -503,12 +507,12 @@ public Verification verifyConstraint(String symbolId) { * @throws CapabilityException if the service does not advertise {@code verification} */ public Verification verifyConstraint(String symbolId, String subjectSymbolId) { - Objects.requireNonNull(subjectSymbolId, "subjectSymbolId"); + Objects.requireNonNull(subjectSymbolId, NAME_SUBJECT_SYMBOL_ID); return verifyConstraint(symbolId, Optional.of(subjectSymbolId)); } private Verification verifyConstraint(String symbolId, Optional subjectSymbolId) { - Objects.requireNonNull(symbolId, "symbolId"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); connection.capabilities().require(Capabilities.VERIFICATION); VerifyConstraintRequest.Builder request = VerifyConstraintRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId); @@ -546,12 +550,12 @@ public Verification verifyRequirement(String symbolId) { * @throws CapabilityException if the service does not advertise {@code verification} */ public Verification verifyRequirement(String symbolId, String subjectSymbolId) { - Objects.requireNonNull(subjectSymbolId, "subjectSymbolId"); + Objects.requireNonNull(subjectSymbolId, NAME_SUBJECT_SYMBOL_ID); return verifyRequirement(symbolId, Optional.of(subjectSymbolId)); } private Verification verifyRequirement(String symbolId, Optional subjectSymbolId) { - Objects.requireNonNull(symbolId, "symbolId"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); connection.capabilities().require(Capabilities.VERIFICATION); VerifyRequirementRequest.Builder request = VerifyRequirementRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId); @@ -616,7 +620,7 @@ private Satisfaction verifySatisfaction(Optional scopeSymbolId) { * @throws CapabilityException if the service does not advertise {@code verification} */ public Validation validateInstance(String symbolId) { - Objects.requireNonNull(symbolId, "symbolId"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); connection.capabilities().require(Capabilities.VERIFICATION); ValidateInstanceRequest.Builder request = ValidateInstanceRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId); @@ -640,7 +644,7 @@ public Validation validateInstance(String symbolId) { * @throws ServiceException if the service does not hold this model */ public Calculation evaluateCalc(String symbolId, List arguments) { - Objects.requireNonNull(symbolId, "symbolId"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); Objects.requireNonNull(arguments, "arguments"); EvaluateCalcRequest.Builder request = EvaluateCalcRequest.newBuilder() @@ -732,10 +736,10 @@ public Exploration exploreAnalysis(String symbolId, AnalysisOptions options) { private RunAnalysisResponse runAnalysis( String symbolId, AnalysisOptions options, boolean explore) { - Objects.requireNonNull(symbolId, "symbolId"); - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); + Objects.requireNonNull(options, NAME_OPTIONS); connection.capabilities().require(Capabilities.VERIFICATION); - if (!explore && engine.isPresent() && engine.orElseThrow().equals("explore")) { + if (!explore && engine.isPresent() && engine.orElseThrow().equals(EXPLORE)) { throw new IllegalArgumentException( "engine explore answers every outcome; use exploreAnalysis"); } @@ -813,7 +817,7 @@ public Conversion convert(String toFormat) { */ public Conversion convert(String toFormat, ConversionOptions options) { Objects.requireNonNull(toFormat, "toFormat"); - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); connection.capabilities().require(Capabilities.CONVERT); ConvertRequest.Builder request = ConvertRequest.newBuilder() @@ -863,7 +867,7 @@ public EditResult applyEdits(List edits) { */ public EditResult applyEdits(List edits, EditOptions options) { Objects.requireNonNull(edits, "edits"); - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); connection.capabilities().require(Capabilities.APPLY_EDITS); for (Edit edit : edits) { if (edit instanceof Edit.AddMember || edit instanceof Edit.Delete || edit instanceof Edit.Move) { @@ -923,9 +927,9 @@ public Sweep runSweep(String symbolId, List ranges) { * @throws CapabilityException if the service does not advertise {@code verification} */ public Sweep runSweep(String symbolId, List ranges, SweepOptions options) { - Objects.requireNonNull(symbolId, "symbolId"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); Objects.requireNonNull(ranges, "ranges"); - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); connection.capabilities().require(Capabilities.VERIFICATION); RunSweepRequest.Builder request = RunSweepRequest.newBuilder() @@ -1016,7 +1020,7 @@ public RenderedDocument renderDocument(String documentId) { } private String schedule(ExecutionOptions options, boolean explore) { - Objects.requireNonNull(options, "options"); + Objects.requireNonNull(options, NAME_OPTIONS); if (options.performer().isPresent()) { connection.capabilities().require(Capabilities.PERFORMER); } @@ -1030,7 +1034,7 @@ private String schedule(Optional schedule, boolean explores, boolean exp "schedule " + schedule.orElseThrow() + " runs once; an exploration takes explore"); } connection.capabilities().require(Capabilities.SCHEDULE_EXPLORE); - return schedule.orElse("explore"); + return schedule.orElse(EXPLORE); } if (explores) { throw new IllegalArgumentException( @@ -1057,7 +1061,7 @@ private static void failed( } private SymbolResponse symbolResponse(String symbolId) { - Objects.requireNonNull(symbolId, "symbolId"); + Objects.requireNonNull(symbolId, NAME_SYMBOL_ID); return connection.call( "GetSymbol", GetSymbolRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId).build(), diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/DocumentProtosTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/DocumentProtosTest.java index f41563df99..e51a6e5a7b 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/DocumentProtosTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/DocumentProtosTest.java @@ -1,7 +1,6 @@ package org.openmbee.opensysml.internal; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java index 6972ca6b2d..411efd6ad4 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java @@ -6,7 +6,6 @@ import java.nio.file.Path; import java.util.List; -import java.util.Optional; import org.junit.jupiter.api.Test; import org.openmbee.opensysml.Edit; import org.openmbee.opensysml.EditFailure; diff --git a/cmd/sysml/render_document_pdf_test.go b/cmd/sysml/render_document_pdf_test.go index 6b925db031..7760941404 100644 --- a/cmd/sysml/render_document_pdf_test.go +++ b/cmd/sysml/render_document_pdf_test.go @@ -123,11 +123,11 @@ printf '' > "$out" t.Fatal(err) } def := strings.Index(string(page), "@layer opensysml {") - print := strings.Index(string(page), "@layer opensysml-print {") + printLayer := strings.Index(string(page), "@layer opensysml-print {") reader := strings.Index(string(page), "rebeccapurple") link := strings.Index(string(page), ``) - if def < 0 || print < def || reader < print || link < reader { - t.Errorf("stylesheet order default=%d print=%d reader=%d link=%d:\n%s", def, print, reader, link, page) + if def < 0 || printLayer < def || reader < printLayer || link < reader { + t.Errorf("stylesheet order default=%d printLayer=%d reader=%d link=%d:\n%s", def, printLayer, reader, link, page) } if !strings.Contains(string(page), "/* report:") { t.Errorf("converter input misses the report theme:\n%s", page) diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java index c28e43b833..b7b5bb9c3e 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java @@ -39,15 +39,13 @@ public CompletableFuture get(DataFetchingEnvironment environment) { String inputError = null; for (Map value : (List>) argument.getOrDefault("inputs", List.of())) { String name = value.get("name"); - if (name == null || name.isBlank()) { + if (inputError == null && (name == null || name.isBlank())) { inputError = "input name must not be blank"; - break; - } - if (values.containsKey(name)) { + } else if (inputError == null && values.containsKey(name)) { inputError = "duplicate input name: " + name; - break; + } else if (inputError == null) { + values.put(name, value.get("expression")); } - values.put(name, value.get("expression")); } Map convertedArgument = new LinkedHashMap<>(argument); convertedArgument.put("inputs", values); diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java index 2c7d0d24c7..e3667757a8 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java @@ -23,31 +23,61 @@ public record MappedDiagnostic(RunDiagnostic diagnostic, Element element) { private final List instances; private final List mappedDiagnostics; - public RunResult(String modelHash, RunOperation operation, String target, boolean ok, String verdict, String schedule, - Double finalTime, List outputs, List trace, String resultText, - List outcomes, List verdicts, List instances, - List mappedDiagnostics) { - this.modelHash = modelHash; - this.operation = operation; - this.target = target; - this.ok = ok; - this.verdict = verdict; - this.schedule = schedule; - this.finalTime = finalTime; - this.outputs = List.copyOf(outputs); - this.trace = List.copyOf(trace); - this.outcomes = List.copyOf(outcomes); - this.resultText = resultText; - this.verdicts = List.copyOf(verdicts); - this.instances = List.copyOf(instances); - this.mappedDiagnostics = List.copyOf(mappedDiagnostics); + private RunResult(Builder builder) { + this.modelHash = builder.modelHash; + this.operation = builder.operation; + this.target = builder.target; + this.ok = builder.ok; + this.verdict = builder.verdict; + this.schedule = builder.schedule; + this.finalTime = builder.finalTime; + this.outputs = List.copyOf(builder.outputs); + this.trace = List.copyOf(builder.trace); + this.outcomes = List.copyOf(builder.outcomes); + this.resultText = builder.resultText; + this.verdicts = List.copyOf(builder.verdicts); + this.instances = List.copyOf(builder.instances); + this.mappedDiagnostics = List.copyOf(builder.mappedDiagnostics); } - public RunResult(String modelHash, RunOperation operation, String target, boolean ok, String verdict, String schedule, - Double finalTime, List outputs, List trace, String resultText, - List verdicts, List instances, List mappedDiagnostics) { - this(modelHash, operation, target, ok, verdict, schedule, finalTime, outputs, trace, resultText, List.of(), - verdicts, instances, mappedDiagnostics); + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private String modelHash; + private RunOperation operation; + private String target; + private boolean ok; + private String verdict; + private String schedule; + private Double finalTime; + private List outputs = List.of(); + private List trace = List.of(); + private List outcomes = List.of(); + private String resultText; + private List verdicts = List.of(); + private List instances = List.of(); + private List mappedDiagnostics = List.of(); + + public Builder modelHash(String modelHash) { this.modelHash = modelHash; return this; } + public Builder operation(RunOperation operation) { this.operation = operation; return this; } + public Builder target(String target) { this.target = target; return this; } + public Builder ok(boolean ok) { this.ok = ok; return this; } + public Builder verdict(String verdict) { this.verdict = verdict; return this; } + public Builder schedule(String schedule) { this.schedule = schedule; return this; } + public Builder finalTime(Double finalTime) { this.finalTime = finalTime; return this; } + public Builder outputs(List outputs) { this.outputs = outputs; return this; } + public Builder trace(List trace) { this.trace = trace; return this; } + public Builder outcomes(List outcomes) { this.outcomes = outcomes; return this; } + public Builder resultText(String resultText) { this.resultText = resultText; return this; } + public Builder verdicts(List verdicts) { this.verdicts = verdicts; return this; } + public Builder instances(List instances) { this.instances = instances; return this; } + public Builder mappedDiagnostics(List mappedDiagnostics) { + this.mappedDiagnostics = mappedDiagnostics; + return this; + } + public RunResult build() { return new RunResult(this); } } public String modelHash() { return modelHash; } @@ -70,7 +100,7 @@ public List diagnostics() { public static RunResult failure(String hash, RunOperation operation, String target, String message) { RunDiagnostic diagnostic = new RunDiagnostic("error", message, "", null, null, null, null, null); - return new RunResult(hash, operation, target, false, null, null, null, List.of(), List.of(), null, - List.of(), List.of(), List.of(), List.of(new MappedDiagnostic(diagnostic, null))); + return RunResult.builder().modelHash(hash).operation(operation).target(target) + .mappedDiagnostics(List.of(new MappedDiagnostic(diagnostic, null))).build(); } } diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java index 93b0dbdbe1..d1f849ef6e 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java @@ -89,9 +89,8 @@ public RunResult run(IEMFEditingContext context, Element target, RunWithOpenSysM mappedDiagnostics.forEach(value -> resultDiagnostics.add( new RunResult.MappedDiagnostic(value.diagnostic(), value.element()))); resultDiagnostics.add(new RunResult.MappedDiagnostic(diagnostic, selected.element())); - RunResult result = new RunResult("", input.operation(), targetName, false, null, null, null, List.of(), - List.of(), null, List.of(), List.of(), List.of(), - resultDiagnostics); + RunResult result = RunResult.builder().operation(input.operation()).target(targetName) + .mappedDiagnostics(resultDiagnostics).build(); store.put(context.getId(), result); return result; } @@ -125,9 +124,11 @@ private ResultParts dispatch(Model model, String target, RunWithOpenSysMLInput i : model.verifyConstraint(target, input.subject()), project); case VERIFY_REQUIREMENT -> ResultParts.verification(input.subject() == null ? model.verifyRequirement(target) : model.verifyRequirement(target, input.subject()), project); - case VERIFY_SATISFACTION -> ResultParts.satisfaction( - input.subject() == null ? model.verifySatisfaction(target) : model.verifySatisfaction(input.subject()), - project); + case VERIFY_SATISFACTION -> { + Satisfaction result = input.subject() == null ? model.verifySatisfaction(target) + : model.verifySatisfaction(input.subject()); + yield ResultParts.satisfaction(result, project); + } case EVALUATE_CALC -> ResultParts.calculation(model.evaluateCalc(target, arguments(model, input)), project); case RUN_ANALYSIS -> ResultParts.analysis(model.runAnalysis(target, new AnalysisOptions(Optional.ofNullable(input.subject()), arguments(model, input), @@ -154,12 +155,17 @@ private RunResult result(String hash, RunWithOpenSysMLInput input, String target mapped.forEach(value -> { mappedDiagnostics.add(new RunResult.MappedDiagnostic(value.diagnostic(), value.element())); }); - return new RunResult(hash, input.operation(), target, parts.ok, parts.verdict, parts.schedule, parts.finalTime, - parts.outputs, parts.trace, parts.resultText, parts.outcomes, parts.verdicts, parts.instances, - mappedDiagnostics); + return RunResult.builder().modelHash(hash).operation(input.operation()).target(target).ok(parts.ok) + .verdict(parts.verdict).schedule(parts.schedule).finalTime(parts.finalTime).outputs(parts.outputs) + .trace(parts.trace).resultText(parts.resultText).outcomes(parts.outcomes).verdicts(parts.verdicts) + .instances(parts.instances).mappedDiagnostics(mappedDiagnostics).build(); } static final class ResultParts { + private static final String HOLDS = "holds"; + private static final String VIOLATED = "violated"; + private static final String UNDECIDED = "undecided"; + private final ExportedProject project; private boolean ok = true; private String verdict; @@ -244,9 +250,7 @@ static ResultParts exploration(Exploration result, ExportedProject project) { } static ResultParts verification(Verification result, ExportedProject project) { ResultParts p = new ResultParts(project); - p.verdict = result.verdict().decided() - ? (result.verdict().holds() ? "holds" : "violated") - : "undecided"; + p.verdict = verdictLabel(result.verdict().decided(), result.verdict().holds(), HOLDS, VIOLATED); p.diagnostics = result.diagnostics(); p.verdicts = List.of(p.verdict(result.verdict())); p.instances = p.instances(result.instances()); @@ -255,8 +259,8 @@ static ResultParts verification(Verification result, ExportedProject project) { static ResultParts satisfaction(Satisfaction result, ExportedProject project) { ResultParts p = new ResultParts(project); p.verdicts = result.verdicts().stream().map(p::verdict).toList(); - p.verdict = result.verdicts().stream().anyMatch(verdict -> !verdict.decided()) - ? "undecided" : result.holds() ? "pass" : "fail"; + p.verdict = verdictLabel(result.verdicts().stream().allMatch(RunVerdict::decided), + result.holds(), "pass", "fail"); p.diagnostics = result.diagnostics(); p.instances = p.instances(result.instances()); return p; @@ -270,8 +274,8 @@ static ResultParts calculation(Calculation result, ExportedProject project) { } static ResultParts analysis(Analysis result, ExportedProject project) { ResultParts p = new ResultParts(project); - p.verdict = result.verdicts().stream().anyMatch(verdict -> !verdict.decided()) - ? "undecided" : result.holds() ? "holds" : "violated"; + p.verdict = verdictLabel(result.verdicts().stream().allMatch(RunVerdict::decided), + result.holds(), HOLDS, VIOLATED); p.outputs = values(result.outputs()); p.verdicts = result.verdicts().stream().map(p::verdict).toList(); p.diagnostics = result.diagnostics(); @@ -281,12 +285,19 @@ static ResultParts analysis(Analysis result, ExportedProject project) { static ResultParts validation(org.openmbee.opensysml.Validation result, ExportedProject project) { ResultParts p = new ResultParts(project); p.verdicts = result.verdicts().stream().map(p::verdict).toList(); - p.verdict = result.summary().decided() - ? (result.holds() ? "holds" : "violated") : "undecided"; + p.verdict = verdictLabel(result.summary().decided(), result.holds(), HOLDS, VIOLATED); p.diagnostics = result.diagnostics(); p.instances = p.instances(result.instances()); return p; } + // verdictLabel is the summary word a decided verdict writes. + static String verdictLabel(boolean decided, boolean holds, String holdsLabel, String failsLabel) { + if (!decided) { + return UNDECIDED; + } + return holds ? holdsLabel : failsLabel; + } + static List values(Map values) { return values.entrySet().stream() .map(entry -> new RunNamedValue(entry.getKey(), ValueText.render(entry.getValue()))) diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/DiagnosticMapperTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/DiagnosticMapperTest.java index 2fe5ffbe28..3018fa3d57 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/DiagnosticMapperTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/DiagnosticMapperTest.java @@ -12,17 +12,18 @@ import org.openmbee.opensysml.syson.run.DiagnosticMapper; class DiagnosticMapperTest { + private static final String PKG_A = "Pkg::A"; @Test void mapsSpanAndNamedElement() { - FakeElement element = new FakeElement("Pkg::A"); - ElementIndex index = new ElementIndex(Map.of("Pkg::A", - new ElementIndex.IndexedElement("Pkg::A", "id-Pkg::A", "sirius://a", element))); + FakeElement element = new FakeElement(PKG_A); + ElementIndex index = new ElementIndex(Map.of(PKG_A, + new ElementIndex.IndexedElement(PKG_A, "id-Pkg::A", "sirius://a", element))); ExportedProject project = new ExportedProject(List.of(), index, List.of(), List.of(new ExportedProject.DocumentRange("doc.sysml", 1, 3, element))); Diagnostic diagnostic = new Diagnostic(Diagnostic.Severity.ERROR, "failed in Pkg::A", "syntax", java.util.Optional.of(new Diagnostic.Span("doc.sysml", 2, 1, 2, 2))); var mapped = DiagnosticMapper.map(diagnostic, project); - assertThat(mapped.diagnostic().qualifiedName()).isEqualTo("Pkg::A"); + assertThat(mapped.diagnostic().qualifiedName()).isEqualTo(PKG_A); assertThat(mapped.element()).isSameAs(element); } } diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ElementIndexTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ElementIndexTest.java index 8a144e4875..45b488bad9 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ElementIndexTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ElementIndexTest.java @@ -8,11 +8,12 @@ import org.openmbee.opensysml.syson.identity.ElementIndex; class ElementIndexTest { + private static final String PKG_A = "Pkg::A"; @Test void findsQuotedAndBareQualifiedNames() { - FakeElement element = new FakeElement("Pkg::A"); - ElementIndex index = new ElementIndex(Map.of("Pkg::A", - new ElementIndex.IndexedElement("Pkg::A", "id-Pkg::A", "sirius://a", element))); + FakeElement element = new FakeElement(PKG_A); + ElementIndex index = new ElementIndex(Map.of(PKG_A, + new ElementIndex.IndexedElement(PKG_A, "id-Pkg::A", "sirius://a", element))); assertThat(index.firstNamedIn("bad in 'Pkg::A'").orElseThrow().element()).isSameAs(element); assertThat(index.firstNamedIn("bad at Pkg::A").orElseThrow().element()).isSameAs(element); } diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.java index 10a2045d02..8799f5b7dd 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.java @@ -13,6 +13,7 @@ import org.openmbee.opensysml.syson.validation.OpenSysMLValidationService; class OpenSysMLValidationServiceTest { + private static final String PKG_A = "Pkg::A"; @Test void emptyValidationHasNoDiagnostics() { assertThat(new OpenSysMLValidationService(new RunResultStore()).validate(new Object(), null)).isEmpty(); @@ -21,31 +22,27 @@ void emptyValidationHasNoDiagnostics() { @Test void storesDiagnosticsByEditingContext() { RunResultStore store = new RunResultStore(); - store.put("ctx", new RunResult("", RunOperation.INSTANTIATE, "Pkg::A", false, null, null, null, - List.of(), List.of(), null, - List.of(), List.of(), List.of(new MappedDiagnostic( - new RunDiagnostic("error", "bad", "x", null, null, null, null, null), null)))); - assertThat(new OpenSysMLValidationService(store).validate(new org.eclipse.sirius.components.core.api.IEditingContext() { - public String getId() { return "ctx"; } - })).hasSize(1); + store.put("ctx", RunResult.builder().operation(RunOperation.INSTANTIATE).target(PKG_A) + .mappedDiagnostics(List.of(new MappedDiagnostic( + new RunDiagnostic("error", "bad", "x", null, null, null, null, null), null))).build()); + assertThat(new OpenSysMLValidationService(store) + .validate((org.eclipse.sirius.components.core.api.IEditingContext) () -> "ctx")).hasSize(1); } @Test void preservesMappedAndUnmappedDiagnostics() { RunResultStore store = new RunResultStore(); - FakeElement element = new FakeElement("Pkg::A"); - RunDiagnostic mapped = new RunDiagnostic("error", "mapped", "x", null, null, "Pkg::A", "id-Pkg::A", + FakeElement element = new FakeElement(PKG_A); + RunDiagnostic mapped = new RunDiagnostic("error", "mapped", "x", null, null, PKG_A, "id-Pkg::A", "sirius://a"); RunDiagnostic unmapped = new RunDiagnostic("warning", "unmapped", "y", null, null, null, null, null); - RunResult result = new RunResult("", RunOperation.INSTANTIATE, "Pkg::A", false, null, null, null, - List.of(), List.of(), null, List.of(), List.of(), - List.of(new MappedDiagnostic(mapped, element), new MappedDiagnostic(unmapped, null))); + RunResult result = RunResult.builder().operation(RunOperation.INSTANTIATE).target(PKG_A) + .mappedDiagnostics(List.of(new MappedDiagnostic(mapped, element), new MappedDiagnostic(unmapped, null))) + .build(); store.put("ctx", result); List diagnostics = new OpenSysMLValidationService(store).validate( - new org.eclipse.sirius.components.core.api.IEditingContext() { - public String getId() { return "ctx"; } - }); + (org.eclipse.sirius.components.core.api.IEditingContext) () -> "ctx"); assertThat(diagnostics).hasSize(2); assertThat(((org.eclipse.emf.common.util.BasicDiagnostic) diagnostics.get(0)).getData()).hasSize(1); diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunResultStoreTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunResultStoreTest.java index c08554077c..b748bccaa0 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunResultStoreTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunResultStoreTest.java @@ -30,8 +30,7 @@ void clearsOnEditingContextDisposalAndResubscribes() { when(provider.getIfAvailable()).thenReturn(registry); RunResultStore store = new RunResultStore(provider); - RunResult result = new RunResult("", RunOperation.INSTANTIATE, "A", true, null, null, null, - List.of(), List.of(), null, List.of(), List.of(), List.of()); + RunResult result = RunResult.builder().operation(RunOperation.INSTANTIATE).target("A").ok(true).build(); store.put("ctx", result); assertThat(store.latest("ctx")).contains(result); diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java index 52b2c38ef0..652eecebb5 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java @@ -31,21 +31,23 @@ import org.openmbee.opensysml.syson.run.RunWithOpenSysMLService; class RunWithOpenSysMLServiceAnalysisTest { + private static final String ANALYSIS = "Analysis"; + private static final String ANALYSIS_ID = ANALYSIS_ID; @Test void passesAnalysisOptionsToModel() { Connection connection = mock(Connection.class); Model model = mock(Model.class); Element target = mock(Element.class); - when(target.getQualifiedName()).thenReturn("Analysis"); - when(target.getElementId()).thenReturn("analysis-id"); + when(target.getQualifiedName()).thenReturn(ANALYSIS); + when(target.getElementId()).thenReturn(ANALYSIS_ID); when(connection.parseSources(any())).thenReturn(model); when(model.diagnostics()).thenReturn(List.of()); when(model.hash()).thenReturn("hash"); when(model.eval("21")).thenReturn(new Value.IntegerValue(21)); - when(model.runAnalysis(eq("Analysis"), any(AnalysisOptions.class))) + when(model.runAnalysis(eq(ANALYSIS), any(AnalysisOptions.class))) .thenReturn(new Analysis(Map.of(), List.of(), List.of(), List.of(), List.of(), List.of(), Standing.none())); ExportedProject project = new ExportedProject(List.of(), - new ElementIndex(Map.of("Analysis", new ElementIndex.IndexedElement("Analysis", "analysis-id", + new ElementIndex(Map.of(ANALYSIS, new ElementIndex.IndexedElement(ANALYSIS, ANALYSIS_ID, "sirius-id", target))), List.of(), List.of()); ProjectExporter exporter = context -> project; @@ -54,11 +56,11 @@ void passesAnalysisOptionsToModel() { RunWithOpenSysMLService service = new RunWithOpenSysMLService(connection, exporter, new RunResultStore(), new OpenSysMLProperties()); - service.run(context, target, new RunWithOpenSysMLInput(UUID.randomUUID(), "ctx", "analysis-id", + service.run(context, target, new RunWithOpenSysMLInput(UUID.randomUUID(), "ctx", ANALYSIS_ID, RunOperation.RUN_ANALYSIS, Map.of("x", "21"), List.of(), List.of("21"), "declared", "subject")); ArgumentCaptor options = ArgumentCaptor.forClass(AnalysisOptions.class); - verify(model).runAnalysis(eq("Analysis"), options.capture()); + verify(model).runAnalysis(eq(ANALYSIS), options.capture()); assertThat(options.getValue().subject()).isEqualTo(Optional.of("subject")); assertThat(options.getValue().arguments()).containsExactly(new Value.IntegerValue(21)); assertThat(options.getValue().namedArguments()).containsEntry("x", new Value.IntegerValue(21)); diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java index 5af844ec0d..5e0e77ed2c 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java @@ -24,25 +24,27 @@ import org.openmbee.opensysml.syson.run.RunWithOpenSysMLService; class RunWithOpenSysMLServiceTest { + private static final String VEHICLE = "Vehicle"; + private static final String VEHICLE_ID = VEHICLE_ID; @Test void doesNotEvaluateStaleArgumentsWhenInstantiating() { Connection connection = org.mockito.Mockito.mock(Connection.class); Model model = org.mockito.Mockito.mock(Model.class); Element target = org.mockito.Mockito.mock(Element.class); - org.mockito.Mockito.when(target.getQualifiedName()).thenReturn("Vehicle"); - org.mockito.Mockito.when(target.getElementId()).thenReturn("vehicle-id"); + org.mockito.Mockito.when(target.getQualifiedName()).thenReturn(VEHICLE); + org.mockito.Mockito.when(target.getElementId()).thenReturn(VEHICLE_ID); org.mockito.Mockito.when(connection.parseSources(org.mockito.ArgumentMatchers.any())) .thenReturn(model); org.mockito.Mockito.when(model.diagnostics()).thenReturn(List.of()); org.mockito.Mockito.when(model.hash()).thenReturn("hash"); Instance instance = org.mockito.Mockito.mock(Instance.class); org.mockito.Mockito.when(instance.id()).thenReturn(1L); - org.mockito.Mockito.when(instance.typeSymbolId()).thenReturn("Vehicle"); + org.mockito.Mockito.when(instance.typeSymbolId()).thenReturn(VEHICLE); org.mockito.Mockito.when(instance.featureValues()).thenReturn(Map.of()); - org.mockito.Mockito.when(model.instantiate("Vehicle")) + org.mockito.Mockito.when(model.instantiate(VEHICLE)) .thenReturn(new Instantiation(instance, List.of(instance), List.of())); ExportedProject project = new ExportedProject(List.of(SourceDocument.inline("vehicle.sysml", "part def Vehicle;")), - new ElementIndex(Map.of("Vehicle", new ElementIndex.IndexedElement("Vehicle", "vehicle-id", + new ElementIndex(Map.of(VEHICLE, new ElementIndex.IndexedElement(VEHICLE, VEHICLE_ID, "sirius-id", target))), List.of(), List.of()); IEMFEditingContext context = org.mockito.Mockito.mock(IEMFEditingContext.class); @@ -50,7 +52,7 @@ void doesNotEvaluateStaleArgumentsWhenInstantiating() { RunWithOpenSysMLService service = new RunWithOpenSysMLService(connection, ignored -> project, new RunResultStore(), new OpenSysMLProperties()); - service.run(context, target, new RunWithOpenSysMLInput(UUID.randomUUID(), "ctx", "vehicle-id", + service.run(context, target, new RunWithOpenSysMLInput(UUID.randomUUID(), "ctx", VEHICLE_ID, RunOperation.INSTANTIATE, Map.of("stale", "1"), List.of(), List.of("2"), null, null)); org.mockito.Mockito.verify(model, org.mockito.Mockito.never()).eval(org.mockito.ArgumentMatchers.anyString()); @@ -61,16 +63,16 @@ void scopesSatisfactionToTargetWhenSubjectIsAbsent() { Connection connection = org.mockito.Mockito.mock(Connection.class); Model model = org.mockito.Mockito.mock(Model.class); Element target = org.mockito.Mockito.mock(Element.class); - org.mockito.Mockito.when(target.getQualifiedName()).thenReturn("Vehicle"); - org.mockito.Mockito.when(target.getElementId()).thenReturn("vehicle-id"); + org.mockito.Mockito.when(target.getQualifiedName()).thenReturn(VEHICLE); + org.mockito.Mockito.when(target.getElementId()).thenReturn(VEHICLE_ID); org.mockito.Mockito.when(connection.parseSources(org.mockito.ArgumentMatchers.any())) .thenReturn(model); org.mockito.Mockito.when(model.diagnostics()).thenReturn(List.of()); org.mockito.Mockito.when(model.hash()).thenReturn("hash"); - org.mockito.Mockito.when(model.verifySatisfaction("Vehicle")) + org.mockito.Mockito.when(model.verifySatisfaction(VEHICLE)) .thenReturn(new Satisfaction(List.of(), List.of(), List.of(), List.of())); ExportedProject project = new ExportedProject(List.of(SourceDocument.inline("vehicle.sysml", "part def Vehicle;")), - new ElementIndex(Map.of("Vehicle", new ElementIndex.IndexedElement("Vehicle", "vehicle-id", + new ElementIndex(Map.of(VEHICLE, new ElementIndex.IndexedElement(VEHICLE, VEHICLE_ID, "sirius-id", target))), List.of(), List.of()); IEMFEditingContext context = org.mockito.Mockito.mock(IEMFEditingContext.class); @@ -78,10 +80,10 @@ void scopesSatisfactionToTargetWhenSubjectIsAbsent() { RunWithOpenSysMLService service = new RunWithOpenSysMLService(connection, ignored -> project, new RunResultStore(), new OpenSysMLProperties()); - service.run(context, target, new RunWithOpenSysMLInput(UUID.randomUUID(), "ctx", "vehicle-id", + service.run(context, target, new RunWithOpenSysMLInput(UUID.randomUUID(), "ctx", VEHICLE_ID, RunOperation.VERIFY_SATISFACTION, Map.of(), List.of(), List.of(), null, null)); - org.mockito.Mockito.verify(model).verifySatisfaction("Vehicle"); + org.mockito.Mockito.verify(model).verifySatisfaction(VEHICLE); org.mockito.Mockito.verify(model, org.mockito.Mockito.never()).verifySatisfaction(); } diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java index 948a97632c..cbe85acb4b 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java @@ -21,6 +21,7 @@ import org.openmbee.opensysml.syson.run.RunWithOpenSysMLService.ResultParts; class RunVerdictSummaryTest { + private static final String UNDECIDED = "undecided"; private static final ExportedProject PROJECT = new ExportedProject(List.of(), new ElementIndex(java.util.Map.of()), List.of(), List.of()); private static final Standing STANDING = Standing.none(); @@ -32,7 +33,7 @@ void mapsSatisfactionDecidedAndUndecidedSummaries() { assertThat(ResultParts.satisfaction(new Satisfaction(List.of(verdict(false, false)), List.of(), List.of(), List.of()), PROJECT).verdict()).isEqualTo("fail"); assertThat(ResultParts.satisfaction(new Satisfaction(List.of(verdict(false, true)), List.of(), List.of(), - List.of()), PROJECT).verdict()).isEqualTo("undecided"); + List.of()), PROJECT).verdict()).isEqualTo(UNDECIDED); } @Test @@ -42,7 +43,7 @@ void mapsValidationDecidedAndUndecidedSummaries() { assertThat(ResultParts.validation(new Validation(verdict(false, false), List.of(), List.of(), List.of(), List.of(), true), PROJECT).verdict()).isEqualTo("violated"); assertThat(ResultParts.validation(new Validation(verdict(false, true), List.of(), List.of(), List.of(), - List.of(), true), PROJECT).verdict()).isEqualTo("undecided"); + List.of(), true), PROJECT).verdict()).isEqualTo(UNDECIDED); } @Test @@ -55,7 +56,7 @@ void mapsAnalysisDecidedAndUndecidedSummaries() { assertThat(ResultParts.analysis(new Analysis(java.util.Map.of(), List.of(verdict(false, false)), List.of(), List.of(), List.of(), List.of(), STANDING), PROJECT).verdict()).isEqualTo("violated"); assertThat(ResultParts.analysis(new Analysis(java.util.Map.of(), List.of(verdict(false, true)), List.of(), - List.of(), List.of(), List.of(), STANDING), PROJECT).verdict()).isEqualTo("undecided"); + List.of(), List.of(), List.of(), STANDING), PROJECT).verdict()).isEqualTo(UNDECIDED); } @Test diff --git a/editors/syson/backend/src/test/stubs-java/org/openmbee/opensysml/syson/FakeElement.java b/editors/syson/backend/src/test/stubs-java/org/openmbee/opensysml/syson/FakeElement.java index c006696e64..f960605b7b 100644 --- a/editors/syson/backend/src/test/stubs-java/org/openmbee/opensysml/syson/FakeElement.java +++ b/editors/syson/backend/src/test/stubs-java/org/openmbee/opensysml/syson/FakeElement.java @@ -36,7 +36,7 @@ public FakeElement addChild(FakeElement child) { return this; } @Override public String getDeclaredName() { return declaredName; } - @Override public String getName() { return declaredName; } + @Override public String getName() { return getDeclaredName(); } @Override public String getQualifiedName() { return qualifiedName; } @Override public String getElementId() { return elementId; } @Override public boolean isIsLibraryElement() { return library; } diff --git a/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx b/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx index ec9f7125e0..936528aebb 100644 --- a/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx +++ b/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx @@ -47,6 +47,16 @@ const usesSchedule = (operation: GQLRunOperation) => operation === 'EXECUTE_STATE' || operation === 'EXPLORE_STATE' || operation === 'RUN_ANALYSIS'; +const inputNameError = (inputs: GQLRunInputValue[], name: string, index: number): string | undefined => { + if (name.trim() === '') { + return 'Input name is required'; + } + if (inputs.findIndex((entry) => entry.name === name) !== index) { + return 'Duplicate input name'; + } + return undefined; +}; + const usesSubject = (operation: GQLRunOperation) => operation === 'VERIFY_CONSTRAINT' || operation === 'VERIFY_REQUIREMENT' || @@ -90,6 +100,27 @@ export const RunWithOpenSysMLDialog = ({ setSelection({ entries: [{ id: siriusId }] }); }; + const updateInput = (index: number, field: 'name' | 'expression', value: string): void => { + setInputs((previous) => + previous.map((entry, entryIndex) => (entryIndex === index ? { ...entry, [field]: value } : entry)) + ); + }; + const removeInput = (index: number): void => { + setInputs((previous) => previous.filter((_, entryIndex) => entryIndex !== index)); + }; + const updateEvent = (index: number, value: string): void => { + setEvents((previous) => previous.map((entry, entryIndex) => (entryIndex === index ? value : entry))); + }; + const removeEvent = (index: number): void => { + setEvents((previous) => previous.filter((_, entryIndex) => entryIndex !== index)); + }; + const updateArgument = (index: number, value: string): void => { + setArgumentsText((previous) => previous.map((entry, entryIndex) => (entryIndex === index ? value : entry))); + }; + const removeArgument = (index: number): void => { + setArgumentsText((previous) => previous.filter((_, entryIndex) => entryIndex !== index)); + }; + return ( Run with OpenSysML: {elementLabel} @@ -121,35 +152,17 @@ export const RunWithOpenSysMLDialog = ({ input.name.trim() === '' || (input.name !== '' && inputs.findIndex((entry) => entry.name === input.name) !== index) } - helperText={ - input.name.trim() === '' - ? 'Input name is required' - : input.name !== '' && inputs.findIndex((entry) => entry.name === input.name) !== index - ? 'Duplicate input name' - : undefined - } - onChange={(event) => - setInputs((previous) => - previous.map((entry, entryIndex) => - entryIndex === index ? { ...entry, name: event.target.value } : entry - ) - ) - } + helperText={inputNameError(inputs, input.name, index)} + onChange={(event) => updateInput(index, 'name', event.target.value)} /> - setInputs((previous) => - previous.map((entry, entryIndex) => - entryIndex === index ? { ...entry, expression: event.target.value } : entry - ) - ) - } + onChange={(event) => updateInput(index, 'expression', event.target.value)} /> @@ -171,15 +184,11 @@ export const RunWithOpenSysMLDialog = ({ margin="normal" label={`Event ${index + 1}`} value={event} - onChange={(change) => - setEvents((previous) => - previous.map((entry, entryIndex) => (entryIndex === index ? change.target.value : entry)) - ) - } + onChange={(change) => updateEvent(index, change.target.value)} /> @@ -199,17 +208,11 @@ export const RunWithOpenSysMLDialog = ({ margin="normal" label={`Argument ${index + 1}`} value={argument} - onChange={(change) => - setArgumentsText((previous) => - previous.map((entry, entryIndex) => (entryIndex === index ? change.target.value : entry)) - ) - } + onChange={(change) => updateArgument(index, change.target.value)} /> diff --git a/editors/syson/frontend/src/extension/RunWithOpenSysMLMenuContribution.tsx b/editors/syson/frontend/src/extension/RunWithOpenSysMLMenuContribution.tsx index 785e411901..86c72ea233 100644 --- a/editors/syson/frontend/src/extension/RunWithOpenSysMLMenuContribution.tsx +++ b/editors/syson/frontend/src/extension/RunWithOpenSysMLMenuContribution.tsx @@ -20,31 +20,13 @@ type GQLTreeItem = { selectable: boolean; }; +// The props of Sirius' TreeItemContextMenuComponentProps this menu uses; the +// rest are optional to it and unused here. type TreeItemContextMenuComponentProps = { editingContextId: string; treeId: string; item: GQLTreeItem; - entry: { - id: string; - label: string; - iconURL: string[]; - keyBindings: { - isCtrl: boolean; - isMeta: boolean; - isAlt: boolean; - key: string; - }[]; - __typename: string; - } | null; - readOnly: boolean; - expandItem: () => void; - selectTreeItems: (selectedTreeItemIds: string[]) => void; - onExpandedElementChange: (expanded: string[], maxDepth: number) => void; onClose: () => void; - key: string; - expanded: string[]; - maxDepth: number; - selectedTreeItemIds: string[]; }; export const RunWithOpenSysMLMenuContribution = forwardRef( diff --git a/editors/syson/frontend/src/results/RunResultsPanel.tsx b/editors/syson/frontend/src/results/RunResultsPanel.tsx index 97cf9918a5..ffa530c48e 100644 --- a/editors/syson/frontend/src/results/RunResultsPanel.tsx +++ b/editors/syson/frontend/src/results/RunResultsPanel.tsx @@ -48,6 +48,13 @@ const verdictColor = (result: GQLOpenSysMLRunResult): 'success' | 'error' | 'war const verdictLabel = (result: GQLOpenSysMLRunResult): string => result.verdict ?? (result.ok ? 'completed' : 'failed'); +const verdictIcon = (verdict: GQLOpenSysMLRunResult['verdicts'][number]) => { + if (!verdict.decided) { + return ; + } + return verdict.holds ? : ; +}; + const diagnosticIcon = (severity: string) => { switch (severity.toLowerCase()) { case 'error': @@ -112,8 +119,8 @@ export const RunResultsPanel = ({ result, onSelectElement }: RunResultsPanelProp {result.outcomes.length >= 1 && (
Outcomes ({result.outcomes.length}) - {result.outcomes.map((outcome, index) => ( -
+ {result.outcomes.map((outcome) => ( +
{outcome.outputs.length > 0 && ( outputs: {outcome.outputs.map((output) => `${output.name} = ${output.value}`).join(', ')} @@ -146,15 +153,7 @@ export const RunResultsPanel = ({ result, onSelectElement }: RunResultsPanelProp {result.verdicts.map((verdict, index) => { const content = ( <> - {verdict.subject} {verdict.kind}{' '} - {!verdict.decided ? ( - - ) : verdict.holds ? ( - - ) : ( - - )}{' '} - {verdict.detail ?? ''} + {verdict.subject} {verdict.kind} {verdictIcon(verdict)} {verdict.detail ?? ''} ); return ( @@ -164,15 +163,7 @@ export const RunResultsPanel = ({ result, onSelectElement }: RunResultsPanelProp onClick={() => verdict.siriusId && onSelectElement?.(verdict.siriusId)}> {verdict.subject} {verdict.kind} - - {!verdict.decided ? ( - - ) : verdict.holds ? ( - - ) : ( - - )} - + {verdictIcon(verdict)} {content} ); @@ -213,11 +204,12 @@ export const RunResultsPanel = ({ result, onSelectElement }: RunResultsPanelProp ) : ( {result.diagnostics.map((diagnostic, index) => { - const text = `${diagnostic.message}${ + const location = diagnostic.documentName && diagnostic.line !== null ? ` (${diagnostic.documentName}:${diagnostic.line})` - : '' - }${diagnostic.qualifiedName ? ` [${diagnostic.qualifiedName}]` : ''}`; + : ''; + const qualified = diagnostic.qualifiedName ? ` [${diagnostic.qualifiedName}]` : ''; + const text = `${diagnostic.message}${location}${qualified}`; const primary = ( <> {diagnosticIcon(diagnostic.severity)} {text} diff --git a/editors/syson/frontend/src/test/setup.ts b/editors/syson/frontend/src/test/setup.ts index 409d90ce74..188ed37fa2 100644 --- a/editors/syson/frontend/src/test/setup.ts +++ b/editors/syson/frontend/src/test/setup.ts @@ -1,7 +1,6 @@ -import { expect } from 'vitest'; +import { afterEach, expect } from 'vitest'; import * as matchers from '@testing-library/jest-dom/matchers'; import { cleanup } from '@testing-library/react'; -import { afterEach } from 'vitest'; expect.extend(matchers); afterEach(() => cleanup()); diff --git a/internal/doc/docpdf/converter.go b/internal/doc/docpdf/converter.go index c9375c15f9..8e47475d2b 100644 --- a/internal/doc/docpdf/converter.go +++ b/internal/doc/docpdf/converter.go @@ -6,7 +6,7 @@ package docpdf import ( "context" - _ "embed" + _ "embed" // for the //go:embed directives below "fmt" "io" "os" diff --git a/internal/doc/docpdf/docpdf.go b/internal/doc/docpdf/docpdf.go index 6c1b51ee5c..fa7f451b08 100644 --- a/internal/doc/docpdf/docpdf.go +++ b/internal/doc/docpdf/docpdf.go @@ -1,7 +1,7 @@ package docpdf import ( - _ "embed" + _ "embed" // for the //go:embed directives below "net/url" "os" "path/filepath" diff --git a/internal/doc/docpdf/docpdf_test.go b/internal/doc/docpdf/docpdf_test.go index f609b12f0a..6acc7efd57 100644 --- a/internal/doc/docpdf/docpdf_test.go +++ b/internal/doc/docpdf/docpdf_test.go @@ -405,10 +405,10 @@ func TestPrintStylesheetContract(t *testing.T) { t.Fatal(err) } def := strings.Index(page, "@layer opensysml {") - print := strings.Index(page, "@layer opensysml-print {") + printLayer := strings.Index(page, "@layer opensysml-print {") reader := strings.Index(page, ".sysml-document { color: red }") - if def < 0 || print < def || reader < print { - t.Fatalf("stylesheet order default=%d print=%d reader=%d:\n%s", def, print, reader, page) + if def < 0 || printLayer < def || reader < printLayer { + t.Fatalf("stylesheet order default=%d printLayer=%d reader=%d:\n%s", def, printLayer, reader, page) } if strings.Count(page, "@layer opensysml-print {") != 1 { t.Fatal("print stylesheet inlined more than once") @@ -488,12 +488,12 @@ func TestPandocStylesheetSetsWideTablesLandscape(t *testing.T) { wide := "table:has(thead > tr > th:nth-child(7))" for _, want := range []string{ "@page wide { size: A4 landscape; }", - "body { page: main; }", + "body {\n font-family: serif;\n font-size: 11pt;\n line-height: 1.45;\n page: main;\n}", wide + " { page: wide; font-size: 9pt; }", "p:has(+ " + wide + "),", "p:has(.caption):has(+ p:has(+ " + wide + ")),", ":is(h1, h2, h3, h4, h5, h6):has(+ p:has(.caption):has(+ p:has(+ " + wide + "))) { page: wide; }", - "th { overflow-wrap: normal; }", + "th {\n background: #eeeeee;\n overflow-wrap: normal;\n}", "h1, h2, h3, h4, h5, h6 {\n font-family: sans-serif;\n line-height: 1.2;\n break-after: avoid;", "p:has(.caption) { break-after: avoid; page-break-after: avoid; }\np:has(+ table) { break-after: avoid; page-break-after: avoid; }", } { diff --git a/internal/doc/docpdf/pandoc.css b/internal/doc/docpdf/pandoc.css index 98afd56659..3a6e98397c 100644 --- a/internal/doc/docpdf/pandoc.css +++ b/internal/doc/docpdf/pandoc.css @@ -16,6 +16,7 @@ body { font-family: serif; font-size: 11pt; line-height: 1.45; + page: main; } h1, h2, h3, h4, h5, h6 { @@ -64,8 +65,10 @@ th, td { overflow-wrap: anywhere; } -th { background: #eeeeee; } -th { overflow-wrap: normal; } +th { + background: #eeeeee; + overflow-wrap: normal; +} /* A caption and the paragraph leading into a table stay with what follows. */ p:has(.caption) { break-after: avoid; page-break-after: avoid; } @@ -74,7 +77,6 @@ p:has(+ table) { break-after: avoid; page-break-after: avoid; } /* A table of seven or more columns goes on a landscape page in smaller type with the heading, caption and group key ahead of it; :has() nests since cssselect2 misreads "+ p + table". */ @page wide { size: A4 landscape; } -body { page: main; } table:has(thead > tr > th:nth-child(7)) { page: wide; font-size: 9pt; } p:has(+ table:has(thead > tr > th:nth-child(7))), p:has(.caption):has(+ p:has(+ table:has(thead > tr > th:nth-child(7)))), diff --git a/internal/doc/docrender/html.go b/internal/doc/docrender/html.go index 8f9d38b8df..2febb983e6 100644 --- a/internal/doc/docrender/html.go +++ b/internal/doc/docrender/html.go @@ -20,6 +20,12 @@ var defaultCSS string // DefaultStylesheet is the default document stylesheet: one cascade layer of // declarations, every value taken from a --sysml-* token on .sysml-document. + +// The note fragments the writer repeats. +const ( + spanClose = "" +) + func DefaultStylesheet() string { return defaultCSS } // themeFS holds the bundled themes, one .css each, written against the @@ -527,7 +533,7 @@ func (w *htmlWriter) writeValue(value queryexec.Value) { classes += " sysml-event" } w.b.WriteString("" + htmlText(valueText(value)) + "") + elementAttrs(value) + quantityAttrs(value) + ">" + htmlText(valueText(value)) + spanClose) } // quantityAttrs carries a quantity's magnitude and unit apart, so a theme or a @@ -717,9 +723,9 @@ func (w *htmlWriter) runHTML(run docir.TextRun) string { return "" + htmlText(run.Text()) + "" case docir.RunMath: if typeset, ok := w.opts.Math[inlineFormula(run.Text())]; ok { - return "" + typeset + "" + return "" + typeset + spanClose } - return "" + inlineMathHTML(run.Text()) + "" + return "" + inlineMathHTML(run.Text()) + spanClose case docir.RunLink: if target, ok := navigableURL(run.Target()); ok { return "" + htmlText(run.Text()) + "" diff --git a/internal/translate/migrate/activity.go b/internal/translate/migrate/activity.go index 705708b15e..3c84fcadee 100644 --- a/internal/translate/migrate/activity.go +++ b/internal/translate/migrate/activity.go @@ -11,6 +11,17 @@ import ( // activityBody writes the nodes and edges of act as the body of def, the v2 // action def being written: act itself, or the operation whose method it is. + +// The note fragments the writer repeats. +const ( + siSeconds = " [SI::s]" + flowNote = "/* flow " + notWritten = " not written: " + itsInput = "its input " + noValueSince = " receives no value, since " + neverAssigns = " never assigns " +) + func (m *migration) activityBody(act, def *sysmlv1.Element) { keeping := m.keeping m.keeping = "" @@ -591,8 +602,8 @@ func (a *activity) startSuccessions() { } for _, n := range a.nodes { if s, ok := a.before[n]; ok && nodeKind(n) == nodeInitial { - a.m.w.line("first " + from + " then " + s.name + ";") - a.m.w.block("action "+s.name, func() { a.m.w.lines(s.lines) }) + a.m.w.line(firstKw + from + thenKw + s.name + ";") + a.m.w.block(actionKw+s.name, func() { a.m.w.lines(s.lines) }) from = s.name } } @@ -695,7 +706,7 @@ func (a *activity) waitFor(e *sysmlv1.Element) (string, bool) { hi, hok, hnote := a.m.durationExpr(a.m.model.Ref(spec, "max"), e) if bound, bnote, ok := a.m.singleValue(spec, lo, lok, hok); ok { a.m.add(dc, Approximated, a.m.v2Name(a.def), joinNotes(bnote, "so the wait is a fixed "+bound+" s before "+describe(e))) - return bound + " [SI::s]", true + return bound + siSeconds, true } if !lok || !hok { a.unmappedWait(dc, e, a.m.openInterval(spec, lo, lok, lnote, hi, hok, hnote)) @@ -717,7 +728,7 @@ func (a *activity) waitFor(e *sysmlv1.Element) (string, bool) { note = joinNotes(note, "written as a wait drawn uniformly over ["+lo+", "+hi+"] s before "+describe(e)+"; a tool's fixed min or max mode is a run setting, not the model's") } a.m.add(dc, Approximated, a.m.v2Name(a.def), note) - return expr + " [SI::s]", true + return expr + siSeconds, true } func (a *activity) unmappedWait(dc, e *sysmlv1.Element, note string) { @@ -737,8 +748,8 @@ func (a *activity) successions(n *sysmlv1.Element) { } from := writeName(a.name(n, baseName(n))) if s, ok := a.after[n]; ok { - a.m.w.line("first " + from + " then " + s.name + ";") - a.m.w.block("action "+s.name, func() { a.m.w.lines(s.lines) }) + a.m.w.line(firstKw + from + thenKw + s.name + ";") + a.m.w.block(actionKw+s.name, func() { a.m.w.lines(s.lines) }) from = s.name } outs := a.succ[n] @@ -1152,8 +1163,8 @@ func (a *activity) leadIn(n *sysmlv1.Element, into string) { into = w.name } if s, ok := a.before[n]; ok { - a.m.w.block("action "+s.name, func() { a.m.w.lines(s.lines) }) - a.m.w.line("first " + s.name + " then " + into + ";") + a.m.w.block(actionKw+s.name, func() { a.m.w.lines(s.lines) }) + a.m.w.line(firstKw + s.name + thenKw + into + ";") into = s.name } if j, ok := a.joins[n]; ok { @@ -1470,10 +1481,10 @@ func (a *activity) objectFlowTarget(e, tgt *sysmlv1.Element) { func (a *activity) objectFlowSource(e, s, tgt *sysmlv1.Element, to string) { if callee, p := a.calleeOutput(s); callee != nil && p == nil { why := "the pin " + describe(s) + " of " + describe(s.Parent) + " stands for no out parameter of the called " + qualifiedName(callee) + ", so it carries no value" - a.m.w.line("/* flow " + describe(s) + " to " + to + " not written: " + why + " */") + a.m.w.line(flowNote + describe(s) + " to " + to + notWritten + why + " */") a.m.add(e, Approximated, "", "the flow is kept as a comment: "+why+", and none reaches "+describe(tgt)) if nodeKind(tgt) == nodePin { - a.m.add(tgt.Parent, Approximated, "", "its input "+to+" receives no value, since "+why) + a.m.add(tgt.Parent, Approximated, "", itsInput+to+noValueSince+why) } return } @@ -1488,41 +1499,41 @@ func (a *activity) objectFlowSource(e, s, tgt *sysmlv1.Element, to string) { } a.written[[2]*sysmlv1.Element{s, tgt}] = true if nodeKind(s) == nodeParam && a.m.unvalued[a.m.model.Ref(s, "parameter")] { - a.m.w.line("/* flow " + from + " to " + to + " not written: the parameter " + from + " takes no value */") + a.m.w.line(flowNote + from + " to " + to + " not written: the parameter " + from + " takes no value */") a.m.add(e, Approximated, "", "the flow is kept as a comment: its source, the parameter "+from+", takes no value, so none reaches "+describe(tgt)) if nodeKind(tgt) == nodePin { - a.m.add(tgt.Parent, Approximated, "", "its input "+to+" receives no value, since the parameter "+from+" takes none") + a.m.add(tgt.Parent, Approximated, "", itsInput+to+" receives no value, since the parameter "+from+" takes none") } return } if a.inert[s.Parent] { - a.m.w.line("/* flow " + from + " to " + to + " not written: " + describe(s.Parent) + " is not migrated and produces no value */") + a.m.w.line(flowNote + from + " to " + to + notWritten + describe(s.Parent) + " is not migrated and produces no value */") a.m.add(e, Approximated, "", "the flow is kept as a comment: its source "+describe(s.Parent)+" is not migrated, so no value reaches "+describe(s)) if nodeKind(tgt) == nodePin { - a.m.add(tgt.Parent, Approximated, "", "its input "+to+" receives no value, since "+describe(s.Parent)+" is not migrated; the action cannot be performed until one is bound") + a.m.add(tgt.Parent, Approximated, "", itsInput+to+noValueSince+describe(s.Parent)+" is not migrated; the action cannot be performed until one is bound") } return } if a.unassigned(s) { - a.m.w.line("/* flow " + from + " to " + to + " not written: the body of " + describe(s.Parent) + " never assigns " + from + " */") - a.m.add(e, Approximated, "", "the flow is kept as a comment: the body of "+describe(s.Parent)+" never assigns "+describe(s)+", so no value leaves it") + a.m.w.line(flowNote + from + " to " + to + " not written: the body of " + describe(s.Parent) + neverAssigns + from + " */") + a.m.add(e, Approximated, "", "the flow is kept as a comment: the body of "+describe(s.Parent)+neverAssigns+describe(s)+", so no value leaves it") if nodeKind(tgt) == nodePin { - a.m.add(tgt.Parent, Approximated, "", "its input "+to+" receives no value, since the body of "+describe(s.Parent)+" never assigns "+from+"; the action cannot be performed until one is bound") + a.m.add(tgt.Parent, Approximated, "", itsInput+to+" receives no value, since the body of "+describe(s.Parent)+neverAssigns+from+"; the action cannot be performed until one is bound") } return } if callee, p := a.calleeOutput(s); p != nil && a.m.dryOutputs(callee)[p] { why := "nothing in the called " + qualifiedName(callee) + " gives its parameter " + a.m.nameFor(p) + " a value" - a.m.w.line("/* flow " + from + " to " + to + " not written: " + why + " */") + a.m.w.line(flowNote + from + " to " + to + notWritten + why + " */") a.m.add(e, Approximated, "", "the flow is kept as a comment: "+why+", so none reaches "+describe(tgt)) if nodeKind(tgt) == nodePin { - a.m.add(tgt.Parent, Approximated, "", "its input "+to+" receives no value, since "+why) + a.m.add(tgt.Parent, Approximated, "", itsInput+to+noValueSince+why) } return } st, tt := a.endType(s), a.endType(tgt) if !a.m.conform(st, tt) { - a.m.w.line("/* flow " + from + " to " + to + " not written: " + qualifiedName(st) + " and " + qualifiedName(tt) + " do not conform */") + a.m.w.line(flowNote + from + " to " + to + notWritten + qualifiedName(st) + " and " + qualifiedName(tt) + " do not conform */") a.m.add(e, Approximated, "", "the flow is kept as a comment: its ends are typed by "+qualifiedName(st)+" and "+qualifiedName(tt)+", which do not conform") return } @@ -1557,7 +1568,7 @@ func (a *activity) callBehavior(n *sysmlv1.Element, name string) { a.m.w.line("perform action " + name + " ::> " + usage + ";") a.m.add(n, Mapped, name, "performed by "+l.expr+", the object its swimlane represents, as its usage "+usage) } else { - a.m.w.line("action " + name + " : " + a.m.ref(b, a.def) + ";") + a.m.w.line(actionKw + name + " : " + a.m.ref(b, a.def) + ";") if owner, here := classifierOf(b), a.selfType(); owner != nil && owner != here && (here == nil || !a.m.inherits(here, owner)) { note = "the behavior belongs to " + qualifiedName(owner) + " and runs here in the caller's context" } @@ -2061,7 +2072,7 @@ func (m *migration) acceptClause(ev, scope *sysmlv1.Element, payload string) (cl if !ok { return "", "the time event's time is not written: " + note, false } - return "accept after " + d + " [SI::s]", note, true + return "accept after " + d + siSeconds, note, true case "ChangeEvent": expr, ok, note := m.behaviorValue(firstOwned(ev, "changeExpression"), scope) if !ok { diff --git a/internal/translate/migrate/behavior.go b/internal/translate/migrate/behavior.go index ff0d434967..10e80be86a 100644 --- a/internal/translate/migrate/behavior.go +++ b/internal/translate/migrate/behavior.go @@ -18,6 +18,12 @@ const ( // classifyBehavior decides the v2 declaration a UML behavior becomes: action def, // state def, calc def for an expression body, or a scenario action def for an interaction. + +// The note fragments the writer repeats. +const ( + methodNote = "the method " +) + func (m *migration) classifyBehavior(e *sysmlv1.Element) (category, string) { switch e.Type { case "Activity": @@ -146,7 +152,7 @@ func (m *migration) operationFeature(op *sysmlv1.Element) { return } usage := m.operationUsage(op) - m.w.line("action " + writeName(usage) + " : " + m.ref(op, op.Parent) + ";") + m.w.line(actionKw + writeName(usage) + " : " + m.ref(op, op.Parent) + ";") m.add(op, Mapped, "", "its owner's usage "+usage+" performs it, as a call on an object does") } @@ -741,8 +747,8 @@ func (m *migration) opaqueBehaviorBody(e, scope *sysmlv1.Element) { } name := m.freshName(scope, "body") m.w.line("first start then " + writeName(name) + ";") - m.w.block("action "+writeName(name), func() { m.w.lines(lines) }) - m.w.line("first " + writeName(name) + " then done;") + m.w.block(actionKw+writeName(name), func() { m.w.lines(lines) }) + m.w.line(firstKw + writeName(name) + " then done;") if note != "" { m.downgrade(e, note) } @@ -790,7 +796,7 @@ func (m *migration) operationBody(op *sysmlv1.Element) { m.downgrade(op, "the method refers to nothing in the document; the operation is written abstract") } case method.Parent != op.Parent: - m.downgrade(op, "the method "+qualifiedName(method)+" is owned elsewhere and written there; the operation is written abstract") + m.downgrade(op, methodNote+qualifiedName(method)+" is owned elsewhere and written there; the operation is written abstract") case method.Type == "Activity": m.activityBody(method, op) case method.Type == "OpaqueBehavior" || method.Type == "FunctionBehavior": @@ -909,8 +915,8 @@ func (m *migration) receptionLoop(r *sysmlv1.Element, route *receptionRoute, fro } trig := writeName(freshIn(route.used, "receive"+suffix)) payload := writeName(freshIn(route.used, lowerFirst(m.nameFor(route.sig))+suffix)) - m.w.line("first " + from + " then " + trig + ";") - m.w.line("action " + trig + " accept " + payload + " : " + m.ref(route.sig, route.owner) + via + ";") + m.w.line(firstKw + from + thenKw + trig + ";") + m.w.line(actionKw + trig + " accept " + payload + " : " + m.ref(route.sig, route.owner) + via + ";") last := trig method := route.method switch { @@ -921,7 +927,7 @@ func (m *migration) receptionLoop(r *sysmlv1.Element, route *receptionRoute, fro route.note = "the reception has no method, so it only accepts the signal" } case !m.written(method) || !(method.Type == "Operation" || hasActionForm(method)): - route.note = "the method " + qualifiedName(method) + " has no action def to perform; the reception only accepts the signal" + route.note = methodNote + qualifiedName(method) + " has no action def to perform; the reception only accepts the signal" default: args, refusal := m.receptionArguments(method, route.sig, payload) if refusal != "" { @@ -930,15 +936,15 @@ func (m *migration) receptionLoop(r *sysmlv1.Element, route *receptionRoute, fro } run := writeName(freshIn(route.used, "run"+suffix)) last, route.performed = run, true - m.w.line("first " + trig + " then " + run + ";") - decl := "action " + run + " : " + m.ref(method, route.owner) + m.w.line(firstKw + trig + thenKw + run + ";") + decl := actionKw + run + " : " + m.ref(method, route.owner) if len(args) == 0 { m.w.line(decl + ";") } else { m.w.line(decl + " { " + strings.Join(args, "; ") + "; }") } } - m.w.line("first " + last + " then " + trig + ";") + m.w.line(firstKw + last + thenKw + trig + ";") } // receptionComment writes a reception whose signal has no v2 declaration as a @@ -998,7 +1004,7 @@ func (m *migration) receptionArguments(method, sig *sysmlv1.Element, payload str a := attrs[name] if name == "" || a == nil { if requiresValue(p) { - refusal = joinNotes(refusal, "the method "+qualifiedName(method)+"'s parameter "+m.nameFor(p)+" must hold a value that no attribute of the signal supplies") + refusal = joinNotes(refusal, methodNote+qualifiedName(method)+"'s parameter "+m.nameFor(p)+" must hold a value that no attribute of the signal supplies") } continue } diff --git a/internal/translate/migrate/call_port.go b/internal/translate/migrate/call_port.go index 43d97e1eea..c269f59519 100644 --- a/internal/translate/migrate/call_port.go +++ b/internal/translate/migrate/call_port.go @@ -10,6 +10,12 @@ import ( // portReceiver writes the operation usage a call over port performs: the part // the caller's connectors join to its own port, or the target object's port when // the port is the target's. The note says why the call is not written that way. + +// The note fragments the writer repeats. +const ( + performsUsage = "the call performs the usage " +) + func (a *activity) portReceiver(port, t, op *sysmlv1.Element) (receiver, note string, ok bool) { if !a.m.written(port) { return "", "the call runs in the caller's context: the port " + qualifiedName(port) + " it goes through has no v2 declaration", false @@ -20,7 +26,7 @@ func (a *activity) portReceiver(port, t, op *sysmlv1.Element) (receiver, note st if why != "" { return "", "the call runs in the caller's context: " + why, false } - return a.on(a.self(), path+"."+usage), "the call performs the usage " + usage + " of the part connected to the port " + a.m.nameFor(port), true + return a.on(a.self(), path+"."+usage), performsUsage + usage + " of the part connected to the port " + a.m.nameFor(port), true } obj, typ, found := a.objectOf(t) switch { @@ -33,7 +39,7 @@ func (a *activity) portReceiver(port, t, op *sysmlv1.Element) (receiver, note st } path := a.on(obj, writeName(a.m.nameFor(port))) if pt := a.m.model.Ref(port, "type"); pt != nil && a.m.hasFeature(pt, op) { - return path + "." + usage, "the call performs the usage " + usage + " of the target's port " + path, true + return path + "." + usage, performsUsage + usage + " of the target's port " + path, true } if !a.m.hasFeature(typ, op) { return "", "the call runs in the caller's context: neither the target " + obj + " nor its port " + a.m.nameFor(port) + " has the operation " + a.m.nameOf(op), false @@ -41,7 +47,7 @@ func (a *activity) portReceiver(port, t, op *sysmlv1.Element) (receiver, note st if obj == a.self() { return a.on(obj, usage), "the target is " + obj + ", whose usage " + usage + " the call performs; its port " + a.m.nameFor(port) + " is not written, as a v2 perform names the operation on the object", true } - return a.on(obj, usage), "the call performs the usage " + usage + " of the target " + obj + "; its port " + a.m.nameFor(port) + " is not written, as a v2 perform names the operation on the object", true + return a.on(obj, usage), performsUsage + usage + " of the target " + obj + "; its port " + a.m.nameFor(port) + " is not written, as a v2 perform names the operation on the object", true } // connectedReceiver follows the connectors of classifier c from its port to the diff --git a/internal/translate/migrate/carriers.go b/internal/translate/migrate/carriers.go index 0434b057fd..4686aab6bc 100644 --- a/internal/translate/migrate/carriers.go +++ b/internal/translate/migrate/carriers.go @@ -18,6 +18,12 @@ type carrier struct { // carriers declares, for each state whose entry or do behavior takes parameters, the item // holding the incoming signal whose properties match them by position, type, order and multiplicity. // Internal transitions enter no state, so they neither settle the signal nor rule it out. + +// The note fragments the writer repeats. +const ( + transitionFrom = "the transition from " +) + func (m *migration) carriers(sm *sysmlv1.Element, used map[string]bool) { incoming := map[*sysmlv1.Element][]*sysmlv1.Element{} var states []*sysmlv1.Element @@ -105,15 +111,15 @@ func (m *migration) carrierSignal(v *sysmlv1.Element, incoming []*sysmlv1.Elemen } triggers := t.Owned("trigger") if len(triggers) == 0 { - return nil, "the transition from " + describe(src) + " enters the state with no trigger" + return nil, transitionFrom + describe(src) + " enters the state with no trigger" } for _, tr := range triggers { ev := m.model.Ref(tr, "event") if ev == nil || ev.Type != "SignalEvent" { - return nil, "the transition from " + describe(src) + " accepts " + eventKind(ev) + ", which carries no signal" + return nil, transitionFrom + describe(src) + " accepts " + eventKind(ev) + ", which carries no signal" } if note, ok := m.signalOf(ev); !ok { - return nil, "the transition from " + describe(src) + " accepts a signal with no v2 declaration: " + note + return nil, transitionFrom + describe(src) + " accepts a signal with no v2 declaration: " + note } s := m.model.Ref(ev, "signal") if sig != nil && s != sig { diff --git a/internal/translate/migrate/context.go b/internal/translate/migrate/context.go index 0f8dc551dc..7e64ac60f0 100644 --- a/internal/translate/migrate/context.go +++ b/internal/translate/migrate/context.go @@ -27,6 +27,13 @@ type contextVisit struct { // object unless nothing it needs is one: v1 runs a called behavior on the caller's // object, whoever owns it, so such a behavior takes the object it acts on instead. // A cycle of calls settles at once, with everything its members name. + +// The note fragments the writer repeats. +const ( + actsOn = "the behavior acts on a " + throughParam = " through its parameter " +) + func (m *migration) contextOf(b *sysmlv1.Element) *behaviorContext { if b == nil || b.Type != "Activity" { return nil @@ -420,9 +427,9 @@ func (m *migration) contextBinding(c *behaviorContext, selfType *sysmlv1.Element kind := qualifiedName(c.classifier) switch { case selfType == nil: - return "", "the behavior acts on a " + kind + " through its parameter " + c.name + ", which is left unbound: the caller acts on no object" + return "", actsOn + kind + throughParam + c.name + ", which is left unbound: the caller acts on no object" case selfType == c.classifier || m.inherits(selfType, c.classifier): - return self, "the behavior acts on a " + kind + " through its parameter " + c.name + ", which is bound to " + self + return self, actsOn + kind + throughParam + c.name + ", which is bound to " + self } var parts []*sysmlv1.Element for _, f := range m.attributesOf(selfType) { @@ -435,11 +442,11 @@ func (m *migration) contextBinding(c *behaviorContext, selfType *sysmlv1.Element } if len(parts) == 1 { part := self + "." + writeName(m.nameFor(parts[0])) - return part, "the behavior acts on a " + kind + " through its parameter " + c.name + ", which is bound to " + part + ", the caller's one part that is one" + return part, actsOn + kind + throughParam + c.name + ", which is bound to " + part + ", the caller's one part that is one" } why := "has no part that is one" if len(parts) > 1 { why = "has " + strconv.Itoa(len(parts)) + " parts that are one, so no one of them is chosen" } - return "", "the behavior acts on a " + kind + " through its parameter " + c.name + ", which is left unbound: the caller is a " + qualifiedName(selfType) + ", which is no " + kind + " and " + why + return "", actsOn + kind + throughParam + c.name + ", which is left unbound: the caller is a " + qualifiedName(selfType) + ", which is no " + kind + " and " + why } diff --git a/internal/translate/migrate/interaction.go b/internal/translate/migrate/interaction.go index 3d51aae3ae..75a2dd5944 100644 --- a/internal/translate/migrate/interaction.go +++ b/internal/translate/migrate/interaction.go @@ -113,6 +113,17 @@ type scenarioOperand struct { // messagelessNote says why an interaction without messages has no steps; one of // state invariants under time constraints is a recorded timing trace, not a behavior. + +// The note fragments the writer repeats. +const ( + theMessage = "the message " + standsFor = "stands for " + noLifeline = "is received on no lifeline" + theValue = "the value " + theArgument = "the argument " + notMigrated = " not migrated — " +) + func messagelessNote(e *sysmlv1.Element) string { invariants := 0 for _, f := range e.Owned("fragment") { @@ -202,7 +213,7 @@ func (s *scenario) resolve(fragments, messages []*sysmlv1.Element, body *[]*scen s.placed[msg] = true step, note := s.message(msg, body) if note != "" { - return nil, "the message " + describe(msg) + " " + note + return nil, theMessage + describe(msg) + " " + note } steps = append(steps, step) case "CombinedFragment": @@ -227,7 +238,7 @@ func (s *scenario) resolve(fragments, messages []*sysmlv1.Element, body *[]*scen s.placed[msg] = true step, note := s.message(msg, body) if note != "" { - return nil, "the message " + describe(msg) + " " + note + return nil, theMessage + describe(msg) + " " + note } steps = append(steps, step) } @@ -260,22 +271,22 @@ func (s *scenario) lifeline(line *sysmlv1.Element) (lifelineRef, string) { ref = lifelineRef{line: line, path: name, chain: name, typ: s.m.model.Ref(rep, "type")} case "Property", "Port": if !s.m.written(rep) { - return lifelineRef{}, "stands for " + describe(rep) + " of " + qualifiedName(rep.Parent) + ", which has no v2 declaration" + return lifelineRef{}, standsFor + describe(rep) + " of " + qualifiedName(rep.Parent) + ", which has no v2 declaration" } paths := s.m.partPaths(s.context, rep) switch len(paths) { case 0: - return lifelineRef{}, "stands for " + describe(rep) + " of " + qualifiedName(rep.Parent) + ", which no part of " + qualifiedName(s.context) + " reaches" + return lifelineRef{}, standsFor + describe(rep) + " of " + qualifiedName(rep.Parent) + ", which no part of " + qualifiedName(s.context) + " reaches" case 1: default: - return lifelineRef{}, "stands for " + describe(rep) + ", which " + qualifiedName(s.context) + " reaches as both " + paths[0] + " and " + paths[1] + return lifelineRef{}, standsFor + describe(rep) + ", which " + qualifiedName(s.context) + " reaches as both " + paths[0] + " and " + paths[1] } ref = lifelineRef{line: line, path: s.self + "." + paths[0], chain: paths[0], typ: s.m.model.Ref(rep, "type")} if s.self != "this" { ref.chain = ref.path } default: - return lifelineRef{}, "stands for " + describe(rep) + ", a " + rep.Type + " rather than a part or parameter" + return lifelineRef{}, standsFor + describe(rep) + ", a " + rep.Type + " rather than a part or parameter" } s.lines[line] = ref return ref, "" @@ -356,7 +367,7 @@ func (s *scenario) message(msg *sysmlv1.Element, body *[]*scenarioStep) (*scenar return nil, "is a " + sort + " message, which has no v2 form" } if step.receiver == nil { - return nil, "is received on no lifeline" + return nil, noLifeline } return step, "" } @@ -389,7 +400,7 @@ func (s *scenario) send(step *scenarioStep) (*scenarioStep, string) { return nil, "names " + describe(sig) + ", which is not a migrated signal" } if step.receiver == nil { - return nil, "is received on no lifeline" + return nil, noLifeline } step.kind = stepSend step.signal = sig @@ -413,7 +424,7 @@ func (s *scenario) call(step *scenarioStep, sort string) (*scenarioStep, string) return nil, "names " + describe(op) + ", which is not a migrated operation" } if step.receiver == nil { - return nil, "is received on no lifeline" + return nil, noLifeline } switch { case step.receiver.typ == nil: @@ -476,7 +487,7 @@ func (s *scenario) reply(step *scenarioStep) (*scenarioStep, string) { arg := replyArgs[i] switch { case p == nil: - step.note = joinNotes(step.note, "the value "+describeValue(arg)+" has no out parameter of "+op.Name+" to stand for") + step.note = joinNotes(step.note, theValue+describeValue(arg)+" has no out parameter of "+op.Name+" to stand for") continue case !s.within(step.body, call.body): step.note = joinNotes(step.note, "the result "+s.m.nameOf(p)+" is not bound: the reply is not in the fragment of the call it answers") @@ -484,7 +495,7 @@ func (s *scenario) reply(step *scenarioStep) (*scenarioStep, string) { } target, value := assignmentOf(arg) if target == "" { - step.note = joinNotes(step.note, "the value "+describeValue(arg)+" of "+s.m.nameOf(p)+" is the operation's own result, which the call computes") + step.note = joinNotes(step.note, theValue+describeValue(arg)+" of "+s.m.nameOf(p)+" is the operation's own result, which the call computes") continue } attr := s.attributeNamed(step.receiver, target) @@ -493,7 +504,7 @@ func (s *scenario) reply(step *scenarioStep) (*scenarioStep, string) { continue } if value != "" { - step.note = joinNotes(step.note, "the value "+value+" the reply states for "+s.m.nameOf(p)+" is the operation's own result, which the call computes") + step.note = joinNotes(step.note, theValue+value+" the reply states for "+s.m.nameOf(p)+" is the operation's own result, which the call computes") } step.assigns = append(step.assigns, "assign "+step.receiver.path+"."+writeName(s.m.nameOf(attr))+" := "+call.name+"."+writeName(s.m.nameOf(p))+";") } @@ -601,11 +612,11 @@ func (s *scenario) bindArguments(msg *sysmlv1.Element, targets []*sysmlv1.Elemen for i, t := range s.pairArguments(msgArgs, targets) { arg := msgArgs[i] if t == nil { - note = joinNotes(note, "the argument "+describeValue(arg)+" has no "+kind+" of "+owner.Name+" to bind to and is dropped") + note = joinNotes(note, theArgument+describeValue(arg)+" has no "+kind+" of "+owner.Name+" to bind to and is dropped") continue } if bound[t] { - note = joinNotes(note, "the argument "+describeValue(arg)+" binds "+s.m.nameOf(t)+" a second time and is dropped") + note = joinNotes(note, theArgument+describeValue(arg)+" binds "+s.m.nameOf(t)+" a second time and is dropped") continue } expr, ok, vnote := s.m.typedBehaviorValue(arg, t, s.e) @@ -613,7 +624,7 @@ func (s *scenario) bindArguments(msg *sysmlv1.Element, targets []*sysmlv1.Elemen if requiresValue(t) { return nil, "", "leaves the " + kind + " " + s.m.nameOf(t) + " of " + owner.Name + ", which must hold a value, unbound: the argument " + describeValue(arg) + " is not written: " + vnote } - note = joinNotes(note, "the argument "+describeValue(arg)+" for "+s.m.nameOf(t)+" is dropped: "+vnote) + note = joinNotes(note, theArgument+describeValue(arg)+" for "+s.m.nameOf(t)+" is dropped: "+vnote) continue } bound[t] = true @@ -922,7 +933,7 @@ func (s *scenario) writeSteps(steps []*scenarioStep) { prev = next } } - s.m.w.line("first " + prev + " then done;") + s.m.w.line(firstKw + prev + " then done;") } // indexChain positions the steps of a chain, the operands of its seq fragments inlined. @@ -955,7 +966,7 @@ func (s *scenario) step(step *scenarioStep, prev string) string { } switch step.kind { case stepSend: - m.w.line("action " + step.name + " send new " + m.ref(step.signal, s.e) + "(" + strings.Join(step.args, ", ") + ") to " + step.receiver.path + ";") + m.w.line(actionKw + step.name + " send new " + m.ref(step.signal, s.e) + "(" + strings.Join(step.args, ", ") + ") to " + step.receiver.path + ";") s.messageDone(step, "written as a send to "+step.receiver.path) case stepCall: decl := "perform action " + step.name + " : " + m.ref(step.op, s.e) + " ::> " + step.receiver.chain + "." + writeName(m.operationUsage(step.op)) @@ -970,7 +981,7 @@ func (s *scenario) step(step *scenarioStep, prev string) string { s.messageDone(step, "the reply is the completion of the call "+step.call.name+", which the next step follows") return "" } - m.w.block("action "+step.name, func() { + m.w.block(actionKw+step.name, func() { for _, a := range step.assigns { m.w.line(a) } @@ -982,11 +993,11 @@ func (s *scenario) step(step *scenarioStep, prev string) string { what = "deletes" } m.w.lines(commentLines("not migrated: Message " + describe(step.msg) + " — the message " + what + " the object " + step.receiver.path + ", which exists for as long as its owner does")) - m.add(step.msg, Unmapped, "", "the message "+what+" "+step.receiver.path+", a part that exists for as long as its owner does; the steps after it address it as it is") + m.add(step.msg, Unmapped, "", theMessage+what+" "+step.receiver.path+", a part that exists for as long as its owner does; the steps after it address it as it is") s.occurrencesDone(step, "") return "" case stepAlt, stepOpt: - m.w.block("action "+step.name, func() { s.branches(step, 0) }) + m.w.block(actionKw+step.name, func() { s.branches(step, 0) }) s.fragmentDone(step, "if") case stepLoop: o := step.operands[0] @@ -994,18 +1005,18 @@ func (s *scenario) step(step *scenarioStep, prev string) string { if step.count != "" { head = "for " + freshIn(s.used, "i") + " in 1.." + step.count } - m.w.block("action "+step.name, func() { + m.w.block(actionKw+step.name, func() { m.w.block(head, func() { s.operand(step, o, 0) }) }) s.fragmentDone(step, strings.Fields(head)[0]) case stepPar: join := writeName(freshIn(s.used, step.base+"End")) m.w.line("fork " + step.name + ";") - m.w.line("first " + prev + " then " + step.name + ";") + m.w.line(firstKw + prev + thenKw + step.name + ";") for i, o := range step.operands { name := s.operand(step, o, i) - m.w.line("first " + step.name + " then " + name + ";") - m.w.line("first " + name + " then " + join + ";") + m.w.line(firstKw + step.name + thenKw + name + ";") + m.w.line(firstKw + name + thenKw + join + ";") } m.w.line("join " + join + ";") s.fragmentDone(step, "fork") @@ -1026,7 +1037,7 @@ func (s *scenario) step(step *scenarioStep, prev string) string { } return prevInner } - m.w.line("first " + prev + " then " + step.name + ";") + m.w.line(firstKw + prev + thenKw + step.name + ";") if step.msg != nil { return s.startWaits(step) } @@ -1045,8 +1056,8 @@ func (s *scenario) waits(step *scenarioStep, prev string) string { s.waited[dc] = true join := writeName(freshIn(s.used, p.base+"End")) s.m.w.line("join " + join + ";") - s.m.w.line("first " + prev + " then " + join + ";") - s.m.w.line("first " + p.wait + " then " + join + ";") + s.m.w.line(firstKw + prev + thenKw + join + ";") + s.m.w.line(firstKw + p.wait + thenKw + join + ";") prev = join s.m.add(dc, Approximated, p.wait, joinNotes("the time from "+p.from+", written as the wait "+p.wait+" forked after it and joined before "+step.name, p.note)) s.observationsDone(dc, p.wait, step.name) @@ -1059,19 +1070,19 @@ func (s *scenario) waits(step *scenarioStep, prev string) string { s.waited[dc] = true if from == "" { note := "the time it measures from " + s.names[s.otherEnd(dc, step.msg)] + " to " + step.name + " is not written: steps of other fragments lie between them, so no wait forked after the one can be joined before the other" - s.m.w.lines(commentLines("duration constraint on " + step.name + " not migrated — " + note)) + s.m.w.lines(commentLines("duration constraint on " + step.name + notMigrated + note)) s.m.add(dc, Unmapped, "", note) continue } expr, note, ok := s.waitExpr(dc) if !ok { - s.m.w.lines(commentLines("duration constraint on " + step.name + " not migrated — " + note)) + s.m.w.lines(commentLines("duration constraint on " + step.name + notMigrated + note)) s.m.add(dc, Unmapped, "", note) continue } name := writeName(freshIn(s.used, "wait")) - s.m.w.line("action " + name + " accept after " + expr + " [SI::s];") - s.m.w.line("first " + prev + " then " + name + ";") + s.m.w.line(actionKw + name + " accept after " + expr + " [SI::s];") + s.m.w.line(firstKw + prev + thenKw + name + ";") prev = name s.m.add(dc, Approximated, name, joinNotes(from+", written as the wait "+name+" before "+step.name, note)) s.observationsDone(dc, name, step.name) @@ -1099,19 +1110,19 @@ func (s *scenario) startWaits(step *scenarioStep) string { expr, note, ok := s.waitExpr(dc) if !ok { s.waited[dc] = true - s.m.w.lines(commentLines("duration constraint from " + step.name + " not migrated — " + note)) + s.m.w.lines(commentLines("duration constraint from " + step.name + notMigrated + note)) s.m.add(dc, Unmapped, "", note) continue } if fork == "" { fork = writeName(freshIn(s.used, "timing")) s.m.w.line("fork " + fork + ";") - s.m.w.line("first " + step.name + " then " + fork + ";") + s.m.w.line(firstKw + step.name + thenKw + fork + ";") } base := freshIn(s.used, "wait") wait := writeName(base) - s.m.w.line("action " + wait + " accept after " + expr + " [SI::s];") - s.m.w.line("first " + fork + " then " + wait + ";") + s.m.w.line(actionKw + wait + " accept after " + expr + " [SI::s];") + s.m.w.line(firstKw + fork + thenKw + wait + ";") s.pending[dc] = pendingWait{wait: wait, base: base, from: step.name, note: note} } if fork == "" { @@ -1254,9 +1265,9 @@ func (s *scenario) branches(step *scenarioStep, i int) { func (s *scenario) operand(step *scenarioStep, o *scenarioOperand, i int) string { name := writeName(freshIn(s.used, step.base+"Op"+strconv.Itoa(i+1))) if len(o.steps) == 0 { - s.m.w.line("action " + name + ";") + s.m.w.line(actionKw + name + ";") } else { - s.m.w.block("action "+name, func() { s.writeSteps(o.steps) }) + s.m.w.block(actionKw+name, func() { s.writeSteps(o.steps) }) } note := "written as the action " + name if o.guard != "" { diff --git a/internal/translate/migrate/opaque.go b/internal/translate/migrate/opaque.go index 22116823ee..893419687a 100644 --- a/internal/translate/migrate/opaque.go +++ b/internal/translate/migrate/opaque.go @@ -38,6 +38,14 @@ type refusal struct { } // note spells the refusal for a report entry or a comment. + +// The note fragments the writer repeats. +const ( + assignKw = "assign " + notBoolean = ", not a Boolean" + mathRound = "Math.round" +) + func (r *refusal) note() string { var text string switch r.kind { @@ -89,9 +97,9 @@ func (r opaqueRef) value() translated { return translated{expr: r.expr, scalar: r.scalar, object: r.object, plural: r.plural, atomic: true} } -// opaqueScope answers what the names of an opaque body mean where it is read; +// featureResolver answers what the names of an opaque body mean where it is read; // a path starting with `this` asks for a feature of the context object. -type opaqueScope interface { +type featureResolver interface { feature(path []string, write bool) (opaqueRef, *refusal) } @@ -243,7 +251,7 @@ func javaLabel(l string) bool { // translateExpr translates body as one expression read in sc yielding what // want asks for. The expression is complete or refused. -func translateExpr(body, lang string, sc opaqueScope, want wanted) (translated, *refusal) { +func translateExpr(body, lang string, sc featureResolver, want wanted) (translated, *refusal) { d := dialectOf(lang) if d == dialectNone { return translated{}, &refusal{kind: refusedLanguage, token: lang} @@ -268,7 +276,7 @@ func translateExpr(body, lang string, sc opaqueScope, want wanted) (translated, // translateStatements translates body as a sequence of script statements into // the lines of a v2 action body: local declarations and assignments. -func translateStatements(body, lang string, sc opaqueScope) ([]string, *refusal) { +func translateStatements(body, lang string, sc featureResolver) ([]string, *refusal) { d := dialectOf(lang) switch d { case dialectNone: @@ -283,7 +291,7 @@ func translateStatements(body, lang string, sc opaqueScope) ([]string, *refusal) } // wholeExprIn parses body as one expression of dialect d, its names answered by sc. -func wholeExprIn(body string, d dialect, sc opaqueScope) (translated, *refusal) { +func wholeExprIn(body string, d dialect, sc featureResolver) (translated, *refusal) { p, err := newOpaqueParser(body, d, sc) if err != nil { return translated{}, err @@ -292,7 +300,7 @@ func wholeExprIn(body string, d dialect, sc opaqueScope) (translated, *refusal) } // statementsIn parses body as statements of dialect d, its names answered by sc. -func statementsIn(body string, d dialect, sc opaqueScope) ([]string, *refusal) { +func statementsIn(body string, d dialect, sc featureResolver) ([]string, *refusal) { p, err := newOpaqueParser(body, d, sc) if err != nil { return nil, err @@ -597,12 +605,12 @@ type opaqueParser struct { toks []token i int d dialect - sc opaqueScope + sc featureResolver locals map[string]local // names a `var`, `let` or `const` declared assigns bool // whether `=` assigns (a statement) rather than compares } -func newOpaqueParser(body string, d dialect, sc opaqueScope) (*opaqueParser, *refusal) { +func newOpaqueParser(body string, d dialect, sc featureResolver) (*opaqueParser, *refusal) { toks, err := lexOpaque(body) if err != nil { return nil, err @@ -770,7 +778,7 @@ func (p *opaqueParser) declaration() ([]string, *refusal) { target := writeName(name.text) return []string{ "attribute " + target + " : ScalarValues::" + value.scalar + ";", - "assign " + target + " := " + value.expr + ";", + assignKw + target + " := " + value.expr + ";", }, nil } @@ -785,7 +793,7 @@ func (p *opaqueParser) declarable(kw, name string) *refusal { if inheritedActionNames()[name] { return &refusal{kind: refusedConstruct, token: token, why: name + " is a member every action has"} } - if _, any := p.sc.(anyScope); any { + if _, isAny := p.sc.(anyScope); isAny { return nil } if _, err := p.sc.feature([]string{name}, false); err == nil { @@ -803,7 +811,7 @@ func (p *opaqueParser) step(path []string, op string) ([]string, *refusal) { if held := target.value().held(); held != "" && !isNumeric(target.scalar) { return nil, &refusal{kind: refusedType, token: strings.Join(path, ".") + op, why: "a " + held + " is not counted"} } - return []string{"assign " + target.expr + " := " + target.expr + " " + op[:1] + " 1;"}, nil + return []string{assignKw + target.expr + " := " + target.expr + " " + op[:1] + " 1;"}, nil } // assignment writes `x = e` or `x op= e` as an assignment. @@ -832,7 +840,7 @@ func (p *opaqueParser) assignment(path []string, op string) ([]string, *refusal) if held.held() != "" && value.held() != "" && !assignableTo(held, value) { return nil, &refusal{kind: refusedType, token: name + " " + op, why: "a " + value.held() + " is assigned to the " + held.held() + " " + name + " holds"} } - return []string{"assign " + target.expr + " := " + spellFor(target.scalar, value) + ";"}, nil + return []string{assignKw + target.expr + " := " + spellFor(target.scalar, value) + ";"}, nil } // target resolves the feature an assignment writes. @@ -909,7 +917,7 @@ func (p *opaqueParser) expr() (translated, *refusal) { } p.next(true) if cond.held() != "" && cond.scalar != "Boolean" { - return translated{}, &refusal{kind: refusedType, token: "?", why: "the condition is a " + cond.held() + ", not a Boolean"} + return translated{}, &refusal{kind: refusedType, token: "?", why: "the condition is a " + cond.held() + notBoolean} } yes, err := p.expr() if err != nil { @@ -960,7 +968,7 @@ func (p *opaqueParser) logical(next func() (translated, *refusal), op binaryOp, } for _, side := range []translated{left, right} { if side.held() != "" && side.scalar != "Boolean" { - return translated{}, &refusal{kind: refusedType, token: tok.text, why: "an operand is a " + side.held() + ", not a Boolean"} + return translated{}, &refusal{kind: refusedType, token: tok.text, why: "an operand is a " + side.held() + notBoolean} } } left = binary(left, op.v2, right, loose, "Boolean") @@ -1158,7 +1166,7 @@ func (p *opaqueParser) unary() (translated, *refusal) { return translated{}, err } if x.held() != "" && x.scalar != "Boolean" { - return translated{}, &refusal{kind: refusedType, token: tok.text, why: "the operand is a " + x.held() + ", not a Boolean"} + return translated{}, &refusal{kind: refusedType, token: tok.text, why: "the operand is a " + x.held() + notBoolean} } return translated{expr: "not " + x.operandOf(looseUnary, true), scalar: "Boolean", loose: looseUnary}, nil case tok.isPunct("++"), tok.isPunct("--"): @@ -1325,7 +1333,7 @@ func (p *opaqueParser) call(path []string) (translated, *refusal) { lib = "RealFunctions" } return translated{expr: lib + "::abs(" + args[0].expr + ")", scalar: args[0].scalar, atomic: true}, nil - case "Math.floor", "Math.round", "Math.ceil": + case "Math.floor", mathRound, "Math.ceil": if err := arity(1); err != nil { return translated{}, err } @@ -1334,14 +1342,14 @@ func (p *opaqueParser) call(path []string) (translated, *refusal) { } // Java's floor and ceil answer a double, so a `/` after them is real division; its round answers a long. yields := "Integer" - if p.d == dialectJava && fn != "Math.round" { + if p.d == dialectJava && fn != mathRound { yields = "Real" } switch fn { case "Math.ceil": // -floor(-x) would overflow at the least Integer; the extension library's ceiling does not. return translated{expr: "OpenSysMLMathFunctions::ceiling(" + args[0].expr + ")", scalar: yields, atomic: true}, nil - case "Math.round": + case mathRound: // JavaScript and Java round a half toward +∞, where RealFunctions::round rounds it away from zero. half := translated{expr: "0.5", scalar: "Real", atomic: true, lit: "real"} return translated{expr: "RealFunctions::floor(" + binary(args[0], "+", half, looseAdditive, "Real").expr + ")", scalar: "Integer", atomic: true}, nil diff --git a/internal/translate/migrate/states.go b/internal/translate/migrate/states.go index fc00f69eb4..508dad0d09 100644 --- a/internal/translate/migrate/states.go +++ b/internal/translate/migrate/states.go @@ -18,6 +18,15 @@ const ( ) // stateMachineBody writes a state machine's regions as the body of its state def. + +// The note fragments the writer repeats. +const ( + doAction = "do action" + exitAction = "exit action" + notRun = " is not run: " + performsIts = "a state performs its " +) + func (m *migration) stateMachineBody(sm *sysmlv1.Element) { m.parameters(sm, sm) for _, c := range sm.Children { @@ -32,7 +41,7 @@ func (m *migration) stateMachineBody(sm *sysmlv1.Element) { for _, cp := range sm.Owned("connectionPoint") { m.connectionPoint(cp) } - m.regions(sm, m.populatedRegions(sm), false, func() {}) + m.regions(sm, m.populatedRegions(sm), false, func() { /* no extra nesting to write */ }) } // nameMachine names every vertex of a machine down through its nested regions ahead of writing, @@ -463,10 +472,10 @@ func (s *stateRegion) state(v *sysmlv1.Element) { entered := entry != nil && s.m.inlineBehavior("entry action", entry, v) between := func() { if do != nil { - s.m.inlineBehavior("do action", do, v) + s.m.inlineBehavior(doAction, do, v) } if exit != nil { - s.m.inlineBehavior("exit action", exit, v) + s.m.inlineBehavior(exitAction, exit, v) } } if len(regions) == 0 { @@ -552,19 +561,19 @@ func (m *migration) inlineBehavior(kw string, b, owner *sysmlv1.Element) bool { if c := m.contextOf(b); c != nil { expr, cnote := m.contextBinding(c, classifierOf(owner), "this") if expr == "" { - m.w.lines(commentLines(kw + " " + qualifiedName(b) + " is not run: " + cnote)) + m.w.lines(commentLines(kw + " " + qualifiedName(b) + notRun + cnote)) m.downgrade(b, "not run as the "+kw+" of "+describe(owner)+": "+cnote) - m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+" is not run: "+cnote) + m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+notRun+cnote) return false } ins = append(ins, "in "+writeName(c.name)+" = "+expr) note = joinNotes(note, cnote) } if params := inParameters(b); len(params) > 0 && owner.Type != "Transition" { - why := "a state performs its " + kw + " with no arguments; " + m.carrierWhy(owner, kw) + why := performsIts + kw + " with no arguments; " + m.carrierWhy(owner, kw) bound := m.carrierBindings(owner, b) switch { - case bound != nil && kw != "exit action": + case bound != nil && kw != exitAction: for _, p := range params { ins = append(ins, m.parameterBinding(p, m.nameFor(p), bound[p])) } @@ -572,9 +581,9 @@ func (m *migration) inlineBehavior(kw string, b, owner *sysmlv1.Element) bool { case slices.IndexFunc(params, requiresValue) >= 0: p := params[slices.IndexFunc(params, requiresValue)] why = "its parameter " + m.nameFor(p) + " must hold a value that nothing supplies: " + why - m.w.lines(commentLines(kw + " " + qualifiedName(b) + " is not run: " + why)) + m.w.lines(commentLines(kw + " " + qualifiedName(b) + notRun + why)) m.downgrade(b, "not run as the "+kw+" of "+describe(owner)+": "+why) - m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+" is not run: "+why) + m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+notRun+why) return false default: note = joinNotes(note, "its parameters take no value: "+why) @@ -594,14 +603,14 @@ func (m *migration) inlineBehavior(kw string, b, owner *sysmlv1.Element) bool { if owner.Type != "Transition" { bound := m.carrierBindings(owner, b) switch { - case bound != nil && kw != "exit action": + case bound != nil && kw != exitAction: savedBound, savedNote := m.bound, m.boundNote m.bound, m.boundNote = bound, "an attribute of the signal the transitions into the state accept" defer func() { m.bound, m.boundNote = savedBound, savedNote }() case owner.Type == "State": - m.unbound(b, joinNotes("a state performs its "+kw+" with no arguments", m.carrierWhy(owner, kw))) + m.unbound(b, joinNotes(performsIts+kw+" with no arguments", m.carrierWhy(owner, kw))) default: - m.unbound(b, "a state performs its "+kw+" with no arguments; only a transition's effect receives the accepted signal") + m.unbound(b, performsIts+kw+" with no arguments; only a transition's effect receives the accepted signal") } } header := kw @@ -969,11 +978,11 @@ func (s *stateRegion) writeTransitionEffect(t, eff *sysmlv1.Element, accept acce s.m.w.line(line) s.m.w.indented(func() { if eff == nil { - s.m.w.block("do action", func() { s.m.w.line(accept.keeping) }) + s.m.w.block(doAction, func() { s.m.w.line(accept.keeping) }) } else { saved, savedKeep := s.m.bound, s.m.keeping s.m.bound, s.m.keeping = accept.bound, accept.keeping - s.m.inlineBehavior("do action", eff, t) + s.m.inlineBehavior(doAction, eff, t) s.m.bound, s.m.keeping = saved, savedKeep } s.m.w.line("then " + to + ";") diff --git a/internal/translate/migrate/swimlane.go b/internal/translate/migrate/swimlane.go index 03d08fe17f..4af78ba4f6 100644 --- a/internal/translate/migrate/swimlane.go +++ b/internal/translate/migrate/swimlane.go @@ -27,6 +27,13 @@ type lane struct { // use records that a name or a call at e resolved through lane l, and so // through every other partition holding e that represents the same object. + +// The note fragments the writer repeats. +const ( + partRepresents = "the partition represents " + butNote = ", but " +) + func (ls *lanes) use(e *sysmlv1.Element, l *lane) { l.used = true for _, o := range ls.of[e] { @@ -214,11 +221,11 @@ func (m *migration) resolveLane(l *lane, ctx *sysmlv1.Element) { case !m.written(r) || m.nameOf(r) == "": l.note = "the property " + qualifiedName(r) + " it represents has no v2 declaration" case unreadableBounds(r): - l.note = "the partition represents " + qualifiedName(r) + ", but " + boundsNote(r) + l.note = partRepresents + qualifiedName(r) + butNote + boundsNote(r) case l.parent != nil && l.parent.expr != "" && l.parent.typ != nil && m.hasFeature(l.parent.typ, r): l.expr = l.parent.expr + "." + name l.plural = l.parent.plural || manyValued(r) - l.note = "the partition represents " + m.nameOf(r) + " of the enclosing partition's object, read as " + l.expr + l.note = partRepresents + m.nameOf(r) + " of the enclosing partition's object, read as " + l.expr case ctx == nil: l.note = "the activity is in no classifier whose object could hold " + qualifiedName(r) case m.hasFeature(ctx, r): @@ -227,11 +234,11 @@ func (m *migration) resolveLane(l *lane, ctx *sysmlv1.Element) { l.note = "the partition represents the context's " + m.nameOf(r) + ", read as " + l.expr default: if path, plural, unread := m.partPath(ctx, owner); unread != nil { - l.note = "the partition represents " + qualifiedName(r) + " through the part " + qualifiedName(unread) + ", but " + boundsNote(unread) + l.note = partRepresents + qualifiedName(r) + " through the part " + qualifiedName(unread) + butNote + boundsNote(unread) } else if path != "" { l.expr = "this." + path + "." + name l.plural = plural || manyValued(r) - l.note = "the partition represents " + qualifiedName(r) + ", read as " + l.expr + l.note = partRepresents + qualifiedName(r) + ", read as " + l.expr } else { l.note = "no part of " + qualifiedName(ctx) + " is a " + qualifiedName(owner) + ", which holds the represented " + m.nameOf(r) } @@ -258,7 +265,7 @@ func (m *migration) resolveLane(l *lane, ctx *sysmlv1.Element) { l.note = "the partition represents the context object itself, a " + qualifiedName(r) default: if path, plural, unread := m.partPath(ctx, r); unread != nil { - l.note = "the partition represents a " + qualifiedName(r) + " through the part " + qualifiedName(unread) + ", but " + boundsNote(unread) + l.note = "the partition represents a " + qualifiedName(r) + " through the part " + qualifiedName(unread) + butNote + boundsNote(unread) } else if path != "" { l.expr, l.plural = "this."+path, plural l.note = "the partition represents the context's part " + path + ", a " + qualifiedName(r) diff --git a/internal/translate/migrate/values.go b/internal/translate/migrate/values.go index e1287b509a..95cd551f66 100644 --- a/internal/translate/migrate/values.go +++ b/internal/translate/migrate/values.go @@ -18,6 +18,13 @@ import ( // valueExpr writes a UML value specification as a v2 expression. ok is false // when it has no v2 form; note explains an approximation or the refusal. + +// The note fragments the writer repeats. +const ( + notValueOf = " is not a value of " + whichNote = ", which " +) + func (m *migration) valueExpr(v, scope *sysmlv1.Element) (expr string, ok bool, note string) { return m.valueExprAs(v, scope, wanted{}) } @@ -42,7 +49,7 @@ func (m *migration) valueExprAs(v, scope *sysmlv1.Element, want wanted) (expr st return expr, ok, note } } - return "", false, "the " + kind + " " + qualifiedName(inst) + " is not a value of " + want.scalar + ", which " + want.holder + return "", false, "the " + kind + " " + qualifiedName(inst) + notValueOf + want.scalar + whichNote + want.holder } kind, text := literalKind(v, expr) if kind == "" { @@ -84,7 +91,7 @@ func literalAs(kind, expr, text string, want wanted) (value string, ok bool, not value, spelled := scalarLiteral(kind, expr, text, want.scalar) switch { case !spelled: - return "", false, "the " + kind + " " + expr + " is not a value of " + want.scalar + ", which " + want.holder + return "", false, "the " + kind + " " + expr + notValueOf + want.scalar + whichNote + want.holder case value != expr: return value, true, "the " + kind + " " + expr + " is written as the " + want.scalar + " " + want.holder } @@ -240,14 +247,14 @@ func (m *migration) featureValue(v, f, scope *sysmlv1.Element) (expr string, ok if v.Type == "InstanceValue" && t != nil { inst := m.model.Ref(v, "instance") if inst.Type == "InstanceSpecification" && !m.instanceOf(m.model.Refs(inst, "classifier"), t) { - return "", false, "the instance " + qualifiedName(inst) + " is not a " + qualifiedName(t) + ", which " + featureHolds + return "", false, "the instance " + qualifiedName(inst) + " is not a " + qualifiedName(t) + whichNote + featureHolds } if inst.Type == "EnumerationLiteral" && inst.Parent != t && m.written(t) { - return "", false, "the literal " + qualifiedName(inst) + " is not a " + qualifiedName(t) + ", which " + featureHolds + return "", false, "the literal " + qualifiedName(inst) + " is not a " + qualifiedName(t) + whichNote + featureHolds } } if m.scalarBase(t) == "" && strings.HasPrefix(v.Type, "Literal") && v.Type != "LiteralNull" && (m.structuredValueType(t) || m.written(t)) { - return "", false, "the literal " + expr + " is not a value of " + qualifiedName(t) + ", which has no scalar base" + return "", false, "the literal " + expr + notValueOf + qualifiedName(t) + ", which has no scalar base" } return expr, ok, note } diff --git a/scripts/download-doc-pdf-toolchain.sh b/scripts/download-doc-pdf-toolchain.sh index f667ed39f7..5d50792500 100755 --- a/scripts/download-doc-pdf-toolchain.sh +++ b/scripts/download-doc-pdf-toolchain.sh @@ -17,6 +17,9 @@ # binary finds the pinned copies. set -euo pipefail +# HTTPS_ONLY pins curl to TLS URLs so no fetch can fall back to plain http. +HTTPS_ONLY="=https" + PANDOC_VERSION="3.10.2" PANDOC_SHA256_AMD64="c7edd535941c48be6a362081a748272837de81ae11777202d9c341d3d8261c9a" PANDOC_SHA256_ARM64="1c4d69f2a092bd47cb180e58a4aab7b9637101ced928252458c7d41a7f7fa71d" @@ -55,7 +58,7 @@ if [[ -x "$pandoc_dir/bin/pandoc" ]]; then else tarball="$dest/pandoc-$PANDOC_VERSION-linux-$pandoc_arch.tar.gz" echo "Fetching pandoc $PANDOC_VERSION ($pandoc_arch) ..." - curl -fsSL --proto '=https' --proto-redir '=https' -o "$tarball" \ + curl -fsSL --proto "$HTTPS_ONLY" --proto-redir "$HTTPS_ONLY" -o "$tarball" \ "https://github.com/jgm/pandoc/releases/download/$PANDOC_VERSION/pandoc-$PANDOC_VERSION-linux-$pandoc_arch.tar.gz" echo "$pandoc_sha256 $tarball" | sha256sum -c - tar -xzf "$tarball" -C "$dest" @@ -133,7 +136,7 @@ else else echo "Fetching Graphviz $GRAPHVIZ_VERSION (Ubuntu $ubuntu_version) ..." tarball="$dest/graphviz-$GRAPHVIZ_VERSION-debs.tar.xz" - curl -fsSL --proto '=https' --proto-redir '=https' -o "$tarball" \ + curl -fsSL --proto "$HTTPS_ONLY" --proto-redir "$HTTPS_ONLY" -o "$tarball" \ "https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/$GRAPHVIZ_VERSION/ubuntu_${ubuntu_version}_graphviz-$GRAPHVIZ_VERSION-debs.tar.xz" echo "$graphviz_sha256 $tarball" | sha256sum -c - debs="$dest/graphviz-debs" @@ -189,7 +192,7 @@ if [[ -s "$plantuml" ]]; then else echo "Fetching PlantUML $PLANTUML_VERSION ..." mkdir -p "$(dirname "$plantuml")" - curl -fsSL --proto '=https' --proto-redir '=https' -o "$plantuml.part" \ + curl -fsSL --proto "$HTTPS_ONLY" --proto-redir "$HTTPS_ONLY" -o "$plantuml.part" \ "https://github.com/plantuml/plantuml/releases/download/v$PLANTUML_VERSION/plantuml-$PLANTUML_VERSION.jar" echo "$PLANTUML_SHA256 $plantuml.part" | sha256sum -c - mv "$plantuml.part" "$plantuml" diff --git a/scripts/fuml-driver/io/opensysml/fuml/FumlExpected.java b/scripts/fuml-driver/io/opensysml/fuml/FumlExpected.java index 34656fd2e4..270fd0fd47 100644 --- a/scripts/fuml-driver/io/opensysml/fuml/FumlExpected.java +++ b/scripts/fuml-driver/io/opensysml/fuml/FumlExpected.java @@ -328,6 +328,19 @@ private static List eventRecords(List lines, Map return out; } + /** The XMI id of the named activity, or of its one node with the action's name; null if shared. */ + private static String elementId(Map byName, String activity, String action) { + ActivityDecl decl = activity == null ? null : byName.get(activity); + if (decl == null) { + return null; + } + if (action == null) { + return decl.id; + } + List ids = decl.nodeIds.get(action); + return ids != null && ids.size() == 1 ? ids.get(0) : null; + } + } public static void main(String[] args) throws Exception { @@ -555,19 +568,6 @@ private static Map activitiesByName(List act return byName; } - /** The XMI id of the named activity, or of its one node with the action's name; null if shared. */ - private static String elementId(Map byName, String activity, String action) { - ActivityDecl decl = activity == null ? null : byName.get(activity); - if (decl == null) { - return null; - } - if (action == null) { - return decl.id; - } - List ids = decl.nodeIds.get(action); - return ids != null && ids.size() == 1 ? ids.get(0) : null; - } - private static List values(ValueList values, Map aliases, IdentityHashMap visiting, int depth) { List out = new ArrayList<>(); From 642375445cb211623dc62adbc894c9b39e97a75d Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 02:34:24 +0000 Subject: [PATCH 3/7] refactor: reduce cognitive complexity below the SonarCloud threshold Structural extraction only: flagged functions decomposed into named helpers; export split into documentName/exportResource. Co-Authored-By: jason.han --- .../opensysml/ApiIntegrationTest.java | 4 +- cmd/sysml/render_document.go | 129 ++++-- .../syson/export/ProjectTextExporter.java | 63 ++- .../syson/run/RunWithOpenSysMLService.java | 4 +- .../RunWithOpenSysMLServiceAnalysisTest.java | 2 +- .../syson/RunWithOpenSysMLServiceTest.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../syson/OpenSysMLAutoConfiguration.class | Bin 0 -> 2067 bytes .../opensysml/syson/OpenSysMLProperties.class | Bin 0 -> 5323 bytes .../syson/export/ElementSerializer.class | Bin 0 -> 548 bytes .../syson/export/ExportedProject$1.class | Bin 0 -> 1005 bytes .../ExportedProject$DocumentRange.class | Bin 0 -> 2204 bytes .../ExportedProject$ExportMessage.class | Bin 0 -> 2004 bytes .../syson/export/ExportedProject.class | Bin 0 -> 6981 bytes .../syson/export/ProjectExporter.class | Bin 0 -> 403 bytes .../syson/export/ProjectTextExporter.class | Bin 0 -> 11953 bytes .../syson/export/SysONElementSerializer.class | Bin 0 -> 3614 bytes .../ElementIndex$IndexedElement.class | Bin 0 -> 2235 bytes .../syson/identity/ElementIndex.class | Bin 0 -> 4129 bytes .../OpenSysMLTreeItemPaletteCustomizer.class | Bin 0 -> 5553 bytes .../syson/run/DiagnosticMapper$1.class | Bin 0 -> 970 bytes .../syson/run/DiagnosticMapper$Mapped.class | Bin 0 -> 1993 bytes .../syson/run/DiagnosticMapper.class | Bin 0 -> 4458 bytes .../MutationRunWithOpenSysMLDataFetcher.class | Bin 0 -> 6465 bytes .../opensysml/syson/run/RunDiagnostic.class | Bin 0 -> 2587 bytes .../opensysml/syson/run/RunInstance.class | Bin 0 -> 2296 bytes .../opensysml/syson/run/RunNamedValue.class | Bin 0 -> 1631 bytes .../opensysml/syson/run/RunOperation.class | Bin 0 -> 1808 bytes .../opensysml/syson/run/RunOutcome.class | Bin 0 -> 2918 bytes .../syson/run/RunResult$Builder.class | Bin 0 -> 4296 bytes .../run/RunResult$MappedDiagnostic.class | Bin 0 -> 2004 bytes .../opensysml/syson/run/RunResult.class | Bin 0 -> 5756 bytes .../opensysml/syson/run/RunResultStore.class | Bin 0 -> 6208 bytes .../opensysml/syson/run/RunVerdict.class | Bin 0 -> 2176 bytes .../run/RunWithOpenSysMLEventHandler.class | Bin 0 -> 7373 bytes .../syson/run/RunWithOpenSysMLInput.class | Bin 0 -> 4054 bytes .../syson/run/RunWithOpenSysMLService$1.class | Bin 0 -> 1376 bytes .../RunWithOpenSysMLService$ResultParts.class | Bin 0 -> 14564 bytes .../syson/run/RunWithOpenSysMLService.class | Bin 0 -> 19242 bytes .../run/RunWithOpenSysMLSuccessPayload.class | Bin 0 -> 2491 bytes .../opensysml/syson/run/ValueText.class | Bin 0 -> 6957 bytes .../OpenSysMLValidationService.class | Bin 0 -> 4670 bytes .../target/classes/schema/opensysml.graphqls | 100 ++++ .../compile/default-compile/createdFiles.lst | 35 ++ .../compile/default-compile/inputFiles.lst | 25 + .../default-testCompile/createdFiles.lst | 18 + .../default-testCompile/inputFiles.lst | 17 + ...e.opensysml.syson.DiagnosticMapperTest.xml | 57 +++ ...nmbee.opensysml.syson.ElementIndexTest.xml | 56 +++ ...utationRunWithOpenSysMLDataFetcherTest.xml | 62 +++ ...l.syson.OpenSysMLAutoConfigurationTest.xml | 57 +++ ...pensysml.syson.OpenSysMLPropertiesTest.xml | 58 +++ ...OpenSysMLTreeItemPaletteCustomizerTest.xml | 57 +++ ...l.syson.OpenSysMLValidationServiceTest.xml | 59 +++ ...pensysml.syson.ProjectTextExporterTest.xml | 61 +++ ...bee.opensysml.syson.RunResultStoreTest.xml | 57 +++ ...syson.RunWithOpenSysMLEventHandlerTest.xml | 57 +++ ....syson.RunWithOpenSysMLIntegrationTest.xml | 56 +++ ...on.RunWithOpenSysMLServiceAnalysisTest.xml | 57 +++ ...ysml.syson.RunWithOpenSysMLServiceTest.xml | 66 +++ ...openmbee.opensysml.syson.ValueTextTest.xml | 57 +++ ...nsysml.syson.run.RunVerdictSummaryTest.xml | 61 +++ ...e.opensysml.syson.DiagnosticMapperTest.txt | 4 + ...nmbee.opensysml.syson.ElementIndexTest.txt | 4 + ...utationRunWithOpenSysMLDataFetcherTest.txt | 4 + ...l.syson.OpenSysMLAutoConfigurationTest.txt | 4 + ...pensysml.syson.OpenSysMLPropertiesTest.txt | 4 + ...OpenSysMLTreeItemPaletteCustomizerTest.txt | 4 + ...l.syson.OpenSysMLValidationServiceTest.txt | 4 + ...pensysml.syson.ProjectTextExporterTest.txt | 4 + ...bee.opensysml.syson.RunResultStoreTest.txt | 4 + ...syson.RunWithOpenSysMLEventHandlerTest.txt | 4 + ....syson.RunWithOpenSysMLIntegrationTest.txt | 4 + ...on.RunWithOpenSysMLServiceAnalysisTest.txt | 4 + ...ysml.syson.RunWithOpenSysMLServiceTest.txt | 4 + ...openmbee.opensysml.syson.ValueTextTest.txt | 4 + ...nsysml.syson.run.RunVerdictSummaryTest.txt | 4 + .../target/test-classes/models/broken.sysml | 5 + .../target/test-classes/models/choice.sysml | 24 + .../target/test-classes/models/counter.sysml | 4 + .../target/test-classes/models/req.sysml | 7 + .../target/test-classes/models/vehicle.sysml | 3 + .../syson/DiagnosticMapperTest.class | Bin 0 -> 3451 bytes .../opensysml/syson/ElementIndexTest.class | Bin 0 -> 1779 bytes .../opensysml/syson/FakeElement$1.class | Bin 0 -> 1394 bytes .../opensysml/syson/FakeElement.class | Bin 0 -> 3984 bytes ...ationRunWithOpenSysMLDataFetcherTest.class | Bin 0 -> 5893 bytes .../OpenSysMLAutoConfigurationTest.class | Bin 0 -> 5092 bytes .../syson/OpenSysMLPropertiesTest.class | Bin 0 -> 2323 bytes ...enSysMLTreeItemPaletteCustomizerTest.class | Bin 0 -> 853 bytes .../OpenSysMLValidationServiceTest.class | Bin 0 -> 4805 bytes .../syson/ProjectTextExporterTest.class | Bin 0 -> 13420 bytes .../opensysml/syson/RunResultStoreTest.class | Bin 0 -> 4588 bytes .../RunWithOpenSysMLEventHandlerTest.class | Bin 0 -> 1998 bytes .../RunWithOpenSysMLIntegrationTest.class | Bin 0 -> 12327 bytes .../RunWithOpenSysMLServiceAnalysisTest.class | Bin 0 -> 7126 bytes .../syson/RunWithOpenSysMLServiceTest.class | Bin 0 -> 8460 bytes .../opensysml/syson/ServiceBinary.class | Bin 0 -> 2728 bytes .../opensysml/syson/ValueTextTest.class | Bin 0 -> 1293 bytes .../syson/run/RunVerdictSummaryTest.class | Bin 0 -> 7704 bytes .../spring/graphql/QueryDataFetcher.class | Bin 0 -> 583 bytes .../collaborative/api/ChangeDescription.class | Bin 0 -> 1970 bytes .../collaborative/api/ChangeKind.class | Bin 0 -> 786 bytes .../api/IEditingContextEventHandler.class | Bin 0 -> 1108 bytes .../api/IEditingContextEventProcessor.class | Bin 0 -> 501 bytes ...EditingContextEventProcessorRegistry.class | Bin 0 -> 389 bytes .../collaborative/dto/KeyBinding.class | Bin 0 -> 2043 bytes .../dto/palette/SingleClickTreeItemTool.class | Bin 0 -> 2908 bytes .../api/ITreeItemPaletteCustomizer.class | Bin 0 -> 898 bytes .../components/core/api/ErrorPayload.class | Bin 0 -> 3948 bytes .../components/core/api/IEditingContext.class | Bin 0 -> 465 bytes .../core/api/IIdentityService.class | Bin 0 -> 277 bytes .../sirius/components/core/api/IInput.class | Bin 0 -> 217 bytes .../core/api/IObjectSearchService.class | Bin 0 -> 480 bytes .../sirius/components/core/api/IPayload.class | Bin 0 -> 170 bytes .../core/api/IValidationService.class | Bin 0 -> 600 bytes .../components/core/api/SuccessPayload.class | Bin 0 -> 2389 bytes .../emf/services/api/IEMFEditingContext.class | Bin 0 -> 1598 bytes .../sirius/components/events/ICause.class | Bin 0 -> 384 bytes .../IDataFetcherWithFieldCoordinates.class | Bin 0 -> 1467 bytes .../api/IEditingContextDispatcher.class | Bin 0 -> 577 bytes .../graphql/api/IExceptionWrapper.class | Bin 0 -> 1962 bytes .../palette/dto/IPaletteEntry.class | Bin 0 -> 185 bytes .../sirius/components/palette/dto/ITool.class | Bin 0 -> 335 bytes .../palette/dto/Palette$Builder.class | Bin 0 -> 1809 bytes .../components/palette/dto/Palette.class | Bin 0 -> 2877 bytes .../components/representations/Message.class | Bin 0 -> 1947 bytes .../representations/MessageLevel.class | Bin 0 -> 1408 bytes .../sirius/components/trees/Tree.class | Bin 0 -> 593 bytes .../sirius/components/trees/TreeItem.class | Bin 0 -> 596 bytes .../trees/description/TreeDescription.class | Bin 0 -> 468 bytes .../org/eclipse/syson/sysml/Element.class | Bin 0 -> 371 bytes .../sysml/impl/MembershipCacheAdapter.class | Bin 0 -> 375 bytes .../textual/SysMLElementSerializer.class | Bin 0 -> 1434 bytes .../SysMLSerializingOptions$Builder.class | Bin 0 -> 2031 bytes .../textual/SysMLSerializingOptions.class | Bin 0 -> 2603 bytes .../textual/utils/FileNameDeresolver.class | Bin 0 -> 847 bytes .../textual/utils/INameDeresolver.class | Bin 0 -> 339 bytes .../services/textual/utils/Severity.class | Bin 0 -> 1444 bytes .../services/textual/utils/Status.class | Bin 0 -> 2736 bytes .../sysml/metamodel/util/ElementUtil.class | Bin 0 -> 815 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 41 ++ .../compile/default-compile/inputFiles.lst | 39 ++ ...ensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar | Bin 0 -> 36799 bytes internal/translate/migrate/activity.go | 184 +++++--- internal/translate/migrate/arguments.go | 166 ++++--- internal/translate/migrate/arrivals.go | 160 ++++--- internal/translate/migrate/carriers.go | 79 ++-- internal/translate/migrate/interaction.go | 92 ++-- internal/translate/migrate/opaque.go | 438 +++++++++++------- internal/translate/migrate/states.go | 259 +++++++---- internal/translate/migrate/swimlane.go | 76 +-- internal/translate/migrate/translate.go | 241 ++++++---- internal/translate/migrate/values.go | 84 ++-- 155 files changed, 2462 insertions(+), 783 deletions(-) create mode 100644 editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLProperties.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ElementSerializer.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$1.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectExporter.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectTextExporter.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/SysONElementSerializer.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/menu/OpenSysMLTreeItemPaletteCustomizer.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper$1.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper$Mapped.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunDiagnostic.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunInstance.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunNamedValue.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOperation.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOutcome.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$Builder.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResultStore.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunVerdict.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLInput.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$1.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLSuccessPayload.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/ValueText.class create mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class create mode 100644 editors/syson/backend/target/classes/schema/opensysml.graphqls create mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt create mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt create mode 100644 editors/syson/backend/target/test-classes/models/broken.sysml create mode 100644 editors/syson/backend/target/test-classes/models/choice.sysml create mode 100644 editors/syson/backend/target/test-classes/models/counter.sysml create mode 100644 editors/syson/backend/target/test-classes/models/req.sysml create mode 100644 editors/syson/backend/target/test-classes/models/vehicle.sysml create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/DiagnosticMapperTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ElementIndexTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement$1.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/MutationRunWithOpenSysMLDataFetcherTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfigurationTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLPropertiesTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ProjectTextExporterTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunResultStoreTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLIntegrationTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ServiceBinary.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ValueTextTest.class create mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeDescription.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeKind.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/dto/KeyBinding.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/palette/api/ITreeItemPaletteCustomizer.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/ErrorPayload.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IEditingContext.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IIdentityService.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IInput.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IObjectSearchService.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IPayload.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IValidationService.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/SuccessPayload.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/emf/services/api/IEMFEditingContext.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/events/ICause.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IDataFetcherWithFieldCoordinates.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/IPaletteEntry.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/ITool.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette$Builder.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/Message.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/MessageLevel.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/Tree.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/TreeItem.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/description/TreeDescription.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/Element.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/FileNameDeresolver.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class create mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/util/ElementUtil.class create mode 100644 editors/syson/syson-api-stubs/target/maven-archiver/pom.properties create mode 100644 editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 editors/syson/syson-api-stubs/target/opensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java index ad32a3ef18..16856bf050 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java @@ -1097,13 +1097,13 @@ void runSweepStepsThroughARangeAndReportsEachRow() { @Test void runSweepOfAnotherKindIsAModelFailure() { Model model = connection.load(fixture("sweep.sysml")); - ModelException failed = List ranges = List.of( org.openmbee.opensysml.SweepRange.of( "limit", new Value.RealValue(0.0), new Value.RealValue(4.0)) .withStep(new Value.RealValue(2.0))); - assertThrows( + ModelException failed = + assertThrows( ModelException.class, () -> model.runSweep("Sw::barge", ranges)); assertEquals(FailureReason.WRONG_KIND, failed.failureReason()); diff --git a/cmd/sysml/render_document.go b/cmd/sysml/render_document.go index 1b67f9f1a2..4864140d4b 100644 --- a/cmd/sysml/render_document.go +++ b/cmd/sysml/render_document.go @@ -714,64 +714,91 @@ func documentForm() (string, error) { } switch form := docFormOrDefault(); form { case docFormMarkdown: - if htmlFlagsGiven() { - return "", errors.New("the -html- options shape HTML output; ask for it with -doc-form html") - } - if pdfEngine != "" || pdfTitlePage || pdfTOC || pdfNumbering { - return "", errors.New("-pdf-engine and the title page, contents and numbering options shape HTML and PDF output; ask for one with -doc-form html or -doc-form pdf") - } - return form, nil + return checkMarkdownForm(form) case docFormHTML: - if pdfEngine != "" { - return "", errors.New("-pdf-engine shapes PDF output; -doc-form html needs no external converter") - } - if htmlFragment && htmlNoCSS { - return "", errors.New("-html-fragment already writes no stylesheet; -html-no-default-css leaves the default sheet out of a whole page") - } - if htmlFragment && len(htmlCSS) > 0 { - return "", errors.New("-html-fragment writes the document element alone, with no place for a stylesheet; style the page you embed it in") - } - if htmlFragment && htmlMermaid != "" { - return "", errors.New("-html-fragment writes the document element alone, with no place for a script; load Mermaid in the page you embed it in") - } - if htmlFragment && htmlMath != "" { - return "", errors.New("-html-fragment writes the document element alone, with no place for a script; load MathJax in the page you embed it in") - } - if err := checkMermaidScript(); err != nil { - return "", err - } - if err := checkMathScript(); err != nil { - return "", err - } - if htmlFragment && htmlTheme != "" { - return "", errors.New("-html-fragment writes the document element alone, with no place for a stylesheet; -html-theme styles a whole page") - } - if err := checkThemeUse(); err != nil { - return "", err - } - return form, nil + return checkHTMLForm(form) case docFormPDF: - if htmlFragment { - return "", errors.New("-html-fragment writes the document element alone for embedding in a page; a PDF is laid out from a whole page") - } - if htmlMermaid != "" { - return "", errors.New("-html-mermaid loads a script into an HTML page; a PDF draws its diagrams with mermaid-cli ahead of the converter") - } - if htmlMath != "" { - return "", errors.New("-html-math loads a script into an HTML page; a PDF typesets its formulas with KaTeX ahead of the converter") - } - if err := checkThemeUse(); err != nil { - return "", err - } - if outputPath == "" { - return "", errors.New("-doc-form pdf writes a binary artifact; name the file to write with -o") - } - return form, nil + return checkPDFForm(form) default: return "", unknownDocumentForm(form) } } +// checkMarkdownForm refuses the HTML and PDF options, which do not apply. +func checkMarkdownForm(form string) (string, error) { + if htmlFlagsGiven() { + return "", errors.New("the -html- options shape HTML output; ask for it with -doc-form html") + } + if pdfEngine != "" || pdfTitlePage || pdfTOC || pdfNumbering { + return "", errors.New("-pdf-engine and the title page, contents and numbering options shape HTML and PDF output; ask for one with -doc-form html or -doc-form pdf") + } + return form, nil +} + +// checkHTMLForm checks the HTML option combination and the scripts and theme it names. +func checkHTMLForm(form string) (string, error) { + if pdfEngine != "" { + return "", errors.New("-pdf-engine shapes PDF output; -doc-form html needs no external converter") + } + if err := checkFragmentOptions(); err != nil { + return "", err + } + if err := checkMermaidScript(); err != nil { + return "", err + } + if err := checkMathScript(); err != nil { + return "", err + } + if htmlFragment && htmlTheme != "" { + return "", errors.New("-html-fragment writes the document element alone, with no place for a stylesheet; -html-theme styles a whole page") + } + if err := checkThemeUse(); err != nil { + return "", err + } + return form, nil +} + +// checkFragmentOptions refuses the stylesheet, script and theme options a +// fragment has no place for. +func checkFragmentOptions() error { + if !htmlFragment { + return nil + } + if htmlNoCSS { + return errors.New("-html-fragment already writes no stylesheet; -html-no-default-css leaves the default sheet out of a whole page") + } + if len(htmlCSS) > 0 { + return errors.New("-html-fragment writes the document element alone, with no place for a stylesheet; style the page you embed it in") + } + if htmlMermaid != "" { + return errors.New("-html-fragment writes the document element alone, with no place for a script; load Mermaid in the page you embed it in") + } + if htmlMath != "" { + return errors.New("-html-fragment writes the document element alone, with no place for a script; load MathJax in the page you embed it in") + } + return nil +} + +// checkPDFForm refuses the HTML options a PDF does not use and requires -o. +func checkPDFForm(form string) (string, error) { + if htmlFragment { + return "", errors.New("-html-fragment writes the document element alone for embedding in a page; a PDF is laid out from a whole page") + } + if htmlMermaid != "" { + return "", errors.New("-html-mermaid loads a script into an HTML page; a PDF draws its diagrams with mermaid-cli ahead of the converter") + } + if htmlMath != "" { + return "", errors.New("-html-math loads a script into an HTML page; a PDF typesets its formulas with KaTeX ahead of the converter") + } + if err := checkThemeUse(); err != nil { + return "", err + } + if outputPath == "" { + return "", errors.New("-doc-form pdf writes a binary artifact; name the file to write with -o") + } + return form, nil +} + // writePDFArtifact writes the PDF bytes to -o, byte-exact. func writePDFArtifact(pdf []byte) error { replaced, err := export.WriteFile(outputPath, pdf) diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java index 300e9f8398..5af041ff43 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java @@ -38,36 +38,49 @@ public ExportedProject export(IEMFEditingContext context) { for (Resource resource : context.getDomain().getResourceSet().getResources()) { String uri = resource.getURI() == null ? "" : resource.getURI().toString(); if (uri.startsWith(ElementUtil.KERML_LIBRARY_SCHEME) || uri.startsWith(ElementUtil.SYSML_LIBRARY_SCHEME)) continue; - String base = resource.getURI() == null ? "" : resource.getURI().lastSegment(); - if (base == null || base.isBlank()) base = "document-" + documentIndex; - if (!base.endsWith(SYSML_EXTENSION)) base += SYSML_EXTENSION; - String name = base; - int suffix = 1; - while (containsDocument(documents, name)) { - name = base.replace(SYSML_EXTENSION, "-" + suffix++ + SYSML_EXTENSION); - } - StringBuilder text = new StringBuilder(); - for (EObject root : resource.getContents()) { - if (!(root instanceof Element element)) continue; - if (!text.isEmpty() && text.charAt(text.length() - 1) != '\n') text.append('\n'); - int start = text.isEmpty() ? 1 : lineCount(text); - List statuses = new ArrayList<>(); - String serialized = serializer.serialize(root, statuses::add); - if (serialized == null) serialized = ""; - text.append(serialized); - int end = Math.max(start, - lineCount(text) - (text.length() > 0 && text.charAt(text.length() - 1) == '\n' ? 1 : 0)); - ranges.add(new ExportedProject.DocumentRange(name, start, end, element)); - statuses.forEach(status -> messages.add(new ExportedProject.ExportMessage(ExportedProject.level(status), - status.message()))); - index(element, entries); - } - documents.add(SourceDocument.inline(name, text.toString())); + String name = documentName(resource, documents, documentIndex); + exportResource(resource, name, documents, messages, ranges, entries); documentIndex++; } return new ExportedProject(documents, new ElementIndex(entries), messages, ranges); } + // Names one resource: its URI's last segment as a .sysml name, suffixed when taken. + private String documentName(Resource resource, List documents, int documentIndex) { + String base = resource.getURI() == null ? "" : resource.getURI().lastSegment(); + if (base == null || base.isBlank()) base = "document-" + documentIndex; + if (!base.endsWith(SYSML_EXTENSION)) base += SYSML_EXTENSION; + String name = base; + int suffix = 1; + while (containsDocument(documents, name)) { + name = base.replace(SYSML_EXTENSION, "-" + suffix++ + SYSML_EXTENSION); + } + return name; + } + + // Serializes a resource's roots into one document, recording its ranges, messages and index entries. + private void exportResource(Resource resource, String name, List documents, + List messages, List ranges, + Map entries) { + StringBuilder text = new StringBuilder(); + for (EObject root : resource.getContents()) { + if (!(root instanceof Element element)) continue; + if (!text.isEmpty() && text.charAt(text.length() - 1) != '\n') text.append('\n'); + int start = text.isEmpty() ? 1 : lineCount(text); + List statuses = new ArrayList<>(); + String serialized = serializer.serialize(root, statuses::add); + if (serialized == null) serialized = ""; + text.append(serialized); + int end = Math.max(start, + lineCount(text) - (text.length() > 0 && text.charAt(text.length() - 1) == '\n' ? 1 : 0)); + ranges.add(new ExportedProject.DocumentRange(name, start, end, element)); + statuses.forEach(status -> messages.add(new ExportedProject.ExportMessage(ExportedProject.level(status), + status.message()))); + index(element, entries); + } + documents.add(SourceDocument.inline(name, text.toString())); + } + private void index(Element root, Map entries) { visit(root, element -> { String qualifiedName = element.getQualifiedName(); diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java index d1f849ef6e..a3bbce1410 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java @@ -259,7 +259,7 @@ static ResultParts verification(Verification result, ExportedProject project) { static ResultParts satisfaction(Satisfaction result, ExportedProject project) { ResultParts p = new ResultParts(project); p.verdicts = result.verdicts().stream().map(p::verdict).toList(); - p.verdict = verdictLabel(result.verdicts().stream().allMatch(RunVerdict::decided), + p.verdict = verdictLabel(result.verdicts().stream().allMatch(Verdict::decided), result.holds(), "pass", "fail"); p.diagnostics = result.diagnostics(); p.instances = p.instances(result.instances()); @@ -274,7 +274,7 @@ static ResultParts calculation(Calculation result, ExportedProject project) { } static ResultParts analysis(Analysis result, ExportedProject project) { ResultParts p = new ResultParts(project); - p.verdict = verdictLabel(result.verdicts().stream().allMatch(RunVerdict::decided), + p.verdict = verdictLabel(result.verdicts().stream().allMatch(Verdict::decided), result.holds(), HOLDS, VIOLATED); p.outputs = values(result.outputs()); p.verdicts = result.verdicts().stream().map(p::verdict).toList(); diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java index 652eecebb5..3a45c975aa 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java @@ -32,7 +32,7 @@ class RunWithOpenSysMLServiceAnalysisTest { private static final String ANALYSIS = "Analysis"; - private static final String ANALYSIS_ID = ANALYSIS_ID; + private static final String ANALYSIS_ID = "analysis-id"; @Test void passesAnalysisOptionsToModel() { Connection connection = mock(Connection.class); diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java index 5e0e77ed2c..6ec2044f98 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java @@ -25,7 +25,7 @@ class RunWithOpenSysMLServiceTest { private static final String VEHICLE = "Vehicle"; - private static final String VEHICLE_ID = VEHICLE_ID; + private static final String VEHICLE_ID = "vehicle-id"; @Test void doesNotEvaluateStaleArgumentsWhenInstantiating() { Connection connection = org.mockito.Mockito.mock(Connection.class); diff --git a/editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000000..aa09e231d9 --- /dev/null +++ b/editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +org.openmbee.opensysml.syson.OpenSysMLAutoConfiguration diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..30b7042d85c5d613be2b68bcb1d282ad4b5f1d5c GIT binary patch literal 2067 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 Mn-P8``X>_q1sV>Pt^fc4 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ElementSerializer.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ElementSerializer.class new file mode 100644 index 0000000000000000000000000000000000000000..cb268696a958da326139374f4d38bf92de1f7d24 GIT binary patch literal 548 zcmbu6%}N77497ET-P-!qliBvzx{wGs@l;B`L}#anO%NV~HIh&7Bt9%XML9HR(Zw7| zE2E!~y3i3YSg4hfM!8bnOcz*00lo0`MZn~6T-V0J=w(2OcFwUUl*9ISHg58(sEwRg zu85i&UV0ZQi0BFC_*^j;_;8F!5c z&5==wwH+CDM9Mp=Eo5kf?#GcZVJZ&O9+zP+jim`&qAzru9x>$lT=s-vs4Oh*)c(2P z!vgXscqsZf1)pKXR#aV)basVs!O4Ut(~85c(rH+BPPAWWbs(ZNxXVxrT5sYs+TY~e zfJy`dm4W-u+KvofPBi1=yq(C~UTxN^^$p9- z`MBVwTrWR;<(Nx8E?XvBtydZzt}v8_WgENp(HQcN=n|4Red4-rQT7_00K<4KPDH&& z3(zn5t|VrnrXnu4xQ;CzkYlZsN3ZF<2e{Z$JspWkZ2y@2V@1ohJ(VsekyIv5_BKVj zui74NGu;1+mDBWfVbW*HkPyF`BtoxAZj3Occ{-?hI)7H0u_t9CVy@yE`GC+{WGDhE zpTUm57C*xKV85|XIFoI>L-x6Y(*#F{aF$?h2rm-!9DI)~3Yf$+&S8dn+#r7w_pn0# z0ame2K7;GjFXy_>Q3hydpe$et`E8FfHh(u%bHQaT;uiTVmdM_5%o3K#7o8>wO8Fl* CR|U%e literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class new file mode 100644 index 0000000000000000000000000000000000000000..b35fd0be1dd0c1cdf9979bb59fea644fdeec9df1 GIT binary patch literal 2204 zcmb_eZBrXn6n-uwY@myfG)0Mhu`R91qFrlItBb8IFA|N|X*=lXrzN=q+iv#8-J6d6 zPkyj7GS2Y9AK;I2eD3Z7iy&o`57~3?x##^n=S=?mYxfTTpQAH@5sX?W*(hU7VEUQ= z!goVI+HxPuu8MmCV~ar)=z9XA&DO>^Dj2sgVdETZfd?wya@9aa{Y@#;L-I1|hc3S= za^=qh6>E1TC9?M@R?lQt&n>I&urDM1m|moS-OKOmexKJ`=OBb9Iu4>O&p3U<#uTOn z#uM$wx)Vec6>alUvvJ}=bhqs%+e@m)oL0}oUE5f{YU3KNvw`xb zp&up!-=Br;LMGpCntpn%9|Z0;3;euo?e=SH-r5i-Wr&;_&m14gwaG{uGA$y??<2HX1xK3-Y z!=1py6E%#xay2kn*Z(mtx6C*YBI`2IYbwzeJ`%X|ALfog*c<8Thf3*0$NnHIKvKb{ z0ym3;=av+yw(v5?GR&h~fDfE-1 z$jD*(<543;?}ui0zp-{Zie#Lcltj(sp`B)7P2k2s4Nl0(!dC*9PZnk4vI5{XSKA0D zyM&tAzdY50oCnZ$QEecj=FQKCH!%63%;uSHeTX|LUBJhr4fZ`lWQNBKjTsg{;d_nl?h#uR+{I_`u*m-&D=B}3 PyalXc7GI)`uQB^K9-I1e literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class new file mode 100644 index 0000000000000000000000000000000000000000..9ef6d14a701fe04aa4466b1f30e8f55637411bbf GIT binary patch literal 2004 zcmb_dTTc@~6#k}Cw!oG`1r$;6g4&kLig+)gfD%XwUV}!TmUaRQ+nsf0OXNTKAc@3; z2Y-M+%6MjXkwuUg;GsP;XXboozH{53zjl5Ac#N4=q;SSSlZiB%89LVN4cl^UZ^e4e zt3uWonkO932__lN6pBkN$e_hQtBE$43{yg`Si#UWF9~fRm(8tVC z0y9oVafzWRib$^Fczm%zbtK=~%Pz$zUlCQ?U9zR4_p!1mSapcw%qe7xihY3xtD^SO zmUf*7ToQ0s;gBSTr9aQmT}V(!goO$H+PzYXj~FHi?F2>5(E3I+WR=f4Iv`ztHPWc| zNM*IiRWK)1U|^JC{1_cc#k1S&9n(StDv-7x#YSatn;{#vXgThy9JLtzvbkp5YsGy$ zF!0dCBa|5i_JSZAUf|TZ6$K+kV`y34b-=KdjHlymh;>d~ty3~*do`DFpf)925)s!GQXgiM;uxVBPBMU3(BAV|{tzIOhTQghz(xC|jV)k}8YFf;Ik z;rd<-j^JcqilP7LtCW{002rh3mZD})A+HCoo?&{{k!%J{P+X#ue%dYQX-+a%`VLka z+J;dY-bQwdR4EL^*XbCSX?;1miYvHEJFV5wEL>^u6t2;_B}Hm|2z1ie9Ha}{(-=v8 z)hO+d9$#sB&_je~#2z|n3|>FPyc_uPU*>(dK~A*y36eSdjDnL6W#ekFoT;Y z&;vBBG@}h@(}rUFCX1w|lrDXPaTK9+jL0Y|yYWaGXaC1IjS~4vVF<&a9Dzl$oitH` jqx9YibqsgWL?tkWaoi#DI{hiykI)yq7n693Y4rXEJ=gkP literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject.class new file mode 100644 index 0000000000000000000000000000000000000000..179ead1e54e74ac61f4e16f455695ccdc188a388 GIT binary patch literal 6981 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 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectExporter.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectExporter.class new file mode 100644 index 0000000000000000000000000000000000000000..94fdf57f47663d0e4b8ab024176a364f33712b48 GIT binary patch literal 403 zcmaiwu};G<5QgsxO`w3pz{11|3mzCF280r+QY$Ku*d6B@u5#?icB;aoG4KF96snU} zLSkXL^M7ak`u_X=`TPQadpJvBgm7nFEo@7sDT#)MfA@_Rv05W&(^?nA!r2w6kPnJn z3Wo^iE4h|JOH+%dvfm;kyYC1e*R$T1l;+lx@a(wrLfNLZhD`8+nx*jM)~v`2*|M1C z^CGV}u&E!d3A72>&EWAL+McP}BW4k7PT|c~3+ZG-ft*K3)y@-P@?txus9;S97k_fy z_K^@SpF0z{p;z`?YI-on1{v6z=yWyvja_s`^<$~0k=QMzqAWo`IEeQJz<8uFBvGeP UjS-Gw8^Q5VCvXybzdQxl0`8N1ivR!s literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectTextExporter.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectTextExporter.class new file mode 100644 index 0000000000000000000000000000000000000000..b5be0cc521bd44f5fa1cce239d29b305dd3ae7d9 GIT binary patch literal 11953 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 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/SysONElementSerializer.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/SysONElementSerializer.class new file mode 100644 index 0000000000000000000000000000000000000000..95c7ea0827f54f60404a53244bc5d3210bf60026 GIT binary patch literal 3614 zcmcInT~kv>7=9K4Cke+7K*Wevsaiq6)7IJ#P%0v}XaGwrR{P~4S;)cjk)Cq`V#i&n{RDJlEjp*oNigY-3D1)6x&JR&Ll#XXQ}F%!SgA zqZRc{XvYB!2^|N~A#iH_J7w!ssap^+4Z8OLZ2@UREEvVk%x}%6S%qqMU?{r9dF@n zhN4?>F7U9cBL26jNRi)YC9_v!lPKPye_~3BcXhm{{L^H)8R>?ma;Dn=* zwP1zmEFrB@hB6qfK{W%a3<+y_7sV9;;{0JGb&M&9Y4oMz%}Wgv0{zNXUQW71Ls?kR z1H?#I2t|?IJ+JCDpG;SFabzlPm;hfo>x$O-JG_$(~|Vkrafg6 zg803*840r%0rgxV^L8dJqdi8rD*zkWT>CFeZtb9IGYe>55iA9gJ3)xeB89e6=&USL zE2D`sG?9+nkF-g zWtVYOL0F7Fj$2o2zOcVCTo!Yskh#5;n#DjWbv*02ZBZMG5S}86=7WJj^4`UD`p%e{ zD@3V=I|5gB3OyyvDc4*LPDLYEOlJ+AKt~}EYJ-P{Z;0#VNV%T%y@g_G?H!Y0*2`QY z&{It|KTL^~HS1C#pDFR(|4E6LVbL1kB@j;)8c$WJsW_9Q1`?fC>Ix(#^KNK4a>@!U zV#ko{dc~4QMT@!xIn|2HDE${a|BeyR3epQ1H3l7^S|PesA9Y>n58GxCNK$HRy$?Du z&MuqK!IoRi?6f&f^2^{%j77t#Wr!aO$0?5L7;Js7bJU9$@F}MF#TtvxP_KyVIuJpe zdrx~-ps^tKJ>m2SvAz}TB0fh}(RyW(l8%yX~MK9N|Msio+XU*YYFWMqAjD3 z(2&sjqZ?UWt;I@hCZa#|$F_ev_A4zniU(Mx!pm4G%n>MK4Pp<+ebCUx_Ip2@;db^e z2YCA+zCZ^Y9KwATu?IMU?|J$Y*UMc0$@Sm#jWY5i|JFFTf}6NSCs}GlQmQ>aWf2 z5e@Cn(aBLmYx8rQ*D$BS9^&tr>cj2k7bI!aFs>o0!6ixYE`)~M3o00|aRv&NQ=#LN lSFDaAgUo?|zdD2zHD6fGV}Y}Zv%8!Z`HORX40E`L#J^@`L398B literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class new file mode 100644 index 0000000000000000000000000000000000000000..9b7789b305ef4d4f23b93b3e51a0caf804f8a91e GIT binary patch literal 2235 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 Y44&f!eX3>oLv)|SB1QiO@34%%KRZwHTmS$7 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..84346258439df43618af26fbccc338c97c2c3e23 GIT binary patch literal 4458 zcmbVP`Ewjc75-Y{;9HJu=KJDUi**v~4QxQWK>Jb_fmX{q?J7^%w1!5U(=rs%JtSW!~5gFcCS1oqz5(&QxVjAIM78u$>l(eN27uin4rr0-hxEY0469R}{jPMYWW zrt6PbHkoN&I*#4gBat-lVeA#yP<3hA_SLL%1>_|&UsU5W+AZm_UjmcM99(}lIt}dC z>&GnHpVItsbmM@;K?6NV2^?*(C5FJUQ)<58xPEFlXjJyJ>xAKKRe3c>R}Rvd`#Zys z1ggtBtC+JiOot5|!BGMtbUA%mD;~n7uXZzKlEiU=!4-|Qvb4zZucU@Ul zM@o{$Co5?gbb_=@R?{*$sV*s(9v5gjPsGOXkb#FWLbQ2zW_lWXcbS#w)iI1qoHp=D z4co2;9$ZG0QE=R>#d;tyNnF)tOvafjn7(x(uZHrb=MCjpo7AxDI&K^jXpUiua8P<2 z!=qg2vgz8)&=}4!gDrc;k$6m?r-3nHu4tD|6z!^I+96LE_*75^GESE0I0nXY`U-^#%MZEw7KQ^SGn|zAcV9JGH)#n5b zuR7e6*6tBlr_a2xBF}#JjL8J$@jc>X%>0z;T6$b2M*N&b&mFycT;C6@J|3uZW+BLy z24+@8LL5}8Ud?4BMBMV{A znSHzw|B729l(SBzs1JJ`nQBoj=R4z=4=yboHFK2`A~3YF(hqWEa}!ZppN70eg*xhQ z70fG!x1i?_t*mWn*7NFA54J0X3gD)f(G_M>Lv(zg-3)L)ZIiy4d6GZ~z%8*LaBp3< z2bZt9^2RDNs{EXjJ#D&lhOb;^Lo^>|yWJ2&RRGolx8jy;HOVt7UN*&+_|1|C-tI z3j+erbChB$*hafqeQn(aa54z49jV(+OEOVc&pzoeCp?vmQb_ z`|IhH4WzU~qJzDS*v=25J=lx`{6rZ*f`{H#JkBqg7qJcBEeO25K3f`8#v{FqUd_$N>NYot7k*YOkl zl(N@wmZMh~&Re(#Kf`O}`Z?FpAq}~HL9SoYo7b`KJq$?9OYD|7_8;t!SlcBdkwMaK z({L#fljy#~!D;p(W4OkDK&EW?-+h}_G!Td_D?rKHgwpC|8tQ3nq-SMSD~mPM7GFVI zps+)GZy5(l-iLT~zQsSg+HZ~dB6s*CeuZB%j;&3E1_%nBm%m}ygS^CF**24wBi@T6 zP5n%;%fIDV=SWlZZ~xFan;43|`6}Ce-R+N*@Y$>AXzpLY+V1wV!6+K(-=;;dmrqzY zKoo>|w{sC+T!68NuPvZu5#Q9Q&>W<~<^Zt!@F?^034SzZ(S=#;tEnS7TKpRM2|A{N z{4bL9k7$c;jYe-%kzQDGQ4#E~8QPR4{0_fo+rr*S-c#RTzl-{|5IAo#y^b-- YuCqN!I@ZVd4HUy$4EEbXYAB|JLuK)l5 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class new file mode 100644 index 0000000000000000000000000000000000000000..466ddf3e0bc5d0d3a16914c8a7fab5181ea9e79c GIT binary patch literal 6465 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 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunDiagnostic.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunDiagnostic.class new file mode 100644 index 0000000000000000000000000000000000000000..872f927cea24f07efc2970bd0e8797ccbfe9ce90 GIT binary patch literal 2587 zcmbtWT~pge6g>;JWgJnA2{fi5kThv+5ioK3Et<4}B)D}*3Y5;YeG&H7D6u71l9}Ou z^k?*;nW?8UJoE?jM|FBul0i&e#-tCcyI=S0xp((m`>(%G{sizjzRO_@;~G*r(#Qzp zUs^|2rENK_%8qQfUQ-~mZaa4HKw!L7-k(4g6B=?lu0R)9b-h-_?MkO}AZ6I`kNr-& z!msO8yq;6p={cLW)pA@vup0tdUmi)%4vqy1^|P~f1J8C^rb2&9$CQHBI@0&8mQ-`o zItpqo)o`2P#8n-$YC>27v9!!4Mpy3+l~~NNt{u00@;#Yc*r|Ct}Fk^ zpLhfj0l*C%i)v*;wxt5DH5GxII&P`itZ#dE&#yHL%-(Gsckmu312^I?uvw~K zE+b|+!7$E(!Y=73!yxvdFrquZ6>f#cNnYVAh+xGyoP*Y zhe4ea*s78guX>=}{3F*5{J^ui5m`TrF9o&+A~a)-nMzk?QcI@Nk9kfV=BXmgfeNN5 zQ?^OAJlhQ09NRqG0^8D524Ck;$1@GvI-cW&z~Y(cSsntrBP&tBF+nQtV8B`6buwqR zbL75~m1yIZ6TSG}%z;d6-{_l~=AQ~C|h?gp-xblGTIzMq_kU-J(M*deE% z6YuG@={3iZUI;0D4Z8w&&SD;dGKfLLw*ogV-pZ?u0>(X7r7@~I%gV@7%w9p&&Cs$| zhL$BVw5*7sWyuRI3tVVf(r9%E*8U37);Ri=c7nEQ`~hJs_n{eg`0Dl6&`VLlduxEYu&7lnU@3 ztvX&aPVg@98@vBzt#ZOGG3#m8;*W>8zpv6Yiu(#aiPO7I8(y2Se1hfw@}Gptt$mbI*(Ky rX*^PRr0<8^G0&`hg&e)Vz$0v66OZu(PqBp>zTtX~>pR%PK8pVU@<0Mx literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunInstance.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunInstance.class new file mode 100644 index 0000000000000000000000000000000000000000..8168320ed4240d8cb3030290e4c7d4c209adba26 GIT binary patch literal 2296 zcmbVOTXWk~5dMyDa$JSjZfXdD20{zA+eUU$S{)!egHp;;X9IC%f#t8d64$#oZWACzumL;KmVTo4d5&6RFFenLqSIoC4uUZ z^~^FH%RMk2%bw@=1xjnSYlrIs`DSZx24&1>sOY!?UEsFo9~j<1y2txc#*5&2aO@a- zd#>R}uJJf>J8lqKZchs2Y~qP+1@fAXIaCD-;qw7c>fMp!-O#t)15;_$bzD_iy3*RU zeLD&|eRXh6M+2`5%>FE`F!JS|^BAVo{(RdI`3`Mzed7 z(9PD__!RQnI<8}h$cI*Nxaswo$?8RsI|}Gs9m{x+WXoS7%V8p$7lg^g_x=8n?1g6Q zM}e7L`@oF}V#@!cW^F14cC2IBkJ&ZXO@X`3?Tn|iQs?cAs?geFr4xSUy0$BKA~uZw z#M*b_+Iv0A*|U6GeW#m+@X#g=D^mqI>@Wt{=#GK0ZBoGMBN-lg{U0o!8HLg(_|c`3 zxdd-2{rTpE9*QqjN8nmB!(pa=!W+LD=}~O9&7&dah-rbXGn2mwlDc(8HzLDs>q@|3H@G%2WX%+=P zz>h0rFG|*j2rlr@u^B=JdgR>>69V zA>1ZIX4!Hq|1Cpbsa(q;i=2wQhJI)a3&PzsM29==I_II_9eQospnu^QZr~VOfwO70 zd9!BP0cS`#q%ah#=RDiKYdO0Wi9D#GAYs!7(z{3*4r?gl21C{tksrfasoEQBrQFRX zu}3wG;U;0XOs};nnv~a4@7U`SYFxtvZd0%Lx4^VLhW9-KC35^!-{TFxQvSj)TT0mD zPIX(#HR^0sL7{3nd^4bVxI1Ru4tp&crd=~#OX{&P<+m(K^GUC*qz&2NeoHhzn=Vb# z=Psd)lrHITxG(Drqsa;ql`(N~4dPD>`E3!n4gSFjlfSS(3vz3y%crY3^iBxh^IfwO zCFN!Dm;mICRl*f2FsSq!C}gmh$5Sk+c&6bwUNB6ZZy@cdZ?(A*r4U0gcSA_-sd&vWb6)cmHK?dCOkV9uLx>8-BHdesu7E-pmEHuBit-ZEnE~Bo z+@UXbN!ySQ4V?x37nnYG3{{^$#=sGo6imkMAeSkU??tY3-Y1QMLTDCB5?sLpl5+}~ zW1l4ANvtY5gbEs|rfTh>W^&+K*)Lz;%LCC=r)} lGITlzNs0y=jdd=x(c6I(r9F=Y7Ry|{{Z5kZutNJ literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOperation.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOperation.class new file mode 100644 index 0000000000000000000000000000000000000000..393d43f611d16a93b556372fdd56419e11c39280 GIT binary patch literal 1808 zcmb7E+j84f6kYO7vT~d#P8*suv^2QXPHEkQgqzb4p(;h-OKQoc9+=4}j!2bpq>f^D z;EgA~fH!^u+!@+|f$1|p!Jl-x&yh;a6dvpuYiXUeFX!xiw*Gql+n)e#qbDOJ;YJu8 zSHp*1aC+!@;^pkSv(rJ9o?%dpMnSbb3R(}n$Q}A&kcWf}Ll!v+Ggi}f^rmC!jwzv9 zpDIv|M^YH_JkqRr-!wXod7vAP)oOBShJhv0e!bP6lx7*`xKw!QMZ0iJ?ljL(OqAH^ zALSgwd9KWN&9=4IJ1|sW2GVaD<@!$mGHB(kkLmc93C zuWvG3iqm%WdWZIMVCZ#&2Y!p;3RhUW(>&0ddc9{`HW%JzC~;w)Jght1B`&5R&hZYz zHIyaDB_7bUCEWUI%JQmM!*v;DhIes8Lbg8$15d)aa;1LaK60xAH#n}g4o|%Pu%@Dl zTQb%eHt-&GPY`Z^5imp#2;;q@9@)$cc%5I0FsPFChyf*WbABUU#;_R+dZ>scxVY^HGI{^^V zlnbPh7D)3ekfv22&89$_LV+}H0%@!S(hv!xnE|wAJ{^=HOL0HLUCL(>TP5T_b&RXO zqVf!DKNFMiIX!biOOyQuzCcRYZxV73wJ5DU#m#4sxP9th_H|leu@xF<5^K>vE1~f{ zH>DemvTDB<0^p%AbCxgvAfjPw>%Wqy_mnBZw?WEh~sB$aYSUf*`kLK{P>j6hRgQ`9zED z76seYV#6iDbS<`A5$sbfFZ?bGW@xHlt50#~F|P9B#%cJgTYVV96s8?!;>@HjeDVkR zU|nX}#e+Y3K`HkMcW4(Qyw2QY)ry`l|w+*}45I=t8%Gw2CWG1$qPZvTs`Xg6a8GE;^;t z?dJm7Y@xQc?pT&l^i9Xs=3-)LqIIJeeG2+j3}8@T-f@rePRX!O4h$ohc&FZpmFLs3 z^KRMB@09KBvR`yg3<1R{`=zq)(eYNeS5*vSL?Hd#v~_FO*L~UyhMED#UEekBqriuE zRAi(BN#E6rhV<%P730!6X}GTAO35`9lekXWmT4QhYyPZDPTXB=%H{V|OiKvmC)2kL z&l_ZjZ>X5X`vP6Q6K*DOKU=s2$!f&n{z~9E6*| zobh8>x5#DfawxHAZXdj0mbJO30^Pgjk*)h>mu{^!q-Lcp`dj*mak#HrWkXxl1ZJ8* zYLyygQK~(Omt9a_G5;dH1|+RnW3y3ZZeJh~2Dz`m+;5dxp6;H0Un`Ks8!oYbZ{+$GfoRXK#wU$1C z9*!Z7QI0W=368106uwSl2fGUPRD1(Qe6r>=+ox}y82K=MkrzCy2UW)eUdK~l+OM3K zMm|)0sN08@;ms5r=ViInq6T7>5*hBXem4xS=$a+papNZImhO3RL3B2sHG{-=uWN?q zRiJL#w&4blhNs{=fg3f>7jRJUOyJtZs?1+V7`NErJJ>K&7?f8P*l+pOLHVG(WjG&{ zH^{ksiF4i`ft7ar;ytD6cjZh+rODc`(|Jap=K1Js5B4!B{&WY(VFEiMu~>QC6xk z5d1^c%KfQ!cCNagzy{;qfzR=P?^RZ0{qYSCZ~f5?4{msD>ksW0#28^n9y8&+JWF5V WD-`euTiC|8T$6|T37+D6Wc~v&nT^c= literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$Builder.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..0dacb7bdf91daad2566ae7cf4395821c6173112a GIT binary patch literal 4296 zcmcgw>r&fB6#ir`0-_Kgg+fV5XlY{{ikgr@sJVr!Nerey-G*L;y%?pkM0H`32k85> zKbUsXnLa=ts?)Q(j%+Mz#?_Dh(a|35e&0EJE*$gsKX3j5u#B@lq|l+FQ$rWJ6%4#I zE)Cr>?22AEeaT9`g6<{LHvJU^9qH-f4fLQ_MW2Qn&=mBG?SXGvdfxPCbILhWFqEFo zU;mKpML%w-7|<|?Aq9^dx1u{2%&wj?CSJVPUe(g+>Dam(*!p2$A2Khn{HgW8w93p? zpgMtn5%?Zi*$Vz04Z|F}%Xf_uO80DHCI#_b5%;U=UG>i-7C3DMW$rsA^HB4}2 zuW5U}VVC6Adm1LWcCcz(T(I({X;f^-^Uabt^Pz?*d_-rePMKLb!#gL>rD5X!j(pd& zE5h^p8q%1it>m(6_@-kk(DUuwLE-HIf%8Da45#e&4Y$I4?#`?R9iQ@x|4D&z!c~tn z%<)}n%|ovHOv60a^?0RoRt_w2KTk9);&U?V%(M;b*sQYa9&9?nsl^2Il19lw=lfg{ zlwv~ffEVTu?Z&X>i zXjlQuu4ENVML_B$Pzxd7wi?;ij^_oLc!DSyLQ!U^Kv+v;!)`651w@ok`DIXXvrGw90GK#gAl=YHKNWG9gNqF*_|F!B&2(?|i%CL8569SD~5A*Abx1oO3 z%#ffw6WVkVrEXEw3BiLX_DWq2N=Mx@q89u>rz zZJ%4+w zI!|*~xZa{QO4y1rjEmio#R*dB!amfgUPcf#MA}mTx&ZY zMld&GFnLCXm~#SizBT6K2nlz@S~6`Fh~xOrk{R9o>JQ`kz^SA7nd^4IsgCw literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class new file mode 100644 index 0000000000000000000000000000000000000000..fa79863d2ee666be78068c97bdafaa8ceff34568 GIT binary patch literal 2004 zcmbtVTT|0e5dKbSNeh7%1Qby&0@@ZNfOiXsfDX(Q)WYzfPicFm1k#+Eq|ET2e2^I# zXL#@j_@f;6B!NaLScix9oU`5icK6#$fBriC0bmhp9f+V!K~zNy?F^}X{ZQ9T-KuB> zUJ`bhp?$%y40nm4EuGm-AdZBB4i%kH8FIp|XrjigYLRpA;v6|uQ=@NTX?ESx3U#Z% zox15xZ0fZdFRvMT#S)Hdlo&e7p~q~#6|9DNPKMI0B8e1(!cAV~mdh~a!SIr4)Epkf z;m7pGSIPBK;=L+vppPN$ifz|6tO~=2bV~tTl1wg>Z!qUWdX5HE+{7(%w5L0JtD?*q zmapk(Lnd%r#SrdLaro!DZaNHw>!F6Ce^=b+B{!G($gtBIXs9UvWIwaZ5cP>j<_(K) z)v0yt9ldB0HNAOJ(#>7nHsm`HM%_Jw5?s7id8o5Dxw|LI?{!< zjUn4g41O0=`$+7oxigU$;-Fs3g}4p|DB1R5ZEZ)M}1X{;U2xn$b)9yO@c=-PWMEF#PUa=hnD69`IDaJ=#;8T_LSuKO4o}X zR9_|V&_k1b?()$9Pl8<J)>Q*$?McHC8eB8_^H;c>n+a literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult.class new file mode 100644 index 0000000000000000000000000000000000000000..35bab6cf3b047bf7056767c8349f8173847422da GIT binary patch literal 5756 zcmbVQXSY7-%|WyLNEKKz&c|R12EXl0d78Hkbw;^ZdD_ zmsReXlKgsZ($BleD|z>d%H^G)dmwK+8RZ*jS@1H-8Mbos20BM83?~BL zcIQ$pXcrb64D?lxE^=)&(TRtNPl0?Zuszp6a#owZ%dnY0(wN_`A@`58xPkq*fIeiMgqm@K?}kj)1B!u^Dalfu0*@U65y z#0i;BnK&iW%@iu_EvTFjQ08WwHE~W3-s)@nPpX%-QqIcSpot+(RnnHG8kChwCWd9D z#ddRn<)({(mt^Tl6Qi=Ualy)FRc6Sx=3Flq*lA7uWGlDSivpf9@ieaRu(`lj)`Ed; zJ>g>&XOr|cE~Yve29qY9!4!{1T<4~Noh$aw=3T9uI;z)i`=ZXU)j)z{>YMzZrB0 zw8Fx?WC7d2t&+q#4^UAOma7AGoiihDpyrfcBT(;DD;?{G2?w-jVrDs+9H%;}Ir+*Y zloDt0B#F^J!!f6=8Pt~~#L!edRf$!}JT-I7OQy;u@DT&4b!cKN5=5<7#7(jPM-5C? zCw#@5Qu?qe?bz9zDrNuTO>n_c3(5^ry;BmJA2acBd_uA(U9LN<_u_4{I{%2FJ}H6! zDFYY7fuudZW~F_`#Aoq2Mu2uCM$fw3D8>9VVb8f%koTFi2O>%HR8^+GY%QqFl;z}A z>I?z9SAnd$8D-nqRokku`FJroYeuypOck#+jc~3e8AeJ8T|@_ zBoFj5?KceaJz`+PsO_rDdA?-)NsAY+T*hA7a;7ZbmT_saA(*!r-~CnDxX6uWJGzeT z%P%F8b&RQC-pf2?`E-^*`DDClIsb=~vw)LIZ%A26}6NJ*5L|m1_MnWt+6c~I0OW-Z&%N$kyVHeSB- zt1>|O@m!4QuwSm8Sx?5M@*C!LnULVaGH1;(CR-~eHt=XwQ5CW$=_kCrpH>%b3GnuE zb#hpI(m>l~l?%p{>h9dfttE_Q9{g6@-&Fvnss3`o$v42h)~b z;o5>F;JTzidVB*Zc0k=sS2D zi2@#ywxfVe(!Q^NN2Kj4V7s(C3fL{}o&xqsyT5=wX%F5-vVddKJ+8ZtOZN%gJuTfc z1)P_5Ku=we?nT`lk?sd|ckCT~_^$`a*Gs^b>>jRprmi&QO~5`FB_ z+kxi$Xr8`<%WreefC$vY7G%v>!Z-Pq-AT4G+t_y-56RZL(AEjf-z;t@@#m`r--;pL z6eXUFCEgOt`H?8`GqJ?m@a-7R+uw?aJrzs5E0*)_DCcKmiMwNo_eF`HizV*CcVfiu zixN-A5+A}#v`N%d$D+hnV~C4!_+9co84L1w6y*6eLB27!U(LC`&L%orv3Z(QU`>VcfvGm;mnK**bo%8HfVD7y|4nxpGlIKP1pl88{pd z7os3m2&8cZ$d3pz91AiM1({hBd>5}Q;ngL4y27=SSqzxvbuh;S zGLK_y-{8#AB07Gq6FK=XJ3Oo{b6o!3q!cpu3-;t_s#FvmlX6DLi`?oz&kXxq}6(^w&Om!xThU|W&1b$9sfkv{{dmB B>AwH~ literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResultStore.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResultStore.class new file mode 100644 index 0000000000000000000000000000000000000000..b9ad974f41cae96f1ded5d36e9a052c83d2cd63c GIT binary patch literal 6208 zcmcIo`+F2u8GcW0OOh#BLJ1{Bh=tN*6Ie*0ElmJvAc7_&CJ-#%I@vu*1|~Dxnb`o| zidJp4TJQJ!rCzI|mQbixytP{E{jUFqKk@kZo->o(S+ZHOkN7;0J?G5%zVH36=R41U2i(==A<(_DWx9xXZ=|_ z&A+ab_VP}8Eboj-KW_))f$K?ugr{e|KU%fj9a2Nk8LRxxjKAUwygR zz#6m(tnlQtNy*{Pf zEe6)1orcNfX{UQ4d@526QUV;q*^=2+-6VYg=hE#>6`XbKSEmL_X zqZCdLMgxtv!@x^%n?Os(oh4*>cxwNoPuB?yEQx&yc4gF17TIjzc5I2-wrx(@457}YacK1x$h48R8`z;# zXz=8$J0}ykQ(&zpbrdk%J()gW`8n5Dteeq`T?Xz_nUl!sWv<oc}#Ja8QaSFGVNQQmG_BpHs?BYs~Rd3xSknUb24q_tn}f7 zSu0?aGg$+9COA09eT?ah^nKSGixQ%lh2doe_TxT*4uYvf!@O)=fTxW)#GLAD#sM5m zV9>zJaflifU8FwKxXe3g&I;UGLL088$Mwg)RtUVpz$-B%P!~u=*BkdFw^5VwaX;$G ztd%hXNhn7!lEA2eS7D5kPaeZ(!!rn3(rL<)UQI;tNOQE6`IJKe^+1@C^jW^Q6ew(qy!*DVGux%IT*KoB=JedQl1=&I*(kmB=Se zcoW{7z*`Kw6%Unk1K|e7fP64-+6 z_Fmr6@Mvruax~|bD;L*vF#O`hxabOk*();s)d)ne5M4Rj{lc80Z zwogGz@;Hl~+bV%u7bgwVGwhZHda98?I-6&uI;u)~r81SeaCiw!l+i0*G8eXnPFr3p ztE1eA_v~~_=>Zi>P`3BuftfkQ%SIHss|z*ws2go$Dc@Qa=~8Jguqt5% zuro~fN;YJBt=rU5^Q`TfSuHh@3nvQ|sT%sqn08!qYm4H&G~S90kv`e%qbzC~SA(xk zI)>M#We`*bvRxos&Jj1X5e$##jOk>pEVG@Lq;WUzW#pixE=j9PFW%c!>!a@6@eF>DM>Lu_Gfen?n@>C0L!B>xFUSoh- zz6tReiucNMoYmlMob#2aFn>E|d>bmvA4U_$^>_zc{dbaLjvN%9j?_hn)H6uje-Vur z&{P~IQ{5M^`g`0{i+AyF8>vB_bx2aqDztNDBi7;({Y~@2qj)!GM1mJ_snDMagLJRsmmnAJT@LzMhGRW)H^rOm>bEVLv!v3sSC=t z;{*7hM&6DO;lrdb0R5Znl>kXVtDk2) zoL7TOxLe=~_6+yvC1Tnqa0vqf-Is9~91hp;&$xh?$MGvTab&CBxb+fV%hR8m9#HPe zUdBo2>8zSM%9LRQ-^+{vU)mDbM$NV}es?g6d$Arnxw?y^yRZ*;(X~N`6j-lq3}42IPRlzD!`jl-Ip*Y=#e)*$!R>ecWJh5;Wn)oH!z~ULre0) zhwtkB=L>~GDfNB+-^pU}TiW^ucnTNw=xN5s5B2C-M$*rs(J%1JX!I+*h`*3h)xy8x J@AxOy{TIDo62$-j literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunVerdict.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunVerdict.class new file mode 100644 index 0000000000000000000000000000000000000000..350248e328d75ff9665a2d8904b5d1b9826240af GIT binary patch literal 2176 zcmb7GU31%15Ir}sCC62;WAcGR+Vau5w$fHD-=I)vQ%Vd@%e0+5geS$i6RU9~BgviV zf8eL^KxgnUlLvkPKZ@a8Nr_c#GS0)*-n-h}d(LWi?Z5vy`3u0;cv8k3=5-Vd6rl-J zUpOxvtMB-S)>GLHLRUcB@_aA8Cotb^?Jb~$1s!DrmtY8N2H~L<45WX2AZ4ud`dfS031@2rha9hP`7`TBZiO64uPM@3~Tr5fs z-IFBSc57c?x0%yt8K2bb?@#I`HLX2Vxz-7~PJhn{J$25M zg}CRD$*l|JnZ>v(<6hwYmq)zRuE-6(l+NbqbVaakW za#gvOxz@PWD;l=Tc!=+GJTmY-b_A}D`-5E+d&kmBQD;{REF7Go5qO;^?)fi+BWb0E zJC5)6Wpu3*1V_VxJ^3+nn#}R}tATtdqi*O8;vmesZ19(Rx&7Duec-p5+;8BcENxqqidM6~=pr1#mm_=k)Pjz0L&AEn8d7sKg z{^sg=xftKPI@Ni3Hs|_O*lV-F-k9pVK8te!pONhxKF1f74OU#*JExta`X%j}v}e+e j`7+V+2a7#d!dKYh|BHM02H)a7+I*)v>IZc281;VvtEj8q literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..2ca40b41b4a7cbb380bc9903a239f02f907f6b96 GIT binary patch literal 7373 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 h&;4;gn*Nu3qieWMn8pl^H>yVLe{Q>!NL~#HB literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class new file mode 100644 index 0000000000000000000000000000000000000000..4a10b592e254d457bd106477b84e45c9f866b0a8 GIT binary patch literal 14564 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 OPGglB%1ot##{Lf`tLPU1 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class new file mode 100644 index 0000000000000000000000000000000000000000..be3a9bad1e9471f3ca7b8a4b6e012d5806002c03 GIT binary patch literal 19242 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 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/ValueText.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/ValueText.class new file mode 100644 index 0000000000000000000000000000000000000000..86b0738d824664f86c747b5a0c002163f23c825b GIT binary patch literal 6957 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 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class new file mode 100644 index 0000000000000000000000000000000000000000..5c07b687a5c8a342cb42971b211f110e5929ae1f GIT binary patch literal 4670 zcmb_g`&S%S9sk^YFtAL3Zj!b!Y0?l9VF}r$t(Zy@4dhYc25L6aCe`Y&dw~hFGuxS2 zQhe37@lmx}t@Zszt=d*wl2BW#$8$W#<4^uQ9_#1M%)VelAC3X<3$z_IZPPz45bqzD>Oea>G^BKN zLKhfy+}W&CmUd}c%3$IxdL=8%zmA<SCxwzPdUb!FBlo7wSGMbkI!*)hlV4#z!ZdGd^+ zJKR!wjVzMh5dGwIFYeQDzm9jP2+M37M1k9Aaak5mn#Qc{c)nTiRJ^`Z#}Pb0bUojd zMoD02lQH3HmNCRlnjXW50`%xjjjn;viQ{;;hW98CP6*sl2ce0lz>$_-sPSpUpox;s z7{f^or*xdg8QNEu5atSxpP(xrub8f!aO{bSWeFT;jNR~9HJBRxoJJhu%Fwd{_cW4> zS%&9TDVpJ~X{;>I={TnlYV#fS?WZt_hcvuT$9d!hMmCOH-?>$&38acO2nFsXTpQt5 zhn;?VKc+N1tm6@tZVqjZT%g^P3(__H#S|{#Q4Jr^@j*P+l&l#q%sD(dXLxgCPLb)9 z>3X~!A7&65_C{A%(Ye$PrcLdN;o9V>VU8#&m8%(2mS$9X zEHSMIfYdEjUcank9t2*KmMk%U3hawKR;3S%Ls%$Ig@;Bo*aCy=Nf|Xfvrre+4rY@M zReAzO%Ehh@Px)6XNzXH8WeO!!R9#yTINCqHHix!YdbHtG)gOfJ34sS1m0Pb!w5V|R zzeNsiQQ8Kk1QH>T-8s{i6BU+N_kuBP5!!UlDHzt2;hO3_T1@zJCLuk!espdu-7~h% zNq^2MK4iE?N&3DAYA0~yR=Em1_J7mpCMI{*(-%=ZzL{8TWptYx zbYKDp*N?QOpr+@~|4)K%V%s*$C`}iQz6KNfSoE#U$Xb)}X?0_atj>35B5PdxhQnnapqF|S82yAVUy#%)8eWNhXsutu44bQTm<(-OKkf%+RO!nNo zH$S8*yuc2&-M(3pQ>JG!-<+^*#}C?ihEwQhudK??jLH>P9CtqJF=I%_Uo6XP)aFyu zo>9l~*-;qfFt>O;IMbcPPg1;7{8Y!6@s%F+`-|26bd-m?+pwhvX%4?u6u;5&bv)gJ zr^(`XDf}KUXn0Y_OR6*J4my*dzXaAa3a*WT8!Qb+!j3{HFzb3Wn9y6 zUB?Zq2=vwkn)ZS-FSEHIE@`MSV-$Eo0-Pja3lj2r|$iBFMKu^;7|Vv@LyEiZBm z8Mkp2xHDjQcer0;n82s;nP5MG&vF(ESa-y@3@!kl3)p-<5c7pd%oL9)D|$08LmRw- zt%4!ABeQ}%;AGzl2Glt82D(-&aaV&?y)`9zaTQ;rgvhF^HL+i!7=DY9*cpyWY-Vs7 zhi_n5UDa~V7=3sJ4@L_&@Lqws_|Um~>CgT+QsHk=q*#>MBk3Jmj!CI9xXc8)v8k}rIpV`eD* zp=B7)VS9Wyv4rlSvZt0-OEm3HD(clIM4LB8!eUaS%xjlNvi+4VS2BSLd#H z{7vr0qGciejV^IkBjW_Vt2XdGC{L(h`~k-w@=>B+Cfgt3$M{(=`#FAzrD*L}cs`o_ a7JtC2Jg=^xle`802|Mr_{*1q1$A1C9dP}_k literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/classes/schema/opensysml.graphqls b/editors/syson/backend/target/classes/schema/opensysml.graphqls new file mode 100644 index 0000000000..55ba67fe67 --- /dev/null +++ b/editors/syson/backend/target/classes/schema/opensysml.graphqls @@ -0,0 +1,100 @@ +extend type Mutation { + runWithOpenSysML(input: RunWithOpenSysMLInput!): RunWithOpenSysMLPayload! +} + +enum RunOperation { + INSTANTIATE + EXECUTE_ACTION + EXPLORE_ACTION + EXECUTE_STATE + EXPLORE_STATE + VERIFY_CONSTRAINT + VERIFY_REQUIREMENT + VERIFY_SATISFACTION + EVALUATE_CALC + RUN_ANALYSIS + VALIDATE_INSTANCE +} + +input RunWithOpenSysMLInput { + id: ID! + editingContextId: ID! + objectId: ID! + operation: RunOperation! + inputs: [RunInputValue!] + events: [String!] + arguments: [String!] + schedule: String + subject: String +} + +input RunInputValue { + name: String! + expression: String! +} + +union RunWithOpenSysMLPayload = ErrorPayload | RunWithOpenSysMLSuccessPayload + +type RunWithOpenSysMLSuccessPayload { + id: ID! + messages: [Message]! + result: OpenSysMLRunResult! +} + +type OpenSysMLRunResult { + modelHash: String! + operation: RunOperation! + target: String! + ok: Boolean! + verdict: String + schedule: String + finalTime: Float + outputs: [OpenSysMLNamedValue!]! + trace: [String!]! + outcomes: [OpenSysMLRunOutcome!]! + resultText: String + diagnostics: [OpenSysMLDiagnostic!]! + verdicts: [OpenSysMLVerdict!]! + instances: [OpenSysMLInstance!]! +} + +type OpenSysMLRunOutcome { + outputs: [OpenSysMLNamedValue!]! + finalState: String + trace: [String!]! + error: String + linearizations: Int! + witness: [String!]! +} + +type OpenSysMLNamedValue { + name: String! + value: String! +} + +type OpenSysMLDiagnostic { + severity: String! + message: String! + code: String! + documentName: String + line: Int + qualifiedName: String + elementId: String + siriusId: String +} + +type OpenSysMLVerdict { + subject: String! + kind: String! + holds: Boolean! + decided: Boolean! + detail: String + siriusId: String +} + +type OpenSysMLInstance { + id: Int! + type: String! + typeSiriusId: String + featureValues: [OpenSysMLNamedValue!]! +} diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000000..d5b6773770 --- /dev/null +++ b/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,35 @@ +org/openmbee/opensysml/syson/run/RunResultStore.class +org/openmbee/opensysml/syson/run/RunNamedValue.class +org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class +org/openmbee/opensysml/syson/run/RunOperation.class +org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class +org/openmbee/opensysml/syson/menu/OpenSysMLTreeItemPaletteCustomizer.class +org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class +org/openmbee/opensysml/syson/export/ExportedProject.class +org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class +org/openmbee/opensysml/syson/export/ElementSerializer.class +org/openmbee/opensysml/syson/export/ProjectTextExporter.class +org/openmbee/opensysml/syson/run/RunOutcome.class +org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class +org/openmbee/opensysml/syson/run/RunDiagnostic.class +org/openmbee/opensysml/syson/OpenSysMLProperties.class +org/openmbee/opensysml/syson/identity/ElementIndex.class +org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class +org/openmbee/opensysml/syson/run/RunWithOpenSysMLInput.class +org/openmbee/opensysml/syson/run/RunResult.class +org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class +org/openmbee/opensysml/syson/run/DiagnosticMapper$1.class +org/openmbee/opensysml/syson/export/ProjectExporter.class +org/openmbee/opensysml/syson/run/RunVerdict.class +org/openmbee/opensysml/syson/run/RunResult$Builder.class +org/openmbee/opensysml/syson/run/DiagnosticMapper.class +org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class +org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$1.class +org/openmbee/opensysml/syson/run/DiagnosticMapper$Mapped.class +org/openmbee/opensysml/syson/export/ExportedProject$1.class +org/openmbee/opensysml/syson/run/RunInstance.class +org/openmbee/opensysml/syson/run/RunWithOpenSysMLSuccessPayload.class +org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class +org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class +org/openmbee/opensysml/syson/export/SysONElementSerializer.class +org/openmbee/opensysml/syson/run/ValueText.class diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000000..7f85d125a7 --- /dev/null +++ b/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,25 @@ +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/OpenSysMLProperties.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ElementSerializer.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ExportedProject.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectExporter.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/SysONElementSerializer.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/identity/ElementIndex.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/menu/OpenSysMLTreeItemPaletteCustomizer.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/DiagnosticMapper.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunDiagnostic.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunInstance.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunNamedValue.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunOperation.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunOutcome.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResultStore.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunVerdict.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLInput.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLSuccessPayload.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/ValueText.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.java diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000000..91691dae9c --- /dev/null +++ b/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1,18 @@ +org/openmbee/opensysml/syson/MutationRunWithOpenSysMLDataFetcherTest.class +org/openmbee/opensysml/syson/ProjectTextExporterTest.class +org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class +org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class +org/openmbee/opensysml/syson/FakeElement.class +org/openmbee/opensysml/syson/RunResultStoreTest.class +org/openmbee/opensysml/syson/OpenSysMLPropertiesTest.class +org/openmbee/opensysml/syson/ServiceBinary.class +org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.class +org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class +org/openmbee/opensysml/syson/OpenSysMLAutoConfigurationTest.class +org/openmbee/opensysml/syson/ElementIndexTest.class +org/openmbee/opensysml/syson/RunWithOpenSysMLIntegrationTest.class +org/openmbee/opensysml/syson/ValueTextTest.class +org/openmbee/opensysml/syson/DiagnosticMapperTest.class +org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class +org/openmbee/opensysml/syson/FakeElement$1.class +org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.class diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000000..5aa32dce80 --- /dev/null +++ b/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1,17 @@ +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/DiagnosticMapperTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ElementIndexTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/MutationRunWithOpenSysMLDataFetcherTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLAutoConfigurationTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLPropertiesTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ProjectTextExporterTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunResultStoreTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLIntegrationTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ServiceBinary.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ValueTextTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java +/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/stubs-java/org/openmbee/opensysml/syson/FakeElement.java diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml new file mode 100644 index 0000000000..1de53effca --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml new file mode 100644 index 0000000000..8ef970d748 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml new file mode 100644 index 0000000000..e8dd9fe3df --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml new file mode 100644 index 0000000000..a577662e57 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml new file mode 100644 index 0000000000..65c8fafc77 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml new file mode 100644 index 0000000000..89923aeff1 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml new file mode 100644 index 0000000000..4af0b379bf --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml new file mode 100644 index 0000000000..5e3ac7894d --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml new file mode 100644 index 0000000000..fa5a8cc314 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml new file mode 100644 index 0000000000..41e9caf668 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml new file mode 100644 index 0000000000..79381efa3b --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml new file mode 100644 index 0000000000..ebd4687eab --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml new file mode 100644 index 0000000000..aa50f541c1 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml new file mode 100644 index 0000000000..b230d0a5dc --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml new file mode 100644 index 0000000000..34f9aab142 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt new file mode 100644 index 0000000000..a7cd71d48b --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.DiagnosticMapperTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s -- in org.openmbee.opensysml.syson.DiagnosticMapperTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt new file mode 100644 index 0000000000..64de463d3b --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.ElementIndexTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.046 s -- in org.openmbee.opensysml.syson.ElementIndexTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt new file mode 100644 index 0000000000..c054a18387 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.208 s -- in org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt new file mode 100644 index 0000000000..44301319c2 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.242 s -- in org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt new file mode 100644 index 0000000000..007b5529c9 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.OpenSysMLPropertiesTest +------------------------------------------------------------------------------- +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s -- in org.openmbee.opensysml.syson.OpenSysMLPropertiesTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt new file mode 100644 index 0000000000..515229e277 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s -- in org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt new file mode 100644 index 0000000000..cf1c5f54a8 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest +------------------------------------------------------------------------------- +Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt new file mode 100644 index 0000000000..b20e75d287 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.ProjectTextExporterTest +------------------------------------------------------------------------------- +Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.104 s -- in org.openmbee.opensysml.syson.ProjectTextExporterTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt new file mode 100644 index 0000000000..00f7970824 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.RunResultStoreTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.089 s -- in org.openmbee.opensysml.syson.RunResultStoreTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt new file mode 100644 index 0000000000..a009e25019 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.041 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt new file mode 100644 index 0000000000..9c3079671d --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest +------------------------------------------------------------------------------- +Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt new file mode 100644 index 0000000000..cb8aefd4b8 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt new file mode 100644 index 0000000000..c636d7e278 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest +------------------------------------------------------------------------------- +Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.746 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt new file mode 100644 index 0000000000..1ca5b84ec2 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.ValueTextTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s -- in org.openmbee.opensysml.syson.ValueTextTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt new file mode 100644 index 0000000000..58ad82d986 --- /dev/null +++ b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.openmbee.opensysml.syson.run.RunVerdictSummaryTest +------------------------------------------------------------------------------- +Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s -- in org.openmbee.opensysml.syson.run.RunVerdictSummaryTest diff --git a/editors/syson/backend/target/test-classes/models/broken.sysml b/editors/syson/backend/target/test-classes/models/broken.sysml new file mode 100644 index 0000000000..c4f16e3b2d --- /dev/null +++ b/editors/syson/backend/target/test-classes/models/broken.sysml @@ -0,0 +1,5 @@ +package Broken { + part def A { + this is not valid SysML; + } +} diff --git a/editors/syson/backend/target/test-classes/models/choice.sysml b/editors/syson/backend/target/test-classes/models/choice.sysml new file mode 100644 index 0000000000..72b878f9de --- /dev/null +++ b/editors/syson/backend/target/test-classes/models/choice.sysml @@ -0,0 +1,24 @@ +package test { + private import ScalarValues::*; + + action tally { + attribute passes : Integer = 0; + attribute lefts : Integer = 0; + attribute rights : Integer = 0; + + first start; + merge again; + decide pick; + action left { assign lefts := lefts + 1; assign passes := passes + 1; } + action right { assign rights := rights + 1; assign passes := passes + 1; } + done; + + succession first start then again; + succession first again then pick; + succession first pick if passes < 2 then left; + succession first pick if passes < 2 then right; + succession first pick if passes >= 2 then done; + succession first left then again; + succession first right then again; + } +} diff --git a/editors/syson/backend/target/test-classes/models/counter.sysml b/editors/syson/backend/target/test-classes/models/counter.sysml new file mode 100644 index 0000000000..51b1487612 --- /dev/null +++ b/editors/syson/backend/target/test-classes/models/counter.sysml @@ -0,0 +1,4 @@ +action def Counter { + in x : Integer; + out y : Integer; +} diff --git a/editors/syson/backend/target/test-classes/models/req.sysml b/editors/syson/backend/target/test-classes/models/req.sysml new file mode 100644 index 0000000000..3b2c1a5c1a --- /dev/null +++ b/editors/syson/backend/target/test-classes/models/req.sysml @@ -0,0 +1,7 @@ +requirement def Holding { + require constraint { 1 == 1 } +} + +requirement def Violated { + require constraint { 1 == 0 } +} diff --git a/editors/syson/backend/target/test-classes/models/vehicle.sysml b/editors/syson/backend/target/test-classes/models/vehicle.sysml new file mode 100644 index 0000000000..c44103aa9a --- /dev/null +++ b/editors/syson/backend/target/test-classes/models/vehicle.sysml @@ -0,0 +1,3 @@ +package Vehicle { + part def Car; +} diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/DiagnosticMapperTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/DiagnosticMapperTest.class new file mode 100644 index 0000000000000000000000000000000000000000..aff3810f20768121bdbe711ebc4968e554abd90d GIT binary patch literal 3451 zcmb7GX;%|h7=A7$OdKNGagExFH7biTb*q@TrGPdy0tJd<7ds@Ecp;gIGZQPVZS7v| z-rD|;_5i*GeZ&%Nx%=xCGWlO_Pp!A|NZ?BfJ^v8MF+Mh2t^S_C&P{f z?CyEP@y3v?cdLEr-}XRJ!(RcM)GVylpG#_>;oQ{Kp=GCAYN4PQWS^K!?4Z6sqBh^ zPOvg`Sn~|$8rA#JO*SYCD1AO@l{cwk2VRyA9AVG`3AIa!{!xZAZBgV8OP1~Gqu#-D z6SgH2s|&}`tDsL>+|STmw>TplN;|E$(Gp2ZDmbxG#G31hk678VOvp(}Y#zZNMJ#7! z2R#&34B!>%;3t8OQ$oN!T&hUNLS7>#2bY)LDlm`MI5h6t>+o?jj(#Rp2n6H z)-;`iP?rpA?wAVr;L-Vgk($pY9$R*7jTwL*PvP*WjMA8LrR9JVg%PEvad758beWw zXFA_)^yGhwr2W!0K3d=MK)aM$xn*?(8CDq6f#-+*$FPNLKGXSiy{sQwF zDsm0Q3v5lJbYK!w3Z|oY3o{#aS-WiNb>#g{OAWm!d&9HdjboK;^~7)a&8sfi*Pg4H zQE|_<93grevkLA+@iyL}x@-ZdufB~S>czR*grPA(O=Uw-lV!7x6Il%FX_A^JttSrH@Z?QxuypBw>1|Y-~$B@qgcX+L6ckO zd?N=#L^x9vkrbhMVe?v30Stj&>Ua}3uHU8prL8Yq3jQ!f%QZ}Q#we62_@QAdN5}Sz zF!@-S)+c+~m@5!P%UD^XFk{$4{tk#C_nsi@&a_Y2dan9)EjOqn!(J+GXNvk^%JedC zbzh-|-ddDNZ2U}@*2N?F_BRrz> zWBS#BE{{ssrCKOcgumzbZ8PYP+;O11s29!GRSVzF9?lwt{0P=&y=_S?y$~lWz42POsqH zSQSIFe<7h=)n2P&gl@y3aCimRDoC$jED?%@PFC<{A{+}ZW6Gbr1TXl4Tlwcj72^<0AH87<*}C>_ZkYED|t}Z~#weIettpFZ-SZUaCYZ;Y;%T zC^){t*W~dquHzegi!H=|oa8(~h@>3CQ+!9${dJ{yq<+9KP@ZlYC^D4&VAt_`LUmh0Bp>06ua>et82z3z_h1`0!ySP|2VPGUCHp(zwt{qdW>p-gAN=)Z0!@`LHq)SAk ze&OUJ892vK{r`415}v}%d=)Xya9XSKV=zM*$S7QN9B#tKM9lvp!>@h#|2LyP zNK8_+J=qIIR^YVQ83iiBFfQYYfiEmvMTy}|Qm05u&spa^hJwGta62D9?QA6%EJLPK z=*YHWVhmr#30!BeGY{`Cr<+AgGK{vkTav0YmDXS?wwba}#x#SqBZE+H@UC#z6wOVZ z#8D4(Avb$k`igrLcNTL7<}KWWL!pl|I#OX6_Jb8K6pg*W|AXOtIpdxiU2sMS`e1K!qI+#;$pHgO-h zE~RZ`7}|RB_&37s+?ZrNBjshvT63kF+=~Rm;Ii+M7_CVqHX>RJL4&tELhPE~=3bKr zGXBrNLA@u5u#>dmgL@?ZUgOPBVJPiL<%ZjluZ3Gx?js(E?TCAFM+!HdGIBa|veVph zB7Z~VPCRG0b+S?46+-3{Pa|3_UD1@Gr0l9n`I^TgOgt_pE;|vePNx&~q!vLkG+8EQ z-H(E{Se0>+#{Zq_&3NGH`K&1=f@LqBEpj>X&*g&>PSf%R7%t)wmP!6Ve+3LDD6Mls zRtRxOGLl0x2Vk!fl~p?9Yrw=~I;~UzKVpskfS>5LkQl$DAOnOn4q^Oa4pNR>L~++#uUHn@y4hY$fM5o{}^PwP_*MG4VHU CUhbIy literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement$1.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement$1.class new file mode 100644 index 0000000000000000000000000000000000000000..14852838ff245592bfffb0e459e38124c1ef13f1 GIT binary patch literal 1394 zcma)6TTc@~6#k|yY%g1=h=>=IYSq$K77%YK5=jG!DQGO=fw$>)C=1&ivO6{L&A;I< z@KqCymj|P-{wU+wDU_NL?QV9??3p>|eCIo7=GX6U-vK&`{W} za~KFqw0139wptXatsK`{sRzpEw%YQASXaX5O8OLa$?+Vu%rKF!?(A2P~s!pKFDU9Qsfe91mG08BZBX^g{ z*69MA$j|gx9|PAOE}FQ6%M1~@%P{uWJ{^VOaei@d zxX)XHn4*ZOrcjkG;rUaFc`A*R-!8QwL%OE8eXzj~bs`3C6PS~#9MjH_s5woKtF})z z&jyULRMd3zHm0zpFRaz0K3gUZYJGeD*St%87X4n6HQDxUvF3yo%k-SM*)TaO>nd?8 z1IKH2C^c~x_ZUpE;<^>-DLR{BIjOh)b+meq6r~d16oGmw1FDv}?s>wmxI73%fN8oO z;&fB6OeVY_XcnO_g(;F(XtsqYVkFH%@e^2~H1!$A2fgbmjl*CxE|3?X(AkG9uF)S^ zXn*0liR;K|zb00n4zUGs7r36B(uezNWaB+@dwfyrH>f> zin9#wkotlPditI=MR9^;Q6rfqok?$j@P*lAyO^>X2}6;z1|pMB43spOA*O-Ml0E{9 fkauQtnAe&G+#wmGt7H-PwI+=RB$EU*j6lyHp<-mN literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement.class new file mode 100644 index 0000000000000000000000000000000000000000..d002861e8be4e32fac4c90124b30a56721f74871 GIT binary patch literal 3984 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 GaQqJ%zk^}` literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2daaee68690a2f68e704f43907e45baa78548f8d GIT binary patch literal 853 zcma)5+invv5It@~lWZ4SQf`Gpfv2WO_?>W36^c|TP(-5i*-1x`VZ8V7-u z=i2D-Qeb(fJ*=Z4@Y=eGv@25I?CMmqmCOXZbtU@!Z!t)+V7u~Dj(Q7ZVPn( zTcY!HFRjjiJm*vE+G7$}>uE#pO0KpWs8P?1rkX3VUnP8LdluvF z2yD=&nf2uRq2jPMKR6cH{7{;p3mR&#nR?F{8&sJ0Vyj}#N*))Pl`|d4RsD*|u*0Np zOE;!BI%e=>u{fT_e&Qi+@tDRhN*+`Q+~J+%RYcA1H;6A4yvZ`cKm&JKrgH<_!xo=_ x`;0DCm!I((?b25BJ62oGueg46;Um5aV3q&$FF)y-p9hRZmTg`IhZh5T^am%5>j3}& literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..102ead0a56ced86ed306cbd72d586d3903840b81 GIT binary patch literal 4805 zcmbVPX?qjb89mn)9$8F+GXWX_VRaJQ*a(7~6d6cuV`3$;AxJTGTbhog!5&+hQD;UD zPM4&lO}eCe+H~Ldm87lg;FhNS*!ENVfBN*?nbC%g5cqkld*?3idfw&!^MBWG062wz z#L$6G1rZfn&?V5bs4we@f^N+x&dn_vIZvSLq-mMnX@SnZ{uu>Pfic^ePuL~HD$W^( zKXF&wVj;m_+e$3!1v9UECa33kCbQyBrDtku8N*pNbB2PLK%ylbr)(uIl&uSfTP}DR z&vuL$y3rYff_tR2_X-U6rSFi$NdJr^(4*o$XadntSVQ2kzVywyk8E7&50=WFSxBT! z*BgmpJ9a48sp4IDKwzJgM|WMr@fH&~%AC+kW@6M|phaAPSg@O2&}rM_A=5g&eqW;v z6eO>J3OVk=ZUuW(JSaW3Imh~W0mXDDiY0F)ihXoq&bt!B0UT6tNJTFm5*TRTh9ovu zHVb*fkp>H7y(JKu9N0S++#Bh}Bj{7muVMg)1%}#TP8>Ntq6D_4rZd^m>1=8=J3$1s z<^S4s+HMF(6eLs}#W8_L+hHC6uqwYmHx;f*W3&grx&U`&G6ly4Mq0{B4!4N3tl@f5 zyqj@+erZ0L9F-<`T*Z5Ef=iz6%p1hvWFz=9o?}|`BX=q4$n8XJhQ*X#DjE4Rrao`k zu4m>HoDw+FQrD0`{Z1552y8JN$9AF^CC2CUd=%pXf>1w+37IX<3cS9Fk_{0as(ptm zDa$kF4W}_x+yNn(jgpv@0;UAA?V+iz_=pdGBUdm>t`Vl+AQev(jG|$AOm|!HG|~#D zR7~TXz`cHwtK}Pk4*Rk|Z=-2~#83Y>AN7Oh85I|h5xB2-li!%x&fX%KF;{yaksZ4;6HY!+kP&+6KqMvruST8TB_z<3> zSPYs}ULYBYRr7%9m}QrFzgV&@nqN-C5|En6n;yez+$LbI$hx6GmsMy^;HkjxcR^(n zAMHY3g#kKMSdNSx>p6PPOL@#`a|I);F$xw0`dZrOtiEJ~D2rhp zixR_20y{P_bpK2gMP{1-Gf~(~qGo<5$VX9pghkQyEtgCr^e6}=<$2w)Xssy9EYfAG zdh>b4^om6EiiESKLEw`7{FsW5;}dkYpUrkibvG1q1uqF4mO51pZ4@s{UlrM@_yIAd zyJoH)T`|0ft14c`rzj8!pV2*CK%>t$1jcr}A{&5L1s-qIzZOZ7>xP;h?AEIKXYn}& zpI7l3z94Ymwl`=O)6M8bx=i3i`&_FY5BUi zX}j(xa)@6jTb@}oW=z+VD7Gxy^BV^4?eV!Umf6H67Rx1*NcWpESr|$DfGb-|w}IT) zN^`8zME)6pW33fw%4dGZO8O6#NS#fu;RdB{)XF~_;<u#6<*?Q$`Rhnk)xj701b~a;RrBua1?@ebpJ2{L=q=Q+~ar;^+R?pJMnkDhgIrtl@2egZ1=eTFds5kx2Wx zlc0W?`Pg<=Xz*g=*S{NMJiHX}pVX~BHLIHSB*24_7d#4Oj5kI+7INU70;h0k7kOKm{MBbdd^j7whs3AVxk9Ac{DS({v}Wn_YGsPhbzye3YK! znBjO4dwuzL26Bb+M{yqC#&@VevnJoIY9d}HeT5wUTh(M8^RwFUD$J=+{DKr;8`dnX zL=C3>RY&u*<*HK2$VSzN2C1pEK|B)Zd?nC1xrLUBZ)sBf1z+`KSG^k>$aeW8}uugy_IsS#?U-36; G82>+5*^=P^ literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ProjectTextExporterTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ProjectTextExporterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..15db73fc34e0ec5cacddc8a1916a17b55eb1c79c GIT binary patch literal 13420 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 Kjr+epp87u?O_N^$ literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..698e1798ebe1eae582628becb857f37ac3d35c89 GIT binary patch literal 1998 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 literal 0 HcmV?d00001 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class new file mode 100644 index 0000000000000000000000000000000000000000..292ae37b330aae6c3981114075d1cbf6f64be9e8 GIT binary patch literal 7704 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 literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class new file mode 100644 index 0000000000000000000000000000000000000000..cfc2d72e42401c24cfecc2b712b473cdc23bc63b GIT binary patch literal 583 zcmaix+b%>g6o&tfVKdH$k+=}2L~x-GAT9)xNF2r(5^+`AGD>H6YrDz3nhOu$p~Na- zL?&_3uBQFgT7TF7_Wtq;U>mauN&*MgwIroR=boh3P8VLLww>FIvf!o4G8FIaw@-jH1f0{*V$7+)hMKQw{Kb0bhWvxQ5krVX>zzXCR6roddI$bxRuh4%W|P`8U0So&4{ zmy$i37H$47-EgzT-b{l66Fi8h=Si7@C9M8~)~(TLhZB;<`Em2$XkTEycS=*a76m4k zd%y1+iUONFC5Fn)%R1NEIE?0f*>dYto1U$EkUo$j8|Nu^zm42l6%gp-)z99S*r)`9 mh=vWth!QHF`!Gg0uAq!jj$_P^6DBZ;sd&7CAWUNhRp0|M&#lt{ literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeDescription.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeDescription.class new file mode 100644 index 0000000000000000000000000000000000000000..8a827c17d385c62b16244d4b078df6af03879fb1 GIT binary patch literal 1970 zcmb_cT~8B16g@+?ER;fNtov&;&wad|Jw+3@*EMyCv}__*Z<= zM1s-8`0S4|-kDusTN(w!%g&uU_s%)@?7j2r_qQJamho6e3qyL}I<(B1FKqL+ zDhV)XNyO30(7GfX;jb{nveVlMw4q%`LY{RnJaN6U$xF7VRJmCdo~TvLl6z2b9q#zj zv~6q0^(mON4Mh3hbsvPFe&(}}t1d%`Ifnt1+>#19qV+NxEn z@-ST$M8y;&?M`Sqx){38uwL%$^OB!HH_|#XNnAruofg4)m7&Yy?`p#18?Liavu%dS zDCHomFdg9>x^(o_0S3jjlY|3F3}T2hek+_^hD;3q!*PpIHZfnh5u_SN*q^fpPq>h2P&R8cs5qjs>vy)A3UCQqj5 zmMnYQ@`T)nPR-vFRN?ABw7WpVQ$^kD+~0F|Uqz(rs|S5wIRXA~_0|8^e~^;tW$wRF z4cn8AwtM(f7&<6mGwfArTiU64WH2fIGF?Y4N6Arv(kFs2+SrS-Ar{pjrhCJDwF$w^20y&|u zJLpJaf280zt$E`ZNh9|ash{XQLccL{Vh$U#%Dj1mQDab3_U$7~N_sI!dPBq?^eSrT zA=qBp_hAD4L~cOQoevOB>E=)A=9Ny8Za$PZS0L&< zg)ZPeePvlDtui%kd_n&wGFlWfgc5Qg7PLSsVGgwStF%6AI~EUq*lSTEf4=_&@DYbKlu)jsQpY{4F|@A4jW7eDFU;ZWO8P0o zT32b6eqtyey_r;DFdQy}&UKPSQ5dIkK8$26QWa|c&6iPb7^pE+k~EvuP(?kLXfSLZ zIm`TU8Y_KqoL}5z_z=byrt||9CDKe(tg^)P!|N#2Qm45Y1Y#EEDmT&;kuvQ|s#Jba zdd^UFhu&%5Jz;3C3NSS6P$#L-=|lvXG|*z$9`UmgA9L5Uy#COg+9SR&3~a0(_PE3I zC<9xoha>J<1JX9I!_XY_f#rIAdupFr?g=-rN3R}nXK3}NcO?z%Gj#6yrUUL-J->K|j~Qy?FpGWp zS>-y-Wvk!i--q{Dr_lj@>@He(2r7lBgh#|11>PjyD)2V(PJwrc_X_-&c)!3;h&u&7 zAf-}1th7HR#V*QZ0qbvX!G56nwSE5<4}L9bc}8nK;6NP}H1K?3Eu!%PFNqjl(OSam Ezr@R~lK=n! literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..82f5757fe68575abee8112d4a9e41f92eef57719 GIT binary patch literal 1108 zcmcgrO>fgc5Pf4(8@Hvjh4Os>sS@Rae?WjsC?cX&D@EeKZR3obO}D$&?mD8siaQ5> z06z*bPI_sD5}!D%=EHA1^G0ue|M~d~zgE5u+PvV?9S9&6-L>rI2+HnjD);Yb_pTO zj!xEf^#5$s?_4*ubrbtC>2yJY@Z;#jvnr$W z!d_;no3YVh%DxzBdl3%LEcaIwF-CGDv!`>O-hh5xpW|r zv)n)`aVAlo;BITsUh5{dkSx-BJ#0(*p1kYN*bzU$eR;bJZx8!o_a%OS13XT1JQ4dW G&Hn;)muB?< literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class new file mode 100644 index 0000000000000000000000000000000000000000..8c2b90c610852ebdf24ef238cf64d92be0e36737 GIT binary patch literal 501 zcmaix%}zow5QV3pAov6EXRUFiF6;wAzGiT!ylJ2{-63t{g(H;I5p_s0d8=Dsw%)C=B(wv4w8TPG{Z7;WmdRt~x mQ=p(K9|usCjCY|1W!81rlYT?G6=+Jm4+lT>p`4D^H?2=UP?&=N literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class new file mode 100644 index 0000000000000000000000000000000000000000..b0e506de76f5e0dbb604b292738c3cf1849f0515 GIT binary patch literal 389 zcmb_YK}rKb5Uh!sHSr?8z@z5iJRs^tA_xmgf)AKXnxVruv&{4^`ZW(ez(+jt^0o=v&GKMf*M9xAU1%dIm z?w0F#uD|BIl3gA21PTkvSJ6Fz;l})G86}JqQMT|NEP-l#eGnWERa7A zR3KNhzcTPVf$NRdf!E|(bN;Am1Y@WaF>axXn!p_$tU0plseUM(Pz7obI$gcl*S_>4 zv-Lc;qXRcmThi%8+Ic3o7nR>r{u(i>a48BHTeOYaa~39zPpY5G$Th0-7N(6Vufm63 zWHc8n%-|x^+>qM>wG6=5Q9!TF8Y_0$!Yt+lN|8>q0xue^{}1(0Au@5^x9|b3GS0di zt}p4H6u5u3ILik9bqhDpU?JEd*JHC@p2=yZMtgm23rsiK?RMr@n%4ZPKrTt8(o()$ z8EkfB@W$|_UDsQ617*&sG8e5YVq7>&eMxDyd|mfmxPiMVBN@=+xki?MDZZHC z%L0?f(UoZleV7$##<3ZHmtX5a(3MY=NvCo^##@H_toYt@8eh~p3Zua7C%D2AngZt& z!Zs6vQjnBQ60ssM$~D0?#Z|8q@UVr>R(`_vlmj} zT{b)AZ|M!`Bp08$e$SKP)t1&9gMRa912dY`@XdB#K9XTKQ2j^;S(7Et4a2M=E%FaX zon)gQdJg*qww8Tg2C+*S7Qr4}JIMKj9Ex}*aQWn`>`am{ZgU0<@r~qAGZTornwc80 z6qU!XM5 zOZLrOT>CHkspQUn@+ExAf`~Z1yx;*mRPlL=$)PkU|1>X8roSmTM)8BZT; zJaszbnf*>=Vb@RU!yfD$zF?L^_!3`HUSPiyZYIo3c$u*BYyPjXCJ)G{G2CI<@8TZr P;~VPB)IY_yXrcZO>Z!Rc literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class new file mode 100644 index 0000000000000000000000000000000000000000..f14ed561e562d5fda91933ae60ffafaf4d34ee42 GIT binary patch literal 2908 zcmcIl-BQ~|6#mv=WP>Qi1qw7xXbLHaBue_G4^e+I9urr7Z`V91&$YOw@ z@X9@MZO`@h?M+^lL5*QxN%%r7GxW_b?BtO{-oT)VA(#x?GT66y)f0`7+o1?VGqkI+ z-jF``m0o(DyC(xzi6d^Sfb-Cmh^q9rH_JpLHf<{5*<}%`$Z*`m1l}RPKMQqG zsyE!Kdg8m@aVSCtwyQl&nV8m|h7S4hituX`Gb~b~ZkTuvHyLtD#z+_r=gZeZ-dX6T zts%^qcptY3!hstetjZc^*u6FgB^`0r#2oHW0q~!iu17iYt}9-O@yoqeysDgqT?6wB z_T?#V)se2LQd~LtEwS&rsu@szX3tf@QYubTP|FU(dY9VeQO{Pjj{Uq{Esl1$Hs2lS zB1xx2chA9a7Iql=w7$?xO*OPE0$%|^>*Aq=uMTuA|8Px}$uMy? z>T#nLx$uIk16kW}1Gml<4+zDtZ<2+cM|3_jOaF;q*8%Cgj?MSDW>JePF^s2?w+oVb zggo1nk}VRpymd~K;ZB#ZC%Gu-F2hC-_5WFigIls0RQWTZ3+BcJ&Gx=-vUJH??Y^)g zr3zKxHsT`c;d8(^H^ljGoDn0em-z=O`O^VPYLG z8E$nte9-ijsB=3`Y7(0vzt@7p@H%}i!atIS+>RC3T)*b=aJDSvVYA^}blIZ0mKav3 zc%SmH8i1bHgw#NP5MODYreMpK09f(lATD&x6P%4-ITG%yl^T@Y3R7pu%wT za#cFDm@ppF?8<=QLz?16J({U~7xkEo-ZUI(Z-LesSR|(@7|ChWwdIS*(>ja0=)*nQ z{e^S~=sjco31%&xz_9L~VA#5Mf`T>Pe}XYj`}99R_8=TK{V&J1ctFVX zZzjT|_h%whnP{bP^+hXj^@j^^1f#)|$p5?R`wr@hmw6xzaSXDrjya zq4)_#XlE(-ztb|)h1ZN#61<}{X+P^>ehc{RO6GI;oPy}+OZ3(> za@OK0KDfv}rkZP~D~B)eB>~V>vy47KA46?QHhpPIS?doNml4V)9vNk-m5;RX@YRfq z_$r~3HZEMnI4(Me;7(93;uA?b8M`c@9r)8d5lmhk!6PcKWlC8FkMT9VA5bC1*Q9kx qI##E z#gBwqF)}!g?b!KZe|dd>egS|J7{t&(xHC2vloqOTB%HEp?nG+J%4pIYwnZVQ#!6NT z5^RZ_sANIRBxI$;_}06|Oyy+h9L*h@QazE4AwuZSRen;XOuERCzbj_>Z~Ay zx5LYI*W3D@vrMtl`N(LdM^4t{ErDj_QmZOfMvH*+^wZv~KuFsBWN1S&y!WrZB7QL0 zL|R!AlXVC^`i382FF^bP2q6j{gmzG&RA|+zn~2B%uT^VixT0CcM%3&|hJVOGi0e`a z-5WEvDV?jpzJuS%dlY!vLO|H^e+8i7x!i=7w_|S&B4~Tn@zV9O4T0)Auv>@sn?J+Q M^T+(m{n~*32j_7sxc~qF literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/ErrorPayload.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/ErrorPayload.class new file mode 100644 index 0000000000000000000000000000000000000000..5b0496eb3eff8c951e178338140d71e69ed1237d GIT binary patch literal 3948 zcmb_fYgZFj6y28qL&ESDDQc_5MP+A_j;F9w z!7dd~qfg*yO-3^MvQB0jMyIAGrv!#GwOdIiupN73`u7T)i>4~%J2un8f`O=K)e5DpXSZa4sW7;Ohrio>g%W&#|gq z&(XEK!1n&I7JXa6Y>J_CG2M*kaah3%Dqh49fu0KZDmj7pf??&x3`a(^waVaRL1tew z)1B<)eVYvsZd5O($P6)thI zWUaC@J~-)bhHT|3NjX`290G}HyXa)~F+&zyNAyfSAU7>GVCg#1e!{jr*K@Q&P$_OZ z)V2n=@)+_|6hQ;^^LB2f9q&k#k0{V}PT95gmnLw_?J{!d@L(^!-8O+1{<`?rh+kXKvYzeGZZoUB^7T(NZ=q5U?kUa6 znYz0tW82q?h4gxz5cL))&alU#;#F2RTnt=ptQ)3qU9NRJ-q(~SlRUP`BIt%Zaq#mWT+=~H|rP$G9Qg<#ME3jIuSP0d7l~P6({3P(y#-i+oApN|GwDSHfFpC&E<-M1e zgid)+_20aPa_tR{>u?cqj(Pc^Z4{f-@m1JNNZ{jU}(YOzZmjsR^s5*ZnVa4z^ z$0{MowO+!DVUFXL7&>kM-Td|P7huo`r@{7JU5RFXcI8JP6hN1ykR61a~; z0;_llxPxPzBX=AAgez%m4rY literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IEditingContext.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IEditingContext.class new file mode 100644 index 0000000000000000000000000000000000000000..ffb23c041654a405ccc2fb3779df8ab8db6c2bb5 GIT binary patch literal 465 zcmbVIO-sW-5PcKdrmg+5)`S0`MR0E-h^Ja55ZXgS@h013iCfZaNH*f%^6J4K;Exg~ zK@i20m)UtUZ{F;@_m9^%0M|Hi;SerN9t#yFIxCbYbgs)ngl3b z)oDC8sa4O`MT0Qf$tNiinZ{zZ-Ko$LhKn07@RoNE^VKp~+y{iQ|IJ$4oF%RZeU>S# zOzlP{rD~%?7^oi$2+deoFCt8)v%e(VNEewY6yabx+YlOa6EPV2I#tVZzg2l4w+UCq zz6oWrk-4t$SFvFqbwRlF|93v0&|RA{57n)%c1(WRb6(xtBJk(fYr-j-Xz}YZa?pmu p?saik_j>4aXTbScjhX*a(}ob;@5Jmrx*iJ|a8m41&jlugw-6h{u9dE5(@T^?Z(P`S!Lv`p7}?lPOj*`yNIF#OzZFN@D{xLV#=Rf^)9l`=M*enP#q(e62M>_AM?Uo@|U8u?k4;bn`jx5cm!#19-=+sAR literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IInput.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IInput.class new file mode 100644 index 0000000000000000000000000000000000000000..844072c3fd27dfe321320ac0cffd12cac5257ca9 GIT binary patch literal 217 zcmaKmO$x#=5QS&zPqp2Mr%*(50CA-V0l|fMfEb685|fZLJ)8><;Gx8{?p@6Acs#!M z-k;|S0CrI3kRhzCuNXOY9up2znh213Zx9bvv$o_bbnlxEi}KWq_-i;Z5=QRx&bf3=$~l{ydx=|*Wj OrX4v&z~jFq}dlTpS~aW)nlfI}fX9U(ws z!G?w9AIEZ@f8O3-UIE|=W+fB~Ov+xP3)HlzTgue6+NDjCB1Z0IMr|9?^X1bT9am_x zTUD61oa$(MgQpXhZ zvSCWm1|tOb$g5O8*lah*m|F!i{4qr;L u4(})k!|89*ukm`W6ID2+!ub^HN?8I_#? literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IPayload.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IPayload.class new file mode 100644 index 0000000000000000000000000000000000000000..45386bbed8e2ecd001f9d14ad77d28e3225bf084 GIT binary patch literal 170 zcmXwzOA5k35JaovCn^ZyDRg5WK-`HC5ELW_7$;5WFlNFe5xklU58$E1L~v6)sNzxY z&+`RfhiQz6z&_+G)@fA>*BZ2~+4@`MODUTkgRrTTle2j^Z?YIe!lE#D!_JgBpRR@2 zh7f5+SgzK`U)471I8BrNmN2{cHdr~R6T)FwX3e{$zND6<|athizp}+g@Q*Rwqu>8o0K#yewznBz>gBA-6FbG z@Zc%Qd&!$OZ}Rs3@(KVaup59U;KpHp{&SKUCGoeN~2M`c56|plH}!`DkxKq zj84!tlwttu0;Y4-C|M|-%bSNercS^{v%HA{u4eIH<^3 zauJuhM)zd0TV>S(9okC31i!r!5GIss&P$Km0rtEa3$Gt#L z6}O$Pup42s$$fv**>|Nwat%SBTnrxx+up9NRWl|KSxRk`(XCF`#d6#zzl>N^vT*M{P z6UauOgx6+xSgMZ|_E0`!u&SoGV&N)2CyG7C-&>U}&TxBdike0&Tc}`>s)7#LaVdrM zaq&hgp!~$dH3s{XDX1Nud8Q%So)d(M;;S7=_VNiCRlKXXPc`KPLVCWv9v4S-rOGfF zr);h+JiZZjcDdSec3mPV)Me9gcN``3|HL>M>jH>zY4dU{dF6qyrqiM$t9Z zH{j^q8b1(*Y(s{s$?pk$XvN`Haa~KILhkjs++8UHKTu9L&bFV%PYlzdRqgeQIffbf z73Zc<%i?D|G*P#(jtzzj{rFVq1){@~hL~V6WOjS-46g@MCA?SiC8xU6NBqF?S}yl5 z*QI-helA;EY$3Npw()J&3o&0y6$kE;lh z`zC&2xYCdLm>5hn7|tK>N~aJ9j2qNP4KOUxx1b*aYB>enw#jy#<_2t-G^a+334B48 zef@yZxKMcuw)i*9UzhZ!viJrwm8CZ*zNWKZ7sH`e_V; zukbbfBe;m1MKeur;3my2qSkBkB*VZrG|w2w{|?O4FV=S}Qui$_Yjr;otfAd1B<+K@ z_(ZEQA~pKu1#GDz7BRSwS&1G^IMt+uGoPiJi z0LS0txNSOPu*f)m$mRBKcc0y7cklbp{civku~I?-Ll%Z@9K#61l1jE5;fFHT!qGC3 zsdjwTiB%*bqaD%NbhJozq%X9?W9hv1)*4|7Qov&)k_PvUN_P96GUIv?qZqSLv{8c1@aRANFdV0V)`eDS;)|A`2p0~E z%2$bSlD?Xg)329s9Ayg?8z(TqFh3B;Urib89JXedJp`Hf?Wo8}jSL;HDYdCjP;E}x zIE^z5Bi#2zOhI2E(~o?IXNsF?UH3MZ+W0=3y#EF-xRmFqAFV48yJpNGLaDB;KT* z4UxR#8zG%cG?mZ8Hcw<%?jH`DZAnFO547lD2LI6Y6lSs2Yp{mw!krx)jD;?F#NjKY zj5Z06*M!+tfv(^V!|6W%Id1Eg_qHe`Xrnt?`#B|QsA4}>@t)(dFe+!qrOp= z@hXpkQ0Qw-r9P!`eX!)YlLLnDc4LuO|M$xb@@U)sboDCG_w4d8Y)K=iy7ucR5{Vmf zt%bJW(kKsba#(s6Jci3ht5U5pF6aR+;1X!o>6^qfX6S#F9)kj|p)kz4Z!}2^*D*(H zmG&!i$LK#fzX!(f71kcc8TN4!*u&WZzVys%v=&Jf^pu@L8S}KWGeg|KO_GLii`D`b Z;PmgF(%Eg?#bYedNs+W)VHpif{sKKK*y#WO literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/events/ICause.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/events/ICause.class new file mode 100644 index 0000000000000000000000000000000000000000..8c1985333f3042b1a771cba1f92bacbdb780c165 GIT binary patch literal 384 zcmb7A%TB{E5S$Gm=>urhuK@Az2OusKAytat0OjsDR&nLVl^s{&uQ+qy1NbP!I^_p? znc1E3?rQw=`}Gar4$~4D;nMk)(8`)^&>|RbVi3x0wyxD}7lhvRw3y2nbcviWUCW&m zR<t0faiFcM+O%RWKHzoBExGhsB>vM z$`2(ERiK(7x4k{zbET_8UJr!d_~>xqE57zpXi<^cZph%h(v6Ce&i1P31>4FMT80e0 zb*Wb!5z^<-%&fI5J_+s!x6WI}vVmTPwX+in*Y&i}%5y^=`hlX$Z48@D8SE!8z=@|M6&Wq!C42v^ekdh!fsd?vCIS&JaCN81Kkk$LXWEehCTUAFWTYkeP zE=PVnI}tTGjN*!ct0u;9jbXf9M@R(j3EoX#-cFMFDv35ulE5EZX04R41ndTG8W=Y* zfk}pe7EMj99B!#lGi1CShC9h*Z?|@(t;;bt$F9`B+YEypnveVpOfig|LXl__X@UCC zU2U<=VkZGHyy|Te!v#yZa-+GoC4-vSa>!D&JX<*LM4+N`Y|QG0BCT20*_vu&JCBIV z47rXF7~Z7B?)awal|oOZc8g);WTm9IxZ2GWDF0LDa;;WgAwd0AE$k2L!jE(GRaKpS z=4L>YFLgC&ITd~sb8WfyEFsibO)K4|)6o*5Y2(XPy=Gv`ii$Kal{SGEB5l%8%itDB z(=_lHJ$ErpmKi#Ij%FY2rMW{e(vMs#5_uLD$wtC4-1rcnkMWRIOV+Gy2ofOk=Fy-AGR!+ aKNvM&Y#0>p5m_==r1$7+36EQrC;tFjt*-h2 literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..0b1668dc43ae37d34a1a2750817569b274167268 GIT binary patch literal 577 zcmcJMO-=(b427M6wzN>-1gv304lux`fK;g?ih2Rkj5U*Lngqu|^c>uV1qa|z6&Zen zSWvNH5k<*+dj4#`uAg53;2aKmkO>$$swC>h_<%APGBHT)mfl&k9Arhx*Y}N7-pKJ) zY1r6ml&#C+X4<3>Osjy*-GBb7pPglu>7>#Mx>R1yW`2XX~vYY^2z4< z+7W&fA6p+eKba6J&5jaeQhb~@CL{z|IP3C6Q6Sf@oGMaFWTcS3@CWv|6wonkn1KGw zR90~$6!7%VaA$w+bgEX3Q)Pb9_VYEuBC=xRtboDHMbda}nnZo{>rzhJQFjFh*h=dL h$kL8F(1i?o>DA9*r@hh{v?A;#d2fT9a)$55{WlKWun+(M literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..878d9c8ef13f054f362952159cf9716ea47ceab1 GIT binary patch literal 1962 zcmchY&2AGh5XWaileDFj@>Ra?aKVS3$}YViDpg9=N{PhT-I~P3wT;(?_QX4J) zG&})fyh#WxiAffOR@Q3$-efPdiTV!W&13q}XtzWH}Iy#b6n+>K)V^ z5Vrq>JZ?%(D1Oc+rUV{pfzNU{!B77&YI*xcoB!7GVlY~8%?1{&>r~jkYhZN=5LUY; zxI*koMGbuOw_E91EV~v0!WFvb09tfOHK7F!Xw%n91D4~9#wv{lTqSu8uFaCyNxlvn nBe_W@{nPRWNjKrvH0d@;cVKgxbeE)iaDP_32gLob0((3l0X&r0;zHaEGtBTY zulM5#V2g2zgs^tLWXX-LgK*GZH-U3^t(_Gc1J}w(jKW29d^mr@&PIPv(I-qRbyIAV zE%|h*B#(qd7lip@dHhvb^xBpi!X$Hz&t5Ui}OamOdJ->~S#K6>zRQxFCe$Nhk8HVnPQWJr1hf6ap*;75s>74fhq z4-G|iRW;S0U+*6Pu5qL>QlOYxa@KQ~9c513XR`67i@^oS)EVzY94#f%{d0_7V_V^P zWnK+=6Iyy$teh2%9fga3L_PlG-Udl;3S(~;&MQn$&+5PEMiPhiQbDtgVg6Jrocs!U zVNW$@DeFnYZ7|X&r!d7lSyW?Y^$DqS^pF?61w PD(v3CV!xn+H9GtTI;~w! literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette$Builder.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..6aa02d9a8fd955b94f5454673d96c938dbf6db9c GIT binary patch literal 1809 zcmbtUTTc@~6#k|c7V7pw>k z(q1%nx#2PNEelI{D-7|u@^%XS7*LQ>aRDmBU=Z$m!VJS*hK$4C_`>0J+p7Df$uK)t zi)O8sPrDRkPT+5Pj<8w-$YD@HUd2TWF+8xHmc|WJv|X;b!V$i!8TMY=wz%cFT3a`{ z=W(s++1f^DJ^k1hW|KP%G0|kmcL8@0stQJk^|6wga6Jh-rlNpL#EIk>uOAr(cik=9 zHc4ZylO+%?!>clWTt!L7XF?WFEK`Z>%YKk;_z$`y@5HLzB+A*Euz20yYj9^v zZo2;?An6yDq0udx2D|5I%usG%g!YXhi!qb~E7*ey=E7(rFP|*TKsgxLyo@rWzcm;BG zU2*!gKQiclhH`J+uQqg_q)}u{`vR#6@V}BG=(9=6vR~w zBf*e)ra#v;Q@8fC$GmAfErvwJuncdRAyz0hQb=M%K}y9Xs0`Ua-S-Sr+uVJ|o1V*% zcKDCJ;qba`)qT@sxLK&3qK0ba;#tuM(il^aQISQCVbON>G~P6gw#zlwa17ton)YGa zwz%cFT3a`{=W(s&+1ge(W*9Qa-&_QG+j9(SuPmT1tC+wQijbUZ9^7j-x$ExOwn-jm z!W}^vHN*7+{dZJM3H`LRv}O?&cNM(LaCczeW>vUuBqx@*+JgHga?> zAE>yFX@;a{hjNC8h1$SIyI7V61pKUu8@NgE`?|ZoYPUGUoeRNN1zJHx5hcnKI(A*q zxqcC>$f0#osZZDY^UJ>MZ0S9?yWG5{e}anj}GGQ*>{L6M0jQsG5_cDv6J_82Jl z&WjC(c*y!#&9HdgKiuWcj=pPBkhz-O)Xj$O7-BAkac|!sUY7<4Sb9nUU+G4C(e9vT zHn_KMx3+XgKja>F$ilDxAI?Qs?_ppdh#txXc`1wkB*hGyeOxXMPE_anB*HEiqQyym zHbM2P_I$IEL}hk&;gL%u?4X@i7lySn!htwBN#>2W!|CCcnBBI0r^z1}A{AA+d`lE> zhD&wsdK+BiDrHKd(;YG^w(Yr|qqoC!a+7$-Fm1HTy>+(S4$HJGq+<-DbdS?LIhH^z zg$>jdY^vD8Hw@QKTZZFXo^i-!hmmHeHtcpRGrWvufnhzj54aX8uIpCIyzGb*^8vQxZD0sqf^?X%2sxWjcQWG4adL2VfbXXeYL`MX}9F2!CPjl*cC-Vhr z^^7{zE!v@x#xJB3r}s?hPq4Yapgfruj|K54%^hL1G=GHg(!voYUy@o3AJH?91U>2h zLi{(-l|~BVG@qvbhecW`g^>6dOEe?!z%>?(gmc2-nZT_WKA~|(GC}Tk))vUtZCV?R zA^S5hLH88hVN`d>=%@IMltm0nq$O#qr+nG#Ls!O#}<+z$-OWk~9hIVfxph zSC;znU0M`ai}V&)O6eHafL^3T1WA$cWvTCe-e>y^@EajT9qGTlh_Z~NLT^DpvNU&$ z4_~)Gq$_zsZxR*y>0<$16jFr%L|~neG@6N!hD(27^t^zEB_b6>EK84~o5$Z|b9g{s zlEtaMAd_zn@)hOjy@0_LtkOG9pn2S<(JY;KnC;!U-ks@dq?w^Tj|eA?2UtfHU*j=J Sa}-^kWZUHA4jT9lQ~v?2*3A+C literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/Message.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/Message.class new file mode 100644 index 0000000000000000000000000000000000000000..46ca5c5eb61852fe0bba92ea12833c343d6496ae GIT binary patch literal 1947 zcmbtU+foxj5IqwUHi-)%;UaheQPdES6%|o}cmXXb1KudC(x*)_6;_v>IJ2ROH$TV+ zt&-B>!4L4GEPHkrSOhI9KI~4k>ZYf7PEoIfjMpJm)^OYreQ*uS3 z?K{F#)-qShZg7TVRn)f_3Ne6JzI41sSp)Q%=tDn4%H^A!VwLNyQnpJqtF-Gc zmgU{bzF~L~uXx0yy_|%J9$TZjhRkyn$KxxljVhO`cGaa^6e^--yKA;|^gcRF`s)ty znrRQUOpUP2{dG})ZcBTE`&^Q<-eUaKMzn&qSYqglQ;wyAiGy!3x?-3oZ~yW37_zTK zOV;>fM<>CI-v6ZTG%DS#x$Ag9w`SckYnhiuP4`mJ6X)4Y+%l$ z!9e{!yx+C5<@wGAkD5Gk#gM7)dT00&Pk`fXiuatFQs?lA?bThbMk_+RZ#B!YC$sxB z_JJb9)vYF9fqtO3_G(}*c^;R6ORfw&V7PQBl%qHp zSYR0Xw<;AOB#bGVI|=H#1PXezkyOw_h}I6!B*I0y8KqrAk78N}OW(l8zr%Pvp?{_E zZFH6%vXk!VK=wS(f1L;~^F?_#2`3-xUA= literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/MessageLevel.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/MessageLevel.class new file mode 100644 index 0000000000000000000000000000000000000000..7e9aa499c3e717bca6188f2fb4a508668c8a258a GIT binary patch literal 1408 zcmbtU?@!ZU5PsgZ`)Ma*{7@z+;*<@PIt4{G5V8zIGB&cx%;KjqUPnpSlD6Zsf0B+w zh(^O_|0v_V-HapZ7q_In-o1CvJ$LWjzW@0A4Zu3q!w4{}*-lI4P187Wx#}8@(Q(zL z-9E7`Zh5Zi@Dqo-^r?G>ZMo_$cU`^3%lwp^Q835~f(S8$wf$nTq-hL=^8X{|1!P1) zR6xo*mF=o9TvMR`c`?rL`>G-4nrk| z2~37Drr-u{Qlh3wEnyhXWXs3;sjiy3)l#bm$Gqv~V@Tmv7}E-7aGS{eb|_h$HgP)D z%?_`=V_3-yL>Eonb@KxT&2tQ^l^@I?0DSye1$QyW5Goj!;cYNX4np-Kce3>ef-!2x zYy{B=ln6$ImQ}ETMbR9eiOcXZlO3u(MC2EgT(l3VGb3fg;+0POfIF}C1CuO!e_@y% z=1v%rWxJ`Hb=@&Uihds1(%Y0S`DZ5?61&_xvJdxkhkQKlQ0cOFWRQrZIrTQ(i;edb z+c`8W-DHSrM$6K@jzhRoCR?YmEYOnlI$s$`B<^RZk>AJ@70vEAO}=f2u8j`v*pe8f z%^Y1}ik3FGIVIK&AW1voOIi(I(mDW%lvo1cN#_r-NO6xynDb0jwl|XY@SxLskPv-#?egclZL~Q^7 literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/Tree.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/Tree.class new file mode 100644 index 0000000000000000000000000000000000000000..240251d2f78703d9b7777eae0e84efd5facefba5 GIT binary patch literal 593 zcmb7>OH0E*5Xb-9rmxsqt@Zf@OnWd0-der*03p~zYr$iZE^$kmgx!t!%?b*7_d|)Z zTC89Xx(hQqv$MZ>?A!a(3xHD`*eIY_fmKHdWrmHZ|KPi^pG58;nDS6Fl=~tP`i!CI zbjB4_84j00w~5NLER~v11{s&W7HM+%81l>rSrf>1$C36!LaRk%lAVqMH2N4 zxXIw8GIDtsi%fA>2`O^rhUqLz6P{@0YRS2BMEiVoI zc%uO|#`r}MjDniO4Ma1~1N*{g}PhiNWDekDvDHB;x2 z=@iFUrzx9NBu#S$JtwPAHY2^>or682a@VTOvGz)y0yasSzX2@TCA8>N|BA*I+GNor gv9lnZEJ*eWipd7leh}<$!tOr^jg^EwVi&Og0qdrDy8r+H literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/TreeItem.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/TreeItem.class new file mode 100644 index 0000000000000000000000000000000000000000..f3860fc2725df402989bcb6c0cedaf17923643d6 GIT binary patch literal 596 zcmb7>TTj9;6vzLC!C-Px#OoIjjA1eH4fMrmLR{nlB=K<@%`Aa#={n;#Bhf_P{ZPi! zh?hiOXp?j6>F=DLzJENw0yxK^gBSkAhqK!dExS2niMB#(xP f-6iR4NpeR2jS68BC$+kL&P3rs0}(@DU71D*(exHO4Ez0f(?51bs` zooS}?{q*}dyuAas!7xEXVB~xuDKq*xkPQ3aY+XwuXNF3$Rf3klV5?q~G|Coox!zL7 z)3(6)7)s@aX`ClHyLUO62p8xVRNbeQ=EOhpQFzR&W&pW7oR+;U>X1b literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..c90f182e6013ba68a413269a30c43aa2b6ab10d2 GIT binary patch literal 375 zcmbV|zfQw25XL{JX#*ip#LC159q@pd_#>eRroaN~?xqJZa_q=NK$*xx$`9ZsExcVosDGU z#Zq;VyujpCTOH2@M*9cz3~K^Mzn_Qa;H+e}M(VaR@|xNO`OxUDRCPl?|D>f`lEAdm zmTvl?=1wgPJ3E!Dm6Ychi9mkqdSBC(9vbZaJ<{Q$dQ#X!#>*Lw m;NbNz*ICJL4UA{65HD;b$eF`6o7i9$tGvJ_D}gO$g6S9AHDI^^ literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class new file mode 100644 index 0000000000000000000000000000000000000000..f879d11fbab807ae01d465b892ed7d97dd29209f GIT binary patch literal 1434 zcmcgs-%k@k5dO9;v^@%xD)<8t@CUSDyaykPybw%`1x!vczPY_FWpVGW?(HGa$-X&6t-6-5mlww$^HvaZn zuMMm6m||G{ZTT{clTIhnMzr=iLUSXdaQnm;9lI!?%#e#s(sVG1iba2gVfN2Rp3yRF z*K7NE%rZQUblVlalATz%aW{@aD+A>Q!tfw!3FXE@A4^}vt`R3D;mY;8@lIn~i9m$L z6Iya5KM2jBs*O>-_1zG%y_85??`0y*;XxAmmYus55&1x9LQgce2p+?9Lxy5E37SH` z;7vuEN+a^Q+UJCf_GikRIh1q@&qjtgM7Yk7k9uGk8YBC?fO=Xi_KN#_85S;02gBST z=WeIZ`^{wsH%38iuOxOo!%Y&`Hz^C{9bpcm)^n~oRgKV;=AtLtAsJ}8j*tJXEdB)@ zTUmuxu!<`Ew;{%8=Fx|tmL6UE1&%7DC;$Ke literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..f98b4b18c9c80a8b777cdaea22b50e8308431d54 GIT binary patch literal 2031 zcmcJQT~8B16o%g^EemCV0`gt4AYfaR_1g>lNI(pjQj8@Sx!blAI%K+AXSYQBHU0!m zAQ(-I*ZwHunQet)sTWPX*gZSjv(Gv6o-?OEe|`N9;0Yc@5ki-Nu!#t|8Da0Xq z*|)ay2fW}jbUzl3@SietB~!am^q|*3)I=XlhM~Z{>I+$S_ZS8ge^(WXXI&>-m6BmG znfaT#l4^csVBkXhoUeql--{TA3=EqX!4-zruG+VFL5hmUE$_&49epoLtIU17>=wDS zJgyE!fqRzE-}_ZtTDc={E0g0&*iw8T!*jf1E8BNzJ=~C7 zEsGVM#+Zq5okO2+irn#SO))UZu+c_RS~Jhu%-UuCoGb3R@{lVXW!gj>S4l?a!cPn@ zGo1<(?B<$@1ZEjV9L|gDUcs*LwGt^%@UI$f463ms>Iye& z-nsqmrFI#@Yt$YLgBdDzwpz|}wPWWcy&2B91zYag)F8C3zYO~&LCw6=P7*B?_|tGJ z45dp1Nd2Esu`TYG+~O-LEu9grXj31P?S#6tW9cAwu0Er*Rk2cY# zi5_o3*ZV)Cj|cQPmMMwLa-TTCR1-Zx^w}14t?C&)9?%mcXN~@htlqqlo<6}$6L&!m zwg#?orir1)>^V0PaBow2Yvo!E3I|Ml!`$2SG0A<5QM#t+nmNV%x%j%kAnbVsC+b1E ZaF>1w;U4Y>b`B57M#(=$L-!#je**?Q5fcCa literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class new file mode 100644 index 0000000000000000000000000000000000000000..5c523127d16d668e2e6b29db722b3d36cd2699d7 GIT binary patch literal 2603 zcmb_e+fv(B6kP{w%NTL736xNpv?)n#15wj^Ynrx@o2fA=&d?e9QemF~C9>p7GE@50 zKj@G2p_wVu4iEi+epDyxNHWNcVHk#obJgB^t-a4a`{>{Qj{gDhB^o&lVOT>-M;aM{ z$>-*QY1pQ-XKcx)>$L^D6y6e=twk>d{SUa^EiB(FkZ;fCa6B;IUi$bP1|T3`Wv-|^eof1ezBar%}!vs4mpk4mLnUoV|r%bdIE(6 zd?WBET2b)VbWAJkQOjvbCoq+^+J8gGEUwcv$85_7(v!YxA4u9+uU&$r3YTwG>wUID z{5N&X<1K+HN6OYiziD>l+CDiq0|h2_3Ouu$I^M=R0@=Wgm<#+^ybO&qg4K64acmUs zyE+zdo4EU?zrV)#3v6C3ZdJj&r=y4xvyMq*+B`b*NEBMi_xfEbij+cxESxte?f#0xNyxr;?~H zmHvuS8F29@Siab%*k;(~CNg-G!(%+rP}Q-HZv}3i)>p6V1Xf$d_alR-IGIAaFSoMckj#4P7=ZLd{ zdK$u!PeC}cRCCNi@aZg5dXcN&IHoz4%6~yD{tfN>CDkpfuDp1JvGURprpn7lm?=-E zjxhIVB^K5xOBKOE#aaN-;qm_?w1Nei}h*2im4$<{^9--&?7JR^+|Eu2u ze!q}<5g!snsjqNU)U)NqW867Qe^z6k zu|<})fyz@CQ=Y{q#8d7hk!LQZJdaNYD9@c2$R6!9J|pH3KF1dvQ#4cIPo2so9(kCq rQPM^!8zt<0elJk+A@gkp3)f!(&?rP@oK!?8LY1nO#xvuY-^{G%*YEE?0ldPK91S!xv^rS9s=& z>Pu~Pd@a!I?F=)t1)eQ}KHE@NmGhCthZT7hwX?gY1yxCDBNu3eSdVgK=%f`Qm;4A;)tYG6TV&j?TFQJ51r9`|s6M$Pen UwFVw?-dcm*U`HzQXa;)x2k3s}rvLx| literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class new file mode 100644 index 0000000000000000000000000000000000000000..46fb4b551c40bf01195908c77bbac230cac2a382 GIT binary patch literal 339 zcmah_%Sr?>5Uh;4qpJr6KSD3&0~T*83hM(FyvIy2W=STJ^bGoI9{d15N=y(G1o6_{ zMR!+q_4~)`8-P>nwP+MBW9l`ncTbr*zvMX77`zS?6JkfNGt=ZOvlc$fXuKZ9`K+&Q zOyC(4bMzBai%o_7wV90eX6W_p!R9ANt?vIv#$)0-#4zl=n;CT6?wUXq9 zeo^$VDUY$cGpXnZQ&wpC#aJpEhiXA#zKUbAyl}o8bNI{1N#&g>C~TBJ0jl`g!mQx7 Qpq&QWHPr^@B{tao1Q9}JY5)KL literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class new file mode 100644 index 0000000000000000000000000000000000000000..44261eb9ba2130b437e319221a8188317f4b72e1 GIT binary patch literal 1444 zcmb_bT~8BH5IwiM?Y8SyYWYwQ6tPMR%31|QTL=h+kkr<+QquUelxtbC-J0EPBX9mB zEr}S7hG&12aqhOn67|V8**iURXU=@wnIAvDd!JkxUZGH-Lo^o}E7kTnDmVhC>Lp6_lmY~=r& zHY0e$8X|&M-YIMqh2oM1O(>MT^-^J{uq||#H4OQ|bEQ(TBs5nv#4$`(iOPC@H&rRhy4Xt9H9<6;*9lC(R%q?Pd{tqBmD5X&Jf>HZ$($?ra)8It0sb`bl7 zku!{bAjGghXUM;k$bJes0>1qsN#UW!+1zK0pMeSczyS z4KF00EKO3PD`jqe@)S2e(%*kEDOeO$_)L)imSVtT`kweM%Q00SZ<5p(cu~FIE}GQ!Mu=YCVd~S7M0YmQIm4f#icbvJVs=+zt9b q^}%e&2hq<+o**WQ=>{01mV*eRBqykdS%_jJDz%&aGi2yKfb1`$a8hjm literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class new file mode 100644 index 0000000000000000000000000000000000000000..005716c446f1045fae3bcb060aa883cace008a2b GIT binary patch literal 2736 zcmb_d>vq#d5dPLUk?klrak!LT0&TfC4n+;UQm4=)PJ&y<0q4T4f7bS53uMV%t<&Za zc$fYtJ>}37&gld6p?W$i$wVzSha~)vb~T!vZ)U!k*}wnU`wPIg_%VY7ju}Xr7{MsR z#3R1LEr+`;t0o$rY%+|_+pevyGaSp$Y^RYz+Cav{7)*v6o@`m7;n-bYSpKf>x%%C4 ztd3B;<28k2`9kj44dGi#{Gxi?v3kmOd}~8-)$(|E_g858f~J%-Z( zwvOIf3msbVWQQxt?89htE&r;64`QPA`XkX$#hI8W3L``DexSLVX1JSw3kiG`LX)1u zITIi1M2#%hYU?#E`PjsHElHNEE9+Wt(Zr=drL?@bwVI>)nlVwpERn3d&|ikFqc|DV z%%C)Auun`}fkj|#?zfky_83ZU0j#WT&zZQ2&xkSc6O}NP?e@_v$1>gL_daDa^gLU! zT~Y0I>OyYvx)ao}*Wk`Jm$v?ngh|!5$(w~E5Fh50I)6>5w%5GHC8y>UlFS-EbLmpE zFtp#aKo8$WeLvD%wt5}mDso_IKod|23MoBFsj}UN9(^`Ny+=Nt$Peg`U}}{aPR0X> zrJIp~_;iSVF)Wj{!w1tJM+}(_uO}N~#nv2-g;Vc}o(NP-{Rum<=y}Rll6ON6{1hrg zNPjXGqdAr(M(7#Oj^b7Zw^1{&VPX?o3}^S}o9wyD?g%T4Br?d5uJ3uF##aH;6zUWY3TK~@m z#uK|g*lh5>vu3?O?jfbWI@To?v0br66_y15o8bDHfrS~Xop zVGnuW|EUjIHba$&-;`eicikrP1eU)fJE`%qt`j{XorC#Wu-w%iX~}JiwWM0dQG_%K!iX literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/util/ElementUtil.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/util/ElementUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..5c7fbe69c701290a0f0173027f6b8f43d7b33220 GIT binary patch literal 815 zcmb7?-)j>=5XZlpq|NnA+ZbE5{;E~MM8pH>TdJTTqIj{Avw`?h_L4Q-y0>@i?TP)% z3JUt}A0^JFsg2YJeb{AY`0RIPcIL;=FW&$>!95=(l&h%Juz*E|`XT?s1I6_u*o_ax z$TBSMNGr(V=wqhdCGywj{L4g?-0~4|m53db$pTg$9D{vD zb=X)s#)a=QCBQ8#u!IU(*T|}!(728p)A&u?BEl(c&y@VXsJLvDV@|=xCT>$~i_QWg M2ZY?AyM(*H0I`$GMF0Q* literal 0 HcmV?d00001 diff --git a/editors/syson/syson-api-stubs/target/maven-archiver/pom.properties b/editors/syson/syson-api-stubs/target/maven-archiver/pom.properties new file mode 100644 index 0000000000..3bd29c35d8 --- /dev/null +++ b/editors/syson/syson-api-stubs/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Mon Sep 21 02:32:09 UTC 2026 +artifactId=opensysml-syson-api-stubs +groupId=org.openmbee +version=0.1.0-SNAPSHOT diff --git a/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000000..5fa2ec8ac8 --- /dev/null +++ b/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,41 @@ +org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class +org/eclipse/sirius/components/collaborative/api/ChangeKind.class +org/eclipse/sirius/components/collaborative/trees/palette/api/ITreeItemPaletteCustomizer.class +org/eclipse/sirius/components/core/api/IPayload.class +org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class +org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class +org/eclipse/sirius/components/trees/description/TreeDescription.class +org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class +org/eclipse/sirius/components/core/api/ErrorPayload.class +org/eclipse/sirius/components/graphql/api/IDataFetcherWithFieldCoordinates.class +org/eclipse/sirius/components/trees/TreeItem.class +org/eclipse/sirius/components/palette/dto/Palette.class +org/eclipse/sirius/components/palette/dto/ITool.class +org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class +org/eclipse/sirius/components/core/api/IValidationService.class +org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class +org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class +org/eclipse/syson/sysml/Element.class +org/eclipse/sirius/components/core/api/SuccessPayload.class +org/eclipse/sirius/components/events/ICause.class +org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class +org/eclipse/syson/sysml/metamodel/util/ElementUtil.class +org/eclipse/sirius/components/representations/MessageLevel.class +org/eclipse/sirius/components/palette/dto/Palette$Builder.class +org/eclipse/sirius/components/core/api/IObjectSearchService.class +org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class +org/eclipse/sirius/components/core/api/IInput.class +org/eclipse/sirius/components/emf/services/api/IEMFEditingContext.class +org/eclipse/sirius/components/core/api/IIdentityService.class +org/eclipse/sirius/components/trees/Tree.class +org/eclipse/sirius/components/collaborative/dto/KeyBinding.class +org/eclipse/sirius/components/core/api/IEditingContext.class +org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class +org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class +org/eclipse/sirius/components/representations/Message.class +org/eclipse/sirius/components/palette/dto/IPaletteEntry.class +org/eclipse/syson/sysml/metamodel/services/textual/utils/FileNameDeresolver.class +org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class +org/eclipse/sirius/components/collaborative/api/ChangeDescription.class +org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class +org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class diff --git a/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000000..0627ae43f3 --- /dev/null +++ b/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,39 @@ +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/ChangeDescription.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/ChangeKind.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/dto/KeyBinding.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/trees/palette/api/ITreeItemPaletteCustomizer.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/ErrorPayload.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IEditingContext.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IIdentityService.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IInput.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IObjectSearchService.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IPayload.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IValidationService.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/SuccessPayload.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/emf/services/api/IEMFEditingContext.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/events/ICause.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/graphql/api/IDataFetcherWithFieldCoordinates.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/palette/dto/IPaletteEntry.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/palette/dto/ITool.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/palette/dto/Palette.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/representations/Message.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/representations/MessageLevel.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/trees/Tree.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/trees/TreeItem.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/trees/description/TreeDescription.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/Element.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/FileNameDeresolver.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.java +/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/util/ElementUtil.java diff --git a/editors/syson/syson-api-stubs/target/opensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar b/editors/syson/syson-api-stubs/target/opensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..0de001cd128b3dd7fd8c2280d113d319a7c4cc67 GIT binary patch literal 36799 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 z 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 literal 0 HcmV?d00001 diff --git a/internal/translate/migrate/activity.go b/internal/translate/migrate/activity.go index 3c84fcadee..cdcf36af5d 100644 --- a/internal/translate/migrate/activity.go +++ b/internal/translate/migrate/activity.go @@ -351,55 +351,83 @@ func (a *activity) write() { // An object flow into an action control flows also reach carries a value only, as // does one into a control or buffer node whose every outgoing edge does. func (a *activity) link() { - controlled := map[*sysmlv1.Element]bool{} - control := map[[2]*sysmlv1.Element]bool{} - outs := map[*sysmlv1.Element][]*sysmlv1.Element{} + controlled, control, outs := a.controlIndex() for _, e := range a.edges { src, tgt := a.m.model.Ref(e, "source"), a.m.model.Ref(e, "target") - if e.Type == "ControlFlow" && src != nil && tgt != nil { - controlled[tgt] = true - control[[2]*sysmlv1.Element{ownerNode(src), ownerNode(tgt)}] = true + if src == nil || tgt == nil || nodeKind(tgt) != nodePin || !controlled[tgt.Parent] { + continue } - if src != nil && tgt != nil { - outs[src] = append(outs[src], e) + if from := ownerNode(src); nodeKind(from) != nodeParam && from != tgt.Parent { + a.dataOnly[e] = true } } + a.propagateData(controlled, outs) + for _, n := range a.nodes { + if nodeKind(n) == nodeControl && len(outs[n]) == 0 { + a.sink[n] = true + } + } + a.linkEdges(control) +} + +// controlIndex marks the nodes a control flow reaches, the node pairs one +// joins, and every node's outgoing edges. +func (a *activity) controlIndex() (controlled map[*sysmlv1.Element]bool, control map[[2]*sysmlv1.Element]bool, outs map[*sysmlv1.Element][]*sysmlv1.Element) { + controlled = map[*sysmlv1.Element]bool{} + control = map[[2]*sysmlv1.Element]bool{} + outs = map[*sysmlv1.Element][]*sysmlv1.Element{} for _, e := range a.edges { src, tgt := a.m.model.Ref(e, "source"), a.m.model.Ref(e, "target") - if src == nil || tgt == nil || nodeKind(tgt) != nodePin || !controlled[tgt.Parent] { - continue + if e.Type == "ControlFlow" && src != nil && tgt != nil { + controlled[tgt] = true + control[[2]*sysmlv1.Element{ownerNode(src), ownerNode(tgt)}] = true } - if from := ownerNode(src); nodeKind(from) != nodeParam && from != tgt.Parent { - a.dataOnly[e] = true + if src != nil && tgt != nil { + outs[src] = append(outs[src], e) } } + return controlled, control, outs +} + +// propagateData marks as data nodes the control and buffer nodes whose every +// outgoing edge carries data only, feeding their incoming edges the same way, +// to a fixpoint. +func (a *activity) propagateData(controlled map[*sysmlv1.Element]bool, outs map[*sysmlv1.Element][]*sysmlv1.Element) { for changed := true; changed; { changed = false for _, n := range a.nodes { - if k := nodeKind(n); k != nodeControl && k != nodeBuffer || a.dataNode[n] || controlled[n] || len(outs[n]) == 0 { - continue - } - routes := true - for _, e := range outs[n] { - routes = routes && a.dataOnly[e] - } - if !routes { - continue - } - a.dataNode[n] = true - changed = true - for _, e := range a.edges { - if a.m.model.Ref(e, "target") == n { - a.dataOnly[e] = true - } + if a.promoteDataNode(n, controlled, outs) { + changed = true } } } - for _, n := range a.nodes { - if nodeKind(n) == nodeControl && len(outs[n]) == 0 { - a.sink[n] = true +} + +// promoteDataNode marks n a data node and its incoming edges data-only when n is +// an uncontrolled control or buffer node whose outgoing edges are all data-only. +func (a *activity) promoteDataNode(n *sysmlv1.Element, controlled map[*sysmlv1.Element]bool, outs map[*sysmlv1.Element][]*sysmlv1.Element) bool { + if k := nodeKind(n); k != nodeControl && k != nodeBuffer || a.dataNode[n] || controlled[n] || len(outs[n]) == 0 { + return false + } + routes := true + for _, e := range outs[n] { + routes = routes && a.dataOnly[e] + } + if !routes { + return false + } + a.dataNode[n] = true + for _, e := range a.edges { + if a.m.model.Ref(e, "target") == n { + a.dataOnly[e] = true } } + return true +} + +// linkEdges records the successions between nodes: every eligible edge into +// succ, the first edge between two nodes also into next and prev. +func (a *activity) linkEdges(control map[[2]*sysmlv1.Element]bool) { linked := map[[2]*sysmlv1.Element]bool{} for _, e := range a.edges { src, tgt := a.m.model.Ref(e, "source"), a.m.model.Ref(e, "target") @@ -538,6 +566,40 @@ func (a *activity) endpointIn(n *sysmlv1.Element) string { return a.entry[n] } +// startTargets lists the nodes start successions lead to: the initial nodes' +// targets, then every node no edge leads to (a starved one only marked, never a +// target). seen marks either. +func (a *activity) startTargets() (targets []*sysmlv1.Element, seen map[*sysmlv1.Element]bool) { + seen = map[*sysmlv1.Element]bool{} + for _, n := range a.nodes { + if nodeKind(n) != nodeInitial { + continue + } + for _, t := range a.next[n] { + if !seen[t] { + seen[t] = true + targets = append(targets, t) + } + } + } + for _, n := range a.nodes { + k := nodeKind(n) + if k != nodeAction && k != nodeControl && k != nodeBuffer || len(a.prev[n]) > 0 || seen[n] || a.dataNode[n] || a.sink[n] { + continue + } + if k == nodeControl && n.Type != "ForkNode" { + // A join or merge nothing leads to would never fire. + continue + } + if a.starved[n] == nil { + targets = append(targets, n) + a.m.add(n, Approximated, "", "no edge leads to the node, so it starts with the activity") + } + seen[n] = true + } + return targets, seen +} + // unwritableEdge reports an edge into a node no succession may lead to. func (a *activity) unwritableEdge(e *sysmlv1.Element) { a.m.unmapped(e, "the edge leads to "+describe(ownerNode(a.m.model.Ref(e, "target")))+", "+a.unwritableTarget(e)) @@ -563,36 +625,25 @@ func (a *activity) unwritableTarget(e *sysmlv1.Element) string { // and to every node no edge leads to, forked when several, after the initial // nodes' clock stamps and the activity's wait. func (a *activity) startSuccessions() { - var targets []*sysmlv1.Element - seen := map[*sysmlv1.Element]bool{} - for _, n := range a.nodes { - if nodeKind(n) != nodeInitial { - continue - } - for _, t := range a.next[n] { - if !seen[t] { - seen[t] = true - targets = append(targets, t) - } - } + targets, _ := a.startTargets() + from := a.startPrologue() + if len(targets) > 1 { + f := a.fresh("fork") + a.m.w.line(firstKw + from + thenKw + writeName(f) + ";") + a.m.w.line("fork " + writeName(f) + ";") + from = writeName(f) } - for _, n := range a.nodes { - k := nodeKind(n) - if k != nodeAction && k != nodeControl && k != nodeBuffer || len(a.prev[n]) > 0 || seen[n] || a.dataNode[n] || a.sink[n] { - continue - } - if k == nodeControl && n.Type != "ForkNode" { - // A join or merge nothing leads to would never fire. - continue - } - if a.starved[n] != nil { - seen[n] = true - continue + for _, t := range targets { + if to := a.endpointIn(t); to != "" { + a.m.w.line(firstKw + from + thenKw + to + ";") } - seen[n] = true - targets = append(targets, n) - a.m.add(n, Approximated, "", "no edge leads to the node, so it starts with the activity") } + a.checkInitialSuccessions() +} + +// startPrologue writes what precedes the targets: the kept action, the initial +// nodes' clock stamps and the activity's wait, returning the name they leave from. +func (a *activity) startPrologue() string { from := "start" if a.keeping != "" { name := a.fresh("keep") @@ -613,17 +664,12 @@ func (a *activity) startSuccessions() { a.m.w.line(actionKw + writeName(name) + " accept after " + w + ";") from = writeName(name) } - if len(targets) > 1 { - f := a.fresh("fork") - a.m.w.line(firstKw + from + thenKw + writeName(f) + ";") - a.m.w.line("fork " + writeName(f) + ";") - from = writeName(f) - } - for _, t := range targets { - if to := a.endpointIn(t); to != "" { - a.m.w.line(firstKw + from + thenKw + to + ";") - } - } + return from +} + +// checkInitialSuccessions reports an initial node's edge whose target no +// succession may lead to. +func (a *activity) checkInitialSuccessions() { for _, n := range a.nodes { if nodeKind(n) != nodeInitial { continue diff --git a/internal/translate/migrate/arguments.go b/internal/translate/migrate/arguments.go index 9f2ae1b705..bd760a77a3 100644 --- a/internal/translate/migrate/arguments.go +++ b/internal/translate/migrate/arguments.go @@ -12,82 +12,110 @@ import ( func (a *activity) refusal(n *sysmlv1.Element) (why string, v Verdict, refused bool) { switch n.Type { case "ValueSpecificationAction": - v := firstOwned(n, "value") - if v == nil { - return "the action has no value", Unmapped, true - } - var ok bool - var note string - if results := n.Owned("result"); len(results) == 0 { - _, ok, note = a.m.behaviorValue(v, n) - } else { - _, ok, note = a.m.typedBehaviorValue(v, results[0], n) - } - if !ok { - return "the value " + describeValue(v) + " is not written: " + note, Approximated, true - } + return a.valueActionRefusal(n) case "CallBehaviorAction": - b := a.m.model.Ref(n, "behavior") - if b == nil { - if a.leafStep(n) { - return "", Mapped, false - } - return a.unbehaved(n), Unmapped, true - } - if op := a.m.methodOf[b]; op != nil { - b = op - } - if !a.m.written(b) { - return "the behavior " + qualifiedName(b) + " it calls has no v2 declaration", Unmapped, true - } - switch cat, _ := a.m.classify(b); cat { - case catCalcDef: + return a.behaviorCallRefusal(n) + case "CallOperationAction": + return a.operationCallRefusal(n) + case "SendSignalAction": + return a.sendRefusal(n) + } + return "", Mapped, false +} + +// valueActionRefusal reports whether a value specification action's value +// cannot be written in v2. +func (a *activity) valueActionRefusal(n *sysmlv1.Element) (why string, v Verdict, refused bool) { + val := firstOwned(n, "value") + if val == nil { + return "the action has no value", Unmapped, true + } + var ok bool + var note string + if results := n.Owned("result"); len(results) == 0 { + _, ok, note = a.m.behaviorValue(val, n) + } else { + _, ok, note = a.m.typedBehaviorValue(val, results[0], n) + } + if !ok { + return "the value " + describeValue(val) + " is not written: " + note, Approximated, true + } + return "", Mapped, false +} + +// behaviorCallRefusal reports whether a call behavior action names a behavior +// no action can call, with unbound arguments or no context to bind. +func (a *activity) behaviorCallRefusal(n *sysmlv1.Element) (why string, v Verdict, refused bool) { + b := a.m.model.Ref(n, "behavior") + if b == nil { + if a.leafStep(n) { return "", Mapped, false - case catActionDef: - default: - return "the behavior " + qualifiedName(b) + " is written as a " + cat.keyword() + ", which an action cannot call", Unmapped, true - } - if p, why := a.unarguedParameter(inputPins(n), b); p != nil { - return why, Approximated, true } - if c := a.m.contextOf(b); c != nil { - if expr, cnote := a.callContext(n, c); expr == "" { - return a.uncontexted(b, cnote), Approximated, true - } - } - case "CallOperationAction": - op := a.m.model.Ref(n, "operation") - if op == nil { - return joinNotes(a.m.dangling(n, "operation"), "the action calls no operation"), Unmapped, true + return a.unbehaved(n), Unmapped, true + } + if op := a.m.methodOf[b]; op != nil { + b = op + } + if !a.m.written(b) { + return "the behavior " + qualifiedName(b) + " it calls has no v2 declaration", Unmapped, true + } + switch cat, _ := a.m.classify(b); cat { + case catCalcDef: + return "", Mapped, false + case catActionDef: + default: + return "the behavior " + qualifiedName(b) + " is written as a " + cat.keyword() + ", which an action cannot call", Unmapped, true + } + if p, why := a.unarguedParameter(inputPins(n), b); p != nil { + return why, Approximated, true + } + if c := a.m.contextOf(b); c != nil { + if expr, cnote := a.callContext(n, c); expr == "" { + return a.uncontexted(b, cnote), Approximated, true } - if !a.m.written(op) { - return "the operation " + qualifiedName(op) + " it calls has no v2 declaration", Unmapped, true + } + return "", Mapped, false +} + +// operationCallRefusal reports whether a call operation action's operation is +// unwritten or an argument pin has no parameter. +func (a *activity) operationCallRefusal(n *sysmlv1.Element) (why string, v Verdict, refused bool) { + op := a.m.model.Ref(n, "operation") + if op == nil { + return joinNotes(a.m.dangling(n, "operation"), "the action calls no operation"), Unmapped, true + } + if !a.m.written(op) { + return "the operation " + qualifiedName(op) + " it calls has no v2 declaration", Unmapped, true + } + t := firstOwned(n, "target") + ins := slices.DeleteFunc(inputPins(n), func(p *sysmlv1.Element) bool { return p == t }) + if p, why := a.unarguedParameter(ins, op); p != nil { + return why, Approximated, true + } + return "", Mapped, false +} + +// sendRefusal reports whether a send signal action's arguments cannot take the +// signal's attributes. +func (a *activity) sendRefusal(n *sysmlv1.Element) (why string, v Verdict, refused bool) { + sig := a.m.model.Ref(n, "signal") + if sig == nil || !a.m.written(sig) { + return "", Mapped, false + } + attrs := a.m.signalAttributes(sig) + pins := n.Owned("argument") + for i, attr := range attrs { + if !requiresValue(attr) { + continue } - t := firstOwned(n, "target") - ins := slices.DeleteFunc(inputPins(n), func(p *sysmlv1.Element) bool { return p == t }) - if p, why := a.unarguedParameter(ins, op); p != nil { - return why, Approximated, true + if i >= len(pins) { + return a.unargued(sig, attr), Approximated, true } - case "SendSignalAction": - sig := a.m.model.Ref(n, "signal") - if sig == nil || !a.m.written(sig) { - return "", Mapped, false + if dry := a.valueless(pins[i]); dry != nil { + return a.dryArgument(pins[i], sig, attr, dry), Approximated, true } - attrs := a.m.signalAttributes(sig) - pins := n.Owned("argument") - for i, attr := range attrs { - if !requiresValue(attr) { - continue - } - if i >= len(pins) { - return a.unargued(sig, attr), Approximated, true - } - if dry := a.valueless(pins[i]); dry != nil { - return a.dryArgument(pins[i], sig, attr, dry), Approximated, true - } - if pt, at := a.misfit(pins[i], attr); pt != nil { - return a.misfitArgument(pins[i], sig, attr, pt, at), Approximated, true - } + if pt, at := a.misfit(pins[i], attr); pt != nil { + return a.misfitArgument(pins[i], sig, attr, pt, at), Approximated, true } } return "", Mapped, false diff --git a/internal/translate/migrate/arrivals.go b/internal/translate/migrate/arrivals.go index 5e6911f09f..d0c9778978 100644 --- a/internal/translate/migrate/arrivals.go +++ b/internal/translate/migrate/arrivals.go @@ -32,6 +32,14 @@ func (m *migration) arrivalIndex() *arrivals { inward: map[*sysmlv1.Element][]*sysmlv1.Element{}, } m.arrived = idx + conveyed := m.portDelegations(idx) + idx.propagate(m, conveyed) + return idx +} + +// portDelegations fills idx's peer and delegation edges from the port connectors and +// lists, as port and signal pairs, the signals their item flows convey to an end port. +func (m *migration) portDelegations(idx *arrivals) [][2]*sysmlv1.Element { peers, outward, inward := idx.peers, idx.outward, idx.inward var conveyed [][2]*sysmlv1.Element for _, c := range m.connectors { @@ -60,48 +68,61 @@ func (m *migration) arrivalIndex() *arrivals { peers[p1] = append(peers[p1], p0) } } - sent := map[*sysmlv1.Element]map[*sysmlv1.Element]bool{} - var reach func(into map[*sysmlv1.Element]map[*sysmlv1.Element]bool, p, sig *sysmlv1.Element) - reach = func(into map[*sysmlv1.Element]map[*sysmlv1.Element]bool, p, sig *sysmlv1.Element) { - if into[p][sig] { - return - } - if into[p] == nil { - into[p] = map[*sysmlv1.Element]bool{} - } - into[p][sig] = true - for _, q := range inward[p] { - reach(into, q, sig) - } - } - var leave func(p, sig *sysmlv1.Element) - leave = func(p, sig *sysmlv1.Element) { - if sent[p][sig] { - return - } - if sent[p] == nil { - sent[p] = map[*sysmlv1.Element]bool{} - } - sent[p][sig] = true - for _, q := range peers[p] { - reach(idx.at, q, sig) - } - for _, q := range outward[p] { - leave(q, sig) - } - } + return conveyed +} + +// propagate spreads the sends and declared arrivals through idx's delegations: a send +// reaches a peer's arrival set and travels outward; declared and conveyed signals are carried. +func (idx *arrivals) propagate(m *migration, conveyed [][2]*sysmlv1.Element) { + w := &arrivalWalk{idx: idx, sent: map[*sysmlv1.Element]map[*sysmlv1.Element]bool{}} for _, send := range m.portSends { - leave(m.model.Ref(send, "onPort"), m.model.Ref(send, "signal")) + w.leave(m.model.Ref(send, "onPort"), m.model.Ref(send, "signal")) } for _, p := range m.ports { for _, sig := range m.declaredArrivals(p) { - reach(idx.carried, p, sig) + w.reach(idx.carried, p, sig) } } for _, pair := range conveyed { - reach(idx.carried, pair[0], pair[1]) + w.reach(idx.carried, pair[0], pair[1]) + } +} + +// arrivalWalk carries the send set while a propagation walks the delegations. +type arrivalWalk struct { + idx *arrivals + sent map[*sysmlv1.Element]map[*sysmlv1.Element]bool +} + +// reach records sig arriving at p and follows inward delegations. +func (w *arrivalWalk) reach(into map[*sysmlv1.Element]map[*sysmlv1.Element]bool, p, sig *sysmlv1.Element) { + if into[p][sig] { + return + } + if into[p] == nil { + into[p] = map[*sysmlv1.Element]bool{} + } + into[p][sig] = true + for _, q := range w.idx.inward[p] { + w.reach(into, q, sig) + } +} + +// leave records sig sent from p, reaches its peers, and travels outward. +func (w *arrivalWalk) leave(p, sig *sysmlv1.Element) { + if w.sent[p][sig] { + return + } + if w.sent[p] == nil { + w.sent[p] = map[*sysmlv1.Element]bool{} + } + w.sent[p][sig] = true + for _, q := range w.idx.peers[p] { + w.reach(w.idx.at, q, sig) + } + for _, q := range w.idx.outward[p] { + w.leave(q, sig) } - return idx } // conveyedTo lists, as port and signal, the signals the item flows connector c realizes @@ -135,37 +156,60 @@ func (m *migration) declaredArrivals(p *sysmlv1.Element) []*sysmlv1.Element { return } seen[t] = true - for _, a := range t.Owned("ownedAttribute") { - fp := stereo(a, "FlowProperty") - if fp == nil { - continue - } - dir := fp.Tag("direction") - if dir == "in" && conjugated || dir == "out" && !conjugated { - continue - } - if sig := m.model.Ref(a, "type"); sig != nil && sig.Type == "Signal" { - out = append(out, sig) - } - } + out = append(out, m.flowSignals(t, conjugated)...) if !conjugated { - for _, r := range t.Owned("ownedReception") { - if sig := m.model.Ref(r, "signal"); sig != nil { - out = append(out, sig) - } - } - for _, ir := range t.Owned("interfaceRealization") { - walk(m.model.Ref(ir, "contract")) - } - } - for _, g := range t.Owned("generalization") { - walk(m.model.Ref(g, "general")) + out = append(out, m.receptionSignals(t)...) } + m.arrivalSupertypes(t, conjugated, walk) } walk(m.model.Ref(p, "type")) return out } +// receptionSignals lists the signals of t's owned receptions. +func (m *migration) receptionSignals(t *sysmlv1.Element) []*sysmlv1.Element { + var out []*sysmlv1.Element + for _, r := range t.Owned("ownedReception") { + if sig := m.model.Ref(r, "signal"); sig != nil { + out = append(out, sig) + } + } + return out +} + +// arrivalSupertypes walks t's realized interface contracts — unconjugated only — +// and its general classifiers. +func (m *migration) arrivalSupertypes(t *sysmlv1.Element, conjugated bool, walk func(*sysmlv1.Element)) { + if !conjugated { + for _, ir := range t.Owned("interfaceRealization") { + walk(m.model.Ref(ir, "contract")) + } + } + for _, g := range t.Owned("generalization") { + walk(m.model.Ref(g, "general")) + } +} + +// flowSignals lists the signal types of t's flow properties that arrive when conjugation +// reads as given: flowing in, or out when conjugated. +func (m *migration) flowSignals(t *sysmlv1.Element, conjugated bool) []*sysmlv1.Element { + var out []*sysmlv1.Element + for _, a := range t.Owned("ownedAttribute") { + fp := stereo(a, "FlowProperty") + if fp == nil { + continue + } + dir := fp.Tag("direction") + if dir == "in" && conjugated || dir == "out" && !conjugated { + continue + } + if sig := m.model.Ref(a, "type"); sig != nil && sig.Type == "Signal" { + out = append(out, sig) + } + } + return out +} + // arrivesAt reports whether sig, or a signal a trigger for sig also accepts, arrives at port p: // the document sends it or a special there, or the port carries it, a general or a special. func (m *migration) arrivesAt(p, sig *sysmlv1.Element) bool { diff --git a/internal/translate/migrate/carriers.go b/internal/translate/migrate/carriers.go index 4686aab6bc..e52317b42d 100644 --- a/internal/translate/migrate/carriers.go +++ b/internal/translate/migrate/carriers.go @@ -105,36 +105,11 @@ func (m *migration) carrierSignal(v *sysmlv1.Element, incoming []*sysmlv1.Elemen } var sig *sysmlv1.Element for _, t := range incoming { - src := m.model.Ref(t, "source") - if src != nil && src.Type == "Pseudostate" { - return nil, "the transition from the " + pseudoKind(src) + " pseudostate " + describe(src) + " enters the state with no signal of its own" - } - triggers := t.Owned("trigger") - if len(triggers) == 0 { - return nil, transitionFrom + describe(src) + " enters the state with no trigger" - } - for _, tr := range triggers { - ev := m.model.Ref(tr, "event") - if ev == nil || ev.Type != "SignalEvent" { - return nil, transitionFrom + describe(src) + " accepts " + eventKind(ev) + ", which carries no signal" - } - if note, ok := m.signalOf(ev); !ok { - return nil, transitionFrom + describe(src) + " accepts a signal with no v2 declaration: " + note - } - s := m.model.Ref(ev, "signal") - if sig != nil && s != sig { - return nil, "the transitions into the state accept different signals, " + m.nameFor(sig) + " and " + m.nameFor(s) - } - sig = s - } - if eff := firstOwned(t, "effect"); eff != nil { - switch { - case eff.Parent != t: - return nil, "the effect of the transition from " + describe(src) + " is written once, as its own action def, which cannot keep the accepted signal" - case eff.Type != "Activity" && eff.Type != "OpaqueBehavior" && eff.Type != "FunctionBehavior": - return nil, "the effect of the transition from " + describe(src) + " is " + aOrAn(eff.Type) + ", which has no action form to keep the accepted signal in" - } + s, note, fail := m.incomingSignal(t, sig) + if fail { + return nil, note } + sig = s } if cat, _ := m.classify(sig); cat != catItemDef { return nil, "the signal " + m.nameFor(sig) + " is written as " + aOrAn(cat.keyword()) + ", which no item holds" @@ -142,6 +117,52 @@ func (m *migration) carrierSignal(v *sysmlv1.Element, incoming []*sysmlv1.Elemen return sig, "" } +// incomingSignal checks one transition into the state: its trigger accepts a signal +// consistent with the others and its effect can keep it. fail reports the first reason not. +func (m *migration) incomingSignal(t, sig *sysmlv1.Element) (*sysmlv1.Element, string, bool) { + src := m.model.Ref(t, "source") + if src != nil && src.Type == "Pseudostate" { + return nil, "the transition from the " + pseudoKind(src) + " pseudostate " + describe(src) + " enters the state with no signal of its own", true + } + triggers := t.Owned("trigger") + if len(triggers) == 0 { + return nil, transitionFrom + describe(src) + " enters the state with no trigger", true + } + for _, tr := range triggers { + s, note, fail := m.triggerSignal(tr, src, sig) + if fail { + return nil, note, true + } + sig = s + } + if eff := firstOwned(t, "effect"); eff != nil { + switch { + case eff.Parent != t: + return nil, "the effect of the transition from " + describe(src) + " is written once, as its own action def, which cannot keep the accepted signal", true + case eff.Type != "Activity" && eff.Type != "OpaqueBehavior" && eff.Type != "FunctionBehavior": + return nil, "the effect of the transition from " + describe(src) + " is " + aOrAn(eff.Type) + ", which has no action form to keep the accepted signal in", true + } + } + return sig, "", false +} + +// triggerSignal checks one trigger's event: a SignalEvent whose declared signal +// matches the signals the other transitions accept. +func (m *migration) triggerSignal(tr, src, sig *sysmlv1.Element) (*sysmlv1.Element, string, bool) { + ev := m.model.Ref(tr, "event") + if ev == nil || ev.Type != "SignalEvent" { + return nil, transitionFrom + describe(src) + " accepts " + eventKind(ev) + ", which carries no signal", true + } + if note, ok := m.signalOf(ev); !ok { + return nil, transitionFrom + describe(src) + " accepts a signal with no v2 declaration: " + note, true + } + s := m.model.Ref(ev, "signal") + if sig != nil && s != sig { + return nil, "the transitions into the state accept different signals, " + m.nameFor(sig) + " and " + m.nameFor(s), true + } + return s, "", false +} + // eventKind names an event for a diagnostic, or its absence. func eventKind(ev *sysmlv1.Element) string { if ev == nil { diff --git a/internal/translate/migrate/interaction.go b/internal/translate/migrate/interaction.go index 75a2dd5944..495de61439 100644 --- a/internal/translate/migrate/interaction.go +++ b/internal/translate/migrate/interaction.go @@ -678,16 +678,26 @@ func (s *scenario) fragment(f *sysmlv1.Element, body *[]*scenarioStep) (*scenari default: return nil, "is a " + kind + " fragment, which has no v2 form" } - if step.kind != stepAlt && step.kind != stepSeq && len(operands) > 1 { - if step.kind != stepPar { - return nil, "is a " + kind + " fragment with " + strconv.Itoa(len(operands)) + " operands; it takes one" - } + if step.kind != stepAlt && step.kind != stepSeq && step.kind != stepPar && len(operands) > 1 { + return nil, "is a " + kind + " fragment with " + strconv.Itoa(len(operands)) + " operands; it takes one" } // The operands of alt, opt, loop and par each resolve from the calls open before the fragment: // alternatives do not see each other, and concurrent operands are unordered between themselves. - isolated := step.kind != stepSeq in := slices.Clone(s.calls) - var outs [][]*scenarioStep + outs, ferr := s.fragmentOperands(step, kind, operands, in, body) + if ferr != "" { + return nil, ferr + } + s.joinCalls(step, in, outs) + step.base = freshIn(s.used, kind) + step.name = writeName(step.base) + return step, "" +} + +// fragmentOperands resolves each operand's steps and collects the calls each +// leaves open; isolated operands all start from the calls open before the fragment. +func (s *scenario) fragmentOperands(step *scenarioStep, kind string, operands []*sysmlv1.Element, in []*scenarioStep, body *[]*scenarioStep) (outs [][]*scenarioStep, err string) { + isolated := step.kind != stepSeq for i, o := range operands { operand := &scenarioOperand{e: o} var steps []*scenarioStep @@ -695,32 +705,8 @@ func (s *scenario) fragment(f *sysmlv1.Element, body *[]*scenarioStep) (*scenari s.outer[&operand.steps] = body guard := firstOwned(o, "guard") var note string - switch step.kind { - case stepAlt: - operand.guard, operand.gnote, note = s.guard(guard) - if note != "" { - return nil, "has an operand whose guard is not written: " + note - } - if operand.guard == "" && i != len(operands)-1 { - return nil, "has an operand without a guard before its last, so the operands after it would never run" - } - case stepOpt: - operand.guard, operand.gnote, note = s.guard(guard) - if note != "" { - return nil, "has a guard that is not written: " + note - } - if operand.guard == "" { - return nil, "has no guard, so whether its operand runs is unspecified" - } - case stepLoop: - operand.guard, step.count, operand.gnote, note = s.loopBounds(guard) - if note != "" { - return nil, note - } - case stepPar, stepSeq: - if guard != nil && !trueGuard(guard) { - return nil, "has a guard on an operand of a " + kind + " fragment, which runs its operands regardless" - } + if err := s.operandGuard(step, kind, operand, guard, i, len(operands)); err != "" { + return nil, err } if isolated { s.calls = slices.Clone(in) @@ -733,6 +719,45 @@ func (s *scenario) fragment(f *sysmlv1.Element, body *[]*scenarioStep) (*scenari step.operands = append(step.operands, operand) outs = append(outs, s.calls) } + return outs, "" +} + +// operandGuard resolves an operand's guard by the fragment's kind, or why it cannot. +func (s *scenario) operandGuard(step *scenarioStep, kind string, operand *scenarioOperand, guard *sysmlv1.Element, i, n int) string { + var note string + switch step.kind { + case stepAlt: + operand.guard, operand.gnote, note = s.guard(guard) + if note != "" { + return "has an operand whose guard is not written: " + note + } + if operand.guard == "" && i != n-1 { + return "has an operand without a guard before its last, so the operands after it would never run" + } + case stepOpt: + operand.guard, operand.gnote, note = s.guard(guard) + if note != "" { + return "has a guard that is not written: " + note + } + if operand.guard == "" { + return "has no guard, so whether its operand runs is unspecified" + } + case stepLoop: + operand.guard, step.count, operand.gnote, note = s.loopBounds(guard) + if note != "" { + return note + } + case stepPar, stepSeq: + if guard != nil && !trueGuard(guard) { + return "has a guard on an operand of a " + kind + " fragment, which runs its operands regardless" + } + } + return "" +} + +// joinCalls closes the calls every operand path answers; a par's operands +// also open to replies the calls they made. +func (s *scenario) joinCalls(step *scenarioStep, in []*scenarioStep, outs [][]*scenarioStep) { switch step.kind { case stepAlt, stepOpt, stepLoop: // A path may skip the fragment unless an alt ends in an else; only a call still open on every path stays open. @@ -752,9 +777,6 @@ func (s *scenario) fragment(f *sysmlv1.Element, body *[]*scenarioStep) (*scenari } } } - step.base = freshIn(s.used, kind) - step.name = writeName(step.base) - return step, "" } // openOnEveryPath keeps the calls of in that every path in outs leaves unanswered. diff --git a/internal/translate/migrate/opaque.go b/internal/translate/migrate/opaque.go index 893419687a..d0e8e339e8 100644 --- a/internal/translate/migrate/opaque.go +++ b/internal/translate/migrate/opaque.go @@ -351,6 +351,33 @@ func lineTerminator(r rune) bool { func lexOpaque(body string) ([]token, *refusal) { var toks []token s := body + for s != "" { + rest, newlines, done, err := lexTrivia(s) + if err != nil { + return nil, err + } + for i := 0; i < newlines; i++ { + toks = append(toks, token{tokNewline, "\n"}) + } + s = rest + if done { + break + } + r, _ := utf8.DecodeRuneInString(s) + tok, rest, err := lexAtom(s, r) + if err != nil { + return nil, err + } + toks = append(toks, tok) + s = rest + } + return append(toks, token{tokEOF, ""}), nil +} + +// lexTrivia skips whitespace, comments and line ends, counting the line ends +// crossed (one per terminator, one for a block comment spanning lines); done +// reports the body is spent. +func lexTrivia(s string) (rest string, newlines int, done bool, err *refusal) { for s != "" { r, size := utf8.DecodeRuneInString(s) switch { @@ -358,69 +385,89 @@ func lexOpaque(body string) ([]token, *refusal) { if strings.HasPrefix(s, "\r\n") { size = 2 } - toks = append(toks, token{tokNewline, "\n"}) + newlines++ s = s[size:] - continue case unicode.IsSpace(r): s = s[size:] - continue case strings.HasPrefix(s, "//"): - if i := strings.IndexFunc(s, lineTerminator); i >= 0 { - s = s[i:] - } else { - s = "" - } - continue + s = skipLineComment(s) case strings.HasPrefix(s, "/*"): - i := strings.Index(s[2:], "*/") - if i < 0 { - return nil, &refusal{kind: refusedSyntax, token: "/*", why: "the comment is not closed"} - } - if strings.ContainsFunc(s[2:2+i], lineTerminator) { - toks = append(toks, token{tokNewline, "\n"}) - } - s = s[i+4:] - continue - case r == '"' || r == '\'': - text, rest, err := lexString(s, r) + rest, nl, err := skipBlockComment(s) if err != nil { - return nil, err + return "", 0, false, err } - toks = append(toks, token{tokString, text}) - s = rest - continue - case unicode.IsDigit(r) || (r == '.' && len(s) > 1 && isDigit(s[1])): - text, rest := lexNumber(s) - toks = append(toks, token{tokNumber, text}) - s = rest - continue - case unicode.IsLetter(r) || r == '_' || r == '$': - i := size - for i < len(s) { - c, n := utf8.DecodeRuneInString(s[i:]) - if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' && c != '$' { - break - } - i += n + if nl { + newlines++ } - toks = append(toks, token{tokIdent, s[:i]}) - s = s[i:] - continue + s = rest + default: + return s, newlines, false, nil } - matched := false - for _, p := range puncts { - if strings.HasPrefix(s, p) { - toks = append(toks, token{tokPunct, p}) - s = s[len(p):] - matched = true - break - } + } + return s, newlines, true, nil +} + +// lexAtom reads the token at s's head: a string or number literal, an +// identifier, or the longest punctuation. +func lexAtom(s string, r rune) (token, string, *refusal) { + switch { + case r == '"' || r == '\'': + text, rest, err := lexString(s, r) + if err != nil { + return token{}, "", err } - if !matched { - return nil, &refusal{kind: refusedSyntax, token: string(r)} + return token{tokString, text}, rest, nil + case unicode.IsDigit(r) || (r == '.' && len(s) > 1 && isDigit(s[1])): + text, rest := lexNumber(s) + return token{tokNumber, text}, rest, nil + case unicode.IsLetter(r) || r == '_' || r == '$': + text, rest := lexIdent(s) + return token{tokIdent, text}, rest, nil + } + if p, ok := lexPunct(s); ok { + return token{tokPunct, p}, s[len(p):], nil + } + return token{}, s, &refusal{kind: refusedSyntax, token: string(r)} +} + +// lexIdent reads the identifier at s's head. +func lexIdent(s string) (text, rest string) { + i := 0 + for i < len(s) { + c, n := utf8.DecodeRuneInString(s[i:]) + if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' && c != '$' { + break } + i += n } - return append(toks, token{tokEOF, ""}), nil + return s[:i], s[i:] +} + +// lexPunct returns the longest punctuation at s's head, or "" when none matches. +func lexPunct(s string) (string, bool) { + for _, p := range puncts { + if strings.HasPrefix(s, p) { + return p, true + } + } + return "", false +} + +// skipLineComment drops a `//` comment through its line end. +func skipLineComment(s string) string { + if i := strings.IndexFunc(s, lineTerminator); i >= 0 { + return s[i:] + } + return "" +} + +// skipBlockComment drops a `/* */` comment, reporting a line end inside it. +func skipBlockComment(s string) (rest string, newline bool, err *refusal) { + i := strings.Index(s[2:], "*/") + if i < 0 { + return "", false, &refusal{kind: refusedSyntax, token: "/*", why: "the comment is not closed"} + } + return s[i+4:], strings.ContainsFunc(s[2:2+i], lineTerminator), nil } func isDigit(c byte) bool { return c >= '0' && c <= '9' } @@ -1210,52 +1257,64 @@ func (p *opaqueParser) primary() (translated, *refusal) { } return lit, nil case tokIdent: - switch { - case tok.word("true") || tok.word("false"): - if p.d.script() && tok.text != strings.ToLower(tok.text) { - return translated{}, &refusal{kind: refusedName, token: tok.text, why: "a script spells its Booleans in lower case"} - } - return translated{expr: strings.ToLower(tok.text), scalar: "Boolean", atomic: true, lit: "boolean"}, nil - case p.d.script() && scriptReserved[tok.text]: - return translated{}, &refusal{kind: refusedConstruct, token: tok.text} + return p.primaryIdent(tok) + case tokPunct: + return p.primaryPunct(tok) + case tokNewline: + return translated{}, &refusal{kind: refusedSyntax, token: "\n", why: "an operand is expected"} + } + return translated{}, &refusal{kind: refusedSyntax, token: "", why: "the expression ends early"} +} + +// primaryIdent reads an identifier: a Boolean literal, a call of a dotted +// name, or the name itself. +func (p *opaqueParser) primaryIdent(tok token) (translated, *refusal) { + switch { + case tok.word("true") || tok.word("false"): + if p.d.script() && tok.text != strings.ToLower(tok.text) { + return translated{}, &refusal{kind: refusedName, token: tok.text, why: "a script spells its Booleans in lower case"} } - p.i-- - path, err := p.path() + return translated{expr: strings.ToLower(tok.text), scalar: "Boolean", atomic: true, lit: "boolean"}, nil + case p.d.script() && scriptReserved[tok.text]: + return translated{}, &refusal{kind: refusedConstruct, token: tok.text} + } + p.i-- + path, err := p.path() + if err != nil { + return translated{}, err + } + if p.peek(false).isPunct("(") { + if p.d == dialectEnglish { + return translated{}, &refusal{kind: refusedConstruct, token: strings.Join(path, ".") + "(", + why: "a call is not English; the subset reads names, literals, comparisons and not/and/or"} + } + p.next(false) + return p.call(path) + } + return p.name(path) +} + +// primaryPunct reads a parenthesized expression; every other punctuation where +// an operand belongs is refused. +func (p *opaqueParser) primaryPunct(tok token) (translated, *refusal) { + if tok.text == "(" { + x, err := p.expr() if err != nil { return translated{}, err } - if p.peek(false).isPunct("(") { - if p.d == dialectEnglish { - return translated{}, &refusal{kind: refusedConstruct, token: strings.Join(path, ".") + "(", - why: "a call is not English; the subset reads names, literals, comparisons and not/and/or"} - } - p.next(false) - return p.call(path) - } - return p.name(path) - case tokPunct: - if tok.text == "(" { - x, err := p.expr() - if err != nil { - return translated{}, err - } - if !p.next(true).isPunct(")") { - return translated{}, &refusal{kind: refusedSyntax, token: "(", why: "the parenthesis is not closed"} - } - // The group keeps its looseness: operands are re-parenthesized where the v2 precedence needs it. - return x, nil - } - if tok.text == "{" || tok.text == "[" { - return translated{}, &refusal{kind: refusedConstruct, token: tok.text, why: "an object or array literal has no v2 form in the subset"} - } - if tok.text == "/" { - return translated{}, &refusal{kind: refusedConstruct, token: "/", why: "a regular expression has no v2 form"} + if !p.next(true).isPunct(")") { + return translated{}, &refusal{kind: refusedSyntax, token: "(", why: "the parenthesis is not closed"} } - return translated{}, &refusal{kind: refusedSyntax, token: tok.text, why: "an operand is expected"} - case tokNewline: - return translated{}, &refusal{kind: refusedSyntax, token: "\n", why: "an operand is expected"} + // The group keeps its looseness: operands are re-parenthesized where the v2 precedence needs it. + return x, nil } - return translated{}, &refusal{kind: refusedSyntax, token: "", why: "the expression ends early"} + if tok.text == "{" || tok.text == "[" { + return translated{}, &refusal{kind: refusedConstruct, token: tok.text, why: "an object or array literal has no v2 form in the subset"} + } + if tok.text == "/" { + return translated{}, &refusal{kind: refusedConstruct, token: "/", why: "a regular expression has no v2 form"} + } + return translated{}, &refusal{kind: refusedSyntax, token: tok.text, why: "an operand is expected"} } // name resolves a dotted name through the locals and the scope. @@ -1286,107 +1345,132 @@ func (p *opaqueParser) call(path []string) (translated, *refusal) { return nil } if p.d == dialectJava && len(path) > 1 && path[len(path)-1] == "equals" { - if err := arity(1); err != nil { - return translated{}, err - } - recv, err := p.name(path[:len(path)-1]) - if err != nil { - return translated{}, err - } - return stringEquals(recv, fn, args[0]) + return p.javaEquals(path, fn, args, arity) } switch fn { case "Math.max", "Math.min": - // Java's take two arguments; JavaScript's take any number, folded pairwise, - // one argument being itself and none an infinity the subset has no form for. - if p.d == dialectJava { - if err := arity(2); err != nil { - return translated{}, err - } - } else if len(args) == 0 { - return translated{}, &refusal{kind: refusedCall, token: fn, why: fn + " with no arguments yields an infinity, which has no v2 form in the subset"} - } - acc := args[0] - if err := numbersAt(fn, acc); err != nil { - return translated{}, err - } - for _, arg := range args[1:] { - if err := numbersAt(fn, acc, arg); err != nil { - return translated{}, err - } - scalar := arithmeticScalar("+", acc.scalar, arg.scalar) - acc = translated{expr: extremum(fn[5:], scalar) + "(" + acc.expr + ", " + arg.expr + ")", scalar: scalar, atomic: true} - } - return acc, nil - case "Math.abs": - if err := arity(1); err != nil { - return translated{}, err - } - if err := numbersAt(fn, args[0], args[0]); err != nil { - return translated{}, err - } - lib := "NumericalFunctions" - switch { - case wholeScalar(args[0].scalar): - lib = "IntegerFunctions" - case args[0].scalar != "": - lib = "RealFunctions" - } - return translated{expr: lib + "::abs(" + args[0].expr + ")", scalar: args[0].scalar, atomic: true}, nil + return p.mathExtremum(fn, args, arity) + case "Math.abs", "Math.sqrt", "Math.pow": + return mathScalarCall(fn, args, arity) case "Math.floor", mathRound, "Math.ceil": + return p.mathRoundish(fn, args, arity) + case "java.util.Collections.max", "java.util.Collections.min", "Collections.max", "Collections.min": if err := arity(1); err != nil { return translated{}, err } - if err := numbersAt(fn, args[0], args[0]); err != nil { - return translated{}, err - } - // Java's floor and ceil answer a double, so a `/` after them is real division; its round answers a long. - yields := "Integer" - if p.d == dialectJava && fn != mathRound { - yields = "Real" - } - switch fn { - case "Math.ceil": - // -floor(-x) would overflow at the least Integer; the extension library's ceiling does not. - return translated{expr: "OpenSysMLMathFunctions::ceiling(" + args[0].expr + ")", scalar: yields, atomic: true}, nil - case mathRound: - // JavaScript and Java round a half toward +∞, where RealFunctions::round rounds it away from zero. - half := translated{expr: "0.5", scalar: "Real", atomic: true, lit: "real"} - return translated{expr: "RealFunctions::floor(" + binary(args[0], "+", half, looseAdditive, "Real").expr + ")", scalar: "Integer", atomic: true}, nil - default: - return translated{expr: "RealFunctions::floor(" + args[0].expr + ")", scalar: yields, atomic: true}, nil - } + return collectionExtremum(fn, args[0]) + } + return translated{}, &refusal{kind: refusedCall, token: fn} +} + +// mathScalarCall writes the one- or two-argument Math functions whose v2 form +// is a library call: abs, sqrt and the ** of pow. +func mathScalarCall(fn string, args []translated, arity func(int) *refusal) (translated, *refusal) { + n := 1 + if fn == "Math.pow" { + n = 2 + } + if err := arity(n); err != nil { + return translated{}, err + } + if err := numbersAt(fn, args[0], args[n-1]); err != nil { + return translated{}, err + } + switch fn { + case "Math.abs": + return mathAbs(args[0]), nil case "Math.sqrt": - if err := arity(1); err != nil { - return translated{}, err - } - if err := numbersAt(fn, args[0], args[0]); err != nil { - return translated{}, err - } return translated{expr: "RealFunctions::sqrt(" + args[0].expr + ")", scalar: "Real", atomic: true}, nil - case "Math.pow": + default: + return binary(args[0], "**", args[1], loosePower, "Real"), nil + } +} + +// mathAbs writes Math.abs through the library its argument's scalar picks. +func mathAbs(arg translated) translated { + lib := "NumericalFunctions" + switch { + case wholeScalar(arg.scalar): + lib = "IntegerFunctions" + case arg.scalar != "": + lib = "RealFunctions" + } + return translated{expr: lib + "::abs(" + arg.expr + ")", scalar: arg.scalar, atomic: true} +} + +// javaEquals writes Java's `x.equals(y)` as the string equality of x and y. +func (p *opaqueParser) javaEquals(path []string, fn string, args []translated, arity func(int) *refusal) (translated, *refusal) { + if err := arity(1); err != nil { + return translated{}, err + } + recv, err := p.name(path[:len(path)-1]) + if err != nil { + return translated{}, err + } + return stringEquals(recv, fn, args[0]) +} + +// mathExtremum writes Math.max/min. Java's take two arguments; JavaScript's take +// any number, folded pairwise, one argument being itself and none an infinity +// the subset has no form for. +func (p *opaqueParser) mathExtremum(fn string, args []translated, arity func(int) *refusal) (translated, *refusal) { + if p.d == dialectJava { if err := arity(2); err != nil { return translated{}, err } - if err := numbersAt(fn, args[0], args[1]); err != nil { - return translated{}, err - } - return binary(args[0], "**", args[1], loosePower, "Real"), nil - case "java.util.Collections.max", "java.util.Collections.min", "Collections.max", "Collections.min": - if err := arity(1); err != nil { + } else if len(args) == 0 { + return translated{}, &refusal{kind: refusedCall, token: fn, why: fn + " with no arguments yields an infinity, which has no v2 form in the subset"} + } + acc := args[0] + if err := numbersAt(fn, acc); err != nil { + return translated{}, err + } + for _, arg := range args[1:] { + if err := numbersAt(fn, acc, arg); err != nil { return translated{}, err } - s := args[0] - if !s.plural { - return translated{}, &refusal{kind: refusedType, token: fn, why: "the argument is a single value, not a collection"} - } - if s.held() != "" && !isNumeric(s.scalar) { - return translated{}, &refusal{kind: refusedType, token: fn, why: "the collection holds " + s.held() + " values, not numbers"} - } - which := fn[strings.LastIndex(fn, ".")+1:] - return translated{expr: s.operand() + "->ControlFunctions::reduce { in x; in y; " + extremum(which, s.scalar) + "(x, y) }", scalar: s.scalar, atomic: true}, nil + scalar := arithmeticScalar("+", acc.scalar, arg.scalar) + acc = translated{expr: extremum(fn[5:], scalar) + "(" + acc.expr + ", " + arg.expr + ")", scalar: scalar, atomic: true} } - return translated{}, &refusal{kind: refusedCall, token: fn} + return acc, nil +} + +// mathRoundish writes Math.floor, ceil and the script round. Java's floor and +// ceil answer a double, so a `/` after them is real division; its round answers a long. +func (p *opaqueParser) mathRoundish(fn string, args []translated, arity func(int) *refusal) (translated, *refusal) { + if err := arity(1); err != nil { + return translated{}, err + } + if err := numbersAt(fn, args[0], args[0]); err != nil { + return translated{}, err + } + yields := "Integer" + if p.d == dialectJava && fn != mathRound { + yields = "Real" + } + switch fn { + case "Math.ceil": + // -floor(-x) would overflow at the least Integer; the extension library's ceiling does not. + return translated{expr: "OpenSysMLMathFunctions::ceiling(" + args[0].expr + ")", scalar: yields, atomic: true}, nil + case mathRound: + // JavaScript and Java round a half toward +∞, where RealFunctions::round rounds it away from zero. + half := translated{expr: "0.5", scalar: "Real", atomic: true, lit: "real"} + return translated{expr: "RealFunctions::floor(" + binary(args[0], "+", half, looseAdditive, "Real").expr + ")", scalar: "Integer", atomic: true}, nil + default: + return translated{expr: "RealFunctions::floor(" + args[0].expr + ")", scalar: yields, atomic: true}, nil + } +} + +// collectionExtremum writes a Collections.max/min as a reduce over the extremum. +func collectionExtremum(fn string, s translated) (translated, *refusal) { + if !s.plural { + return translated{}, &refusal{kind: refusedType, token: fn, why: "the argument is a single value, not a collection"} + } + if s.held() != "" && !isNumeric(s.scalar) { + return translated{}, &refusal{kind: refusedType, token: fn, why: "the collection holds " + s.held() + " values, not numbers"} + } + which := fn[strings.LastIndex(fn, ".")+1:] + return translated{expr: s.operand() + "->ControlFunctions::reduce { in x; in y; " + extremum(which, s.scalar) + "(x, y) }", scalar: s.scalar, atomic: true}, nil } // arguments reads a call's arguments after its opening parenthesis, through the closing one. diff --git a/internal/translate/migrate/states.go b/internal/translate/migrate/states.go index 508dad0d09..8b0412e3c2 100644 --- a/internal/translate/migrate/states.go +++ b/internal/translate/migrate/states.go @@ -546,56 +546,7 @@ func inheritedStateNamesSet() map[string]bool { // kw of the current body, and reports whether anything was written. func (m *migration) inlineBehavior(kw string, b, owner *sysmlv1.Element) bool { if b.Parent != owner { - if !m.written(b) { - m.w.lines(commentLines(kw + " " + qualifiedName(b) + " has no v2 declaration")) - m.add(b, Unmapped, "", "the behavior is not written; "+describe(owner)+" names it as its "+kw) - return false - } - if cat, _ := m.classify(b); cat != catActionDef { - m.w.lines(commentLines(kw + " " + qualifiedName(b) + " is written as a " + cat.keyword() + ", which no state runs")) - m.downgrade(b, describe(owner)+" names it as its "+kw+", which a "+cat.keyword()+" cannot be") - return false - } - var ins []string - note := "also run as the " + kw + " of " + describe(owner) - if c := m.contextOf(b); c != nil { - expr, cnote := m.contextBinding(c, classifierOf(owner), "this") - if expr == "" { - m.w.lines(commentLines(kw + " " + qualifiedName(b) + notRun + cnote)) - m.downgrade(b, "not run as the "+kw+" of "+describe(owner)+": "+cnote) - m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+notRun+cnote) - return false - } - ins = append(ins, "in "+writeName(c.name)+" = "+expr) - note = joinNotes(note, cnote) - } - if params := inParameters(b); len(params) > 0 && owner.Type != "Transition" { - why := performsIts + kw + " with no arguments; " + m.carrierWhy(owner, kw) - bound := m.carrierBindings(owner, b) - switch { - case bound != nil && kw != exitAction: - for _, p := range params { - ins = append(ins, m.parameterBinding(p, m.nameFor(p), bound[p])) - } - note = joinNotes(note, "its parameters take the attributes of the signal the transitions into the state accept") - case slices.IndexFunc(params, requiresValue) >= 0: - p := params[slices.IndexFunc(params, requiresValue)] - why = "its parameter " + m.nameFor(p) + " must hold a value that nothing supplies: " + why - m.w.lines(commentLines(kw + " " + qualifiedName(b) + notRun + why)) - m.downgrade(b, "not run as the "+kw+" of "+describe(owner)+": "+why) - m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+notRun+why) - return false - default: - note = joinNotes(note, "its parameters take no value: "+why) - } - } - line := kw + " : " + m.ref(b, owner) + ";" - if len(ins) > 0 { - line = kw + " : " + m.ref(b, owner) + " { " + strings.Join(ins, "; ") + "; }" - } - m.w.line(line) - m.downgrade(b, note) - return true + return m.referencedBehavior(kw, b, owner) } saved := m.scope m.scope = b @@ -621,6 +572,12 @@ func (m *migration) inlineBehavior(kw string, b, owner *sysmlv1.Element) bool { } header += " " + writeName(name) } + return m.writeInlineBody(kw, b, owner, header) +} + +// writeInlineBody writes an inline behavior's block by its kind: an activity's +// full body, an opaque body's statements or a comment, nothing otherwise. +func (m *migration) writeInlineBody(kw string, b, owner *sysmlv1.Element, header string) bool { switch b.Type { case "Activity": m.w.block(header, func() { @@ -657,6 +614,71 @@ func (m *migration) inlineBehavior(kw string, b, owner *sysmlv1.Element) bool { return false } +// referencedBehavior writes `kw : ref` for a behavior written elsewhere, binding +// its context and signal-carried parameters where it can and reporting why not. +func (m *migration) referencedBehavior(kw string, b, owner *sysmlv1.Element) bool { + if !m.written(b) { + m.w.lines(commentLines(kw + " " + qualifiedName(b) + " has no v2 declaration")) + m.add(b, Unmapped, "", "the behavior is not written; "+describe(owner)+" names it as its "+kw) + return false + } + if cat, _ := m.classify(b); cat != catActionDef { + m.w.lines(commentLines(kw + " " + qualifiedName(b) + " is written as a " + cat.keyword() + ", which no state runs")) + m.downgrade(b, describe(owner)+" names it as its "+kw+", which a "+cat.keyword()+" cannot be") + return false + } + var ins []string + note := "also run as the " + kw + " of " + describe(owner) + if c := m.contextOf(b); c != nil { + expr, cnote := m.contextBinding(c, classifierOf(owner), "this") + if expr == "" { + m.w.lines(commentLines(kw + " " + qualifiedName(b) + notRun + cnote)) + m.downgrade(b, "not run as the "+kw+" of "+describe(owner)+": "+cnote) + m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+notRun+cnote) + return false + } + ins = append(ins, "in "+writeName(c.name)+" = "+expr) + note = joinNotes(note, cnote) + } + if params := inParameters(b); len(params) > 0 && owner.Type != "Transition" { + var ok bool + ins, note, ok = m.parameterIns(kw, b, owner, params, ins, note) + if !ok { + return false + } + } + line := kw + " : " + m.ref(b, owner) + ";" + if len(ins) > 0 { + line = kw + " : " + m.ref(b, owner) + " { " + strings.Join(ins, "; ") + "; }" + } + m.w.line(line) + m.downgrade(b, note) + return true +} + +// parameterIns binds a referenced behavior's parameters: the carrier's signal +// attributes when it has one, otherwise it reports what nothing supplies. +func (m *migration) parameterIns(kw string, b, owner *sysmlv1.Element, params []*sysmlv1.Element, ins []string, note string) ([]string, string, bool) { + why := performsIts + kw + " with no arguments; " + m.carrierWhy(owner, kw) + bound := m.carrierBindings(owner, b) + switch { + case bound != nil && kw != exitAction: + for _, p := range params { + ins = append(ins, m.parameterBinding(p, m.nameFor(p), bound[p])) + } + return ins, joinNotes(note, "its parameters take the attributes of the signal the transitions into the state accept"), true + case slices.IndexFunc(params, requiresValue) >= 0: + p := params[slices.IndexFunc(params, requiresValue)] + why = "its parameter " + m.nameFor(p) + " must hold a value that nothing supplies: " + why + m.w.lines(commentLines(kw + " " + qualifiedName(b) + notRun + why)) + m.downgrade(b, "not run as the "+kw+" of "+describe(owner)+": "+why) + m.add(owner, Approximated, "", "its "+kw+" "+qualifiedName(b)+notRun+why) + return ins, note, false + default: + return ins, joinNotes(note, "its parameters take no value: "+why), true + } +} + // path names vertex v from region s.r: its name when the region holds it, else // its name qualified from the state def down, which resolves from any region // of the machine; false for a vertex of another machine or one not written. @@ -787,30 +809,10 @@ func (s *stateRegion) connection(t, v *sysmlv1.Element, role string) (string, bo // transition writes a transition: one per trigger, since a v2 transition // accepts one, sharing the guard and effect. func (s *stateRegion) transition(t *sysmlv1.Element) { - src, tgt := s.m.model.Ref(t, "source"), s.m.model.Ref(t, "target") - internal := t.Attrs["kind"] == "internal" - if internal && tgt == nil && len(s.m.model.Unresolved(t, "target")) == 0 { - // An internal transition stays in its source; some tools write it with no target. - tgt = src - } - if src == nil || tgt == nil { - s.m.unmapped(t, joinNotes(s.m.dangling(t, "source", "target"), "the transition lacks an end")) - return - } - if pseudoKind(src) == "initial" { - // Written as the region's entry. + src, tgt, internal, ok := s.transitionEnds(t) + if !ok { return } - if internal { - if src.Type != "State" { - s.m.unmapped(t, "the source "+describe(src)+isA+kindOf(src)+", and only a state has an internal transition") - return - } - if tgt != src { - s.m.unmapped(t, "an internal transition targets "+describe(tgt)+", not its source "+describe(src)+"; whether it stays or moves cannot be told") - return - } - } from, ok := s.source(t, src) if !ok { s.m.unmapped(t, "the source "+describe(src)+isA+kindOf(src)+outsideMachine) @@ -824,29 +826,95 @@ func (s *stateRegion) transition(t *sysmlv1.Element) { } } triggers := t.Owned("trigger") - var notes []string + notes, done := s.kindNotes(t, src, internal, len(triggers), from) + if done { + return + } + guard, gnote := s.guard(t, src) + eff := firstOwned(t, "effect") + if gnote != "" { + notes = append(notes, gnote) + } + accepts, notes, info, written := s.transitionAccepts(t, triggers, eff, tgt, notes) + if len(triggers) > 0 && len(accepts) == 0 { + s.m.w.lines(commentLines("transition " + describe(t) + " from " + from + " to " + to + " not migrated — " + strings.Join(notes, "; "))) + s.m.add(t, Unmapped, "", "every trigger is dropped, so the transition would fire at once: "+strings.Join(notes, "; ")) + return + } + if len(accepts) == 0 { + accepts = []acceptance{{}} + if eff != nil { + s.m.unbound(eff, "the transition accepts no signal") + } + } else if written > 1 { + notes = append(notes, "written as "+strconv.Itoa(written)+" transitions, one per trigger") + } + tname := "" + if s.m.nameOf(t) != "" { + tname = freshIn(s.used, s.m.nameOf(t)) + } + s.writeAccepts(t, accepts, tname, guard, eff, from, to) + note := strings.Join(notes, "; ") + s.m.add(t, verdictFor(note), tname, joinNotes(note, strings.Join(info, "; "))) +} + +// kindNotes notes how an internal or local transition's semantics change in +// v2; done reports an internal transition with no trigger, which is unmapped. +func (s *stateRegion) kindNotes(t, src *sysmlv1.Element, internal bool, triggers int, from string) (notes []string, done bool) { switch { case internal: - if len(triggers) == 0 { + if triggers == 0 { s.m.unmapped(t, "an internal transition without a trigger has no v2 form: a self transition would fire again on every re-entry") - return + return nil, true } if !s.m.reentryObservable(src) { s.m.add(t, Mapped, "", "an internal transition is written as a self transition; "+from+" has no entry, exit or do behavior and no substates, so re-entering it is not observable") - break + return nil, false } - notes = append(notes, "an internal transition is written as a self transition, which exits and re-enters "+from+" where v1 stayed in it, running its exit and entry behaviors") + return []string{"an internal transition is written as a self transition, which exits and re-enters " + from + " where v1 stayed in it, running its exit and entry behaviors"}, false case t.Attrs["kind"] == "local": - notes = append(notes, "a local transition is written external: the composite state "+from+" exits and re-enters where v1 stayed in it, running its exit and entry behaviors") + return []string{"a local transition is written external: the composite state " + from + " exits and re-enters where v1 stayed in it, running its exit and entry behaviors"}, false } - guard, gnote := s.guard(t, src) - eff := firstOwned(t, "effect") + return nil, false +} + +// transitionEnds resolves a transition's source and target, checking the ends +// exist, an initial source is skipped, and an internal one stays in its source. +// False means the transition is done or unmapped. +func (s *stateRegion) transitionEnds(t *sysmlv1.Element) (src, tgt *sysmlv1.Element, internal, ok bool) { + src, tgt = s.m.model.Ref(t, "source"), s.m.model.Ref(t, "target") + internal = t.Attrs["kind"] == "internal" + if internal && tgt == nil && len(s.m.model.Unresolved(t, "target")) == 0 { + // An internal transition stays in its source; some tools write it with no target. + tgt = src + } + if src == nil || tgt == nil { + s.m.unmapped(t, joinNotes(s.m.dangling(t, "source", "target"), "the transition lacks an end")) + return nil, nil, internal, false + } + if pseudoKind(src) == "initial" { + // Written as the region's entry. + return nil, nil, internal, false + } + if internal { + if src.Type != "State" { + s.m.unmapped(t, "the source "+describe(src)+isA+kindOf(src)+", and only a state has an internal transition") + return nil, nil, internal, false + } + if tgt != src { + s.m.unmapped(t, "an internal transition targets "+describe(tgt)+", not its source "+describe(src)+"; whether it stays or moves cannot be told") + return nil, nil, internal, false + } + } + return src, tgt, internal, true +} + +// transitionAccepts writes one acceptance per usable trigger, noting the ones +// dropped; returns the acceptances, updated notes and infos, and how many were written. +func (s *stateRegion) transitionAccepts(t *sysmlv1.Element, triggers []*sysmlv1.Element, eff, tgt *sysmlv1.Element, notes []string) ([]acceptance, []string, []string, int) { var accepts []acceptance var info []string written := 0 - if gnote != "" { - notes = append(notes, gnote) - } for _, tr := range triggers { a, note, ok := s.triggerAccept(t, tr, eff, tgt) if !ok { @@ -862,23 +930,12 @@ func (s *stateRegion) transition(t *sysmlv1.Element) { s.m.add(tr, verdictFor(note), "", joinNotes(note, rinfo)) accepts = append(accepts, routes...) } - if len(triggers) > 0 && len(accepts) == 0 { - s.m.w.lines(commentLines("transition " + describe(t) + " from " + from + " to " + to + " not migrated — " + strings.Join(notes, "; "))) - s.m.add(t, Unmapped, "", "every trigger is dropped, so the transition would fire at once: "+strings.Join(notes, "; ")) - return - } - if len(accepts) == 0 { - accepts = []acceptance{{}} - if eff != nil { - s.m.unbound(eff, "the transition accepts no signal") - } - } else if written > 1 { - notes = append(notes, "written as "+strconv.Itoa(written)+" transitions, one per trigger") - } - tname := "" - if s.m.nameOf(t) != "" { - tname = freshIn(s.used, s.m.nameOf(t)) - } + return accepts, notes, info, written +} + +// writeAccepts writes one transition line per acceptance, each with the guard, +// an effect body when there is one, and the target. +func (s *stateRegion) writeAccepts(t *sysmlv1.Element, accepts []acceptance, tname, guard string, eff *sysmlv1.Element, from, to string) { for i, accept := range accepts { line := "transition " if tname != "" { @@ -895,8 +952,6 @@ func (s *stateRegion) transition(t *sysmlv1.Element) { } s.m.w.line(line + " then " + to + ";") } - note := strings.Join(notes, "; ") - s.m.add(t, verdictFor(note), tname, joinNotes(note, strings.Join(info, "; "))) } // routes writes the acceptances a trigger stands for: as read when taken from the object itself, diff --git a/internal/translate/migrate/swimlane.go b/internal/translate/migrate/swimlane.go index 4af78ba4f6..f14a04a22d 100644 --- a/internal/translate/migrate/swimlane.go +++ b/internal/translate/migrate/swimlane.go @@ -214,41 +214,7 @@ func (m *migration) resolveLane(l *lane, ctx *sysmlv1.Element) { } l.represents = r if r.Type == "Property" || r.Type == "Port" { - owner := r.Parent - l.typ = m.model.Ref(r, "type") - name := writeName(m.nameOf(r)) - switch { - case !m.written(r) || m.nameOf(r) == "": - l.note = "the property " + qualifiedName(r) + " it represents has no v2 declaration" - case unreadableBounds(r): - l.note = partRepresents + qualifiedName(r) + butNote + boundsNote(r) - case l.parent != nil && l.parent.expr != "" && l.parent.typ != nil && m.hasFeature(l.parent.typ, r): - l.expr = l.parent.expr + "." + name - l.plural = l.parent.plural || manyValued(r) - l.note = partRepresents + m.nameOf(r) + " of the enclosing partition's object, read as " + l.expr - case ctx == nil: - l.note = "the activity is in no classifier whose object could hold " + qualifiedName(r) - case m.hasFeature(ctx, r): - l.expr = "this." + name - l.plural = manyValued(r) - l.note = "the partition represents the context's " + m.nameOf(r) + ", read as " + l.expr - default: - if path, plural, unread := m.partPath(ctx, owner); unread != nil { - l.note = partRepresents + qualifiedName(r) + " through the part " + qualifiedName(unread) + butNote + boundsNote(unread) - } else if path != "" { - l.expr = "this." + path + "." + name - l.plural = plural || manyValued(r) - l.note = partRepresents + qualifiedName(r) + ", read as " + l.expr - } else { - l.note = "no part of " + qualifiedName(ctx) + " is a " + qualifiedName(owner) + ", which holds the represented " + m.nameOf(r) - } - } - if l.typ == nil && l.expr != "" { - l.note += "; the property has no type, so no name resolves through it" - } - if l.plural { - l.note += "; it is a collection, so names read through it are collections and are not assigned" - } + m.laneFeatureObject(l, r, ctx) return } l.typ = r @@ -278,6 +244,46 @@ func (m *migration) resolveLane(l *lane, ctx *sysmlv1.Element) { } } +// laneFeatureObject resolves a lane representing a property or port: the read +// expression, its type, and a note saying how it was found or why not. +func (m *migration) laneFeatureObject(l *lane, r, ctx *sysmlv1.Element) { + owner := r.Parent + l.typ = m.model.Ref(r, "type") + name := writeName(m.nameOf(r)) + switch { + case !m.written(r) || m.nameOf(r) == "": + l.note = "the property " + qualifiedName(r) + " it represents has no v2 declaration" + case unreadableBounds(r): + l.note = partRepresents + qualifiedName(r) + butNote + boundsNote(r) + case l.parent != nil && l.parent.expr != "" && l.parent.typ != nil && m.hasFeature(l.parent.typ, r): + l.expr = l.parent.expr + "." + name + l.plural = l.parent.plural || manyValued(r) + l.note = partRepresents + m.nameOf(r) + " of the enclosing partition's object, read as " + l.expr + case ctx == nil: + l.note = "the activity is in no classifier whose object could hold " + qualifiedName(r) + case m.hasFeature(ctx, r): + l.expr = "this." + name + l.plural = manyValued(r) + l.note = "the partition represents the context's " + m.nameOf(r) + ", read as " + l.expr + default: + if path, plural, unread := m.partPath(ctx, owner); unread != nil { + l.note = partRepresents + qualifiedName(r) + " through the part " + qualifiedName(unread) + butNote + boundsNote(unread) + } else if path != "" { + l.expr = "this." + path + "." + name + l.plural = plural || manyValued(r) + l.note = partRepresents + qualifiedName(r) + ", read as " + l.expr + } else { + l.note = "no part of " + qualifiedName(ctx) + " is a " + qualifiedName(owner) + ", which holds the represented " + m.nameOf(r) + } + } + if l.typ == nil && l.expr != "" { + l.note += "; the property has no type, so no name resolves through it" + } + if l.plural { + l.note += "; it is a collection, so names read through it are collections and are not assigned" + } +} + // partPath finds the one chain of composite parts, of any length, from // classifier c to an object of classifier target; "" when none or several // exist. plural reports whether any part on the chain holds several objects; diff --git a/internal/translate/migrate/translate.go b/internal/translate/migrate/translate.go index cedf9d1232..74e3e34d8d 100644 --- a/internal/translate/migrate/translate.go +++ b/internal/translate/migrate/translate.go @@ -91,112 +91,161 @@ func (m *migration) lanesAround(e *sysmlv1.Element) (*lanes, *sysmlv1.Element) { func (s *bodyScope) feature(path []string, write bool) (opaqueRef, *refusal) { m := s.m full := strings.Join(path, ".") - var expr string - var f *sysmlv1.Element - var plural bool // whether the objects the name reads through are a collection - var carrier string // the first such collection + a := s.featureAnchor(path, write) + if a.refusal != nil { + return opaqueRef{}, a.refusal + } + if a.res != nil { + return *a.res, nil + } + expr, f, plural, carrier := a.expr, a.f, a.plural, a.carrier + expr, f, plural, carrier, r := s.featureSteps(path, full, expr, f, plural, carrier) + if r != nil { + return opaqueRef{}, r + } + if unreadableBounds(f) { + return opaqueRef{}, boundsRefusal(f, full) + } + if dir, _ := parameterDirection(f); write && f.Type == "Parameter" && dir == "in" { + return opaqueRef{}, &refusal{kind: refusedConstruct, token: full, why: "an in parameter is not assigned"} + } + if write && plural { + return opaqueRef{}, &refusal{kind: refusedConstruct, token: full, + why: carrier + " is a collection, so the assignment would write through several objects"} + } + if s.lane != nil && s.viaLane { + m.useLane(s.scope, s.lane) + } + return opaqueRef{ + expr: expr, + scalar: m.scalarBase(m.typedAs(f)), + object: m.nonScalar(m.typedAs(f)), + plural: plural || manyValued(f), + }, nil +} + +// featureAnchor is what a dotted name's first step resolved to — the object and +// expression it reads — or the whole answer (res or refusal) when the name ends there. +type featureAnchor struct { + expr string + f *sysmlv1.Element + plural bool // whether the objects the name reads through are a collection + carrier string + res *opaqueRef + refusal *refusal +} + +// featureAnchor resolves the first step of path: `this`, a pin, a lane feature or a +// member visible from the scope. +func (s *bodyScope) featureAnchor(path []string, write bool) featureAnchor { + m := s.m + full := strings.Join(path, ".") if path[0] == "this" { - switch { - case s.lane != nil && s.lane.expr != "" && s.lane.typ != nil: - expr, f, plural, carrier = s.lane.expr, s.lane.typ, s.lane.plural, s.lane.expr - s.viaLane = true - case m.contextClassifier(s.scope) != nil: - expr, f = "this", m.contextClassifier(s.scope) - default: - return opaqueRef{}, &refusal{kind: refusedContext, token: "this", - why: "the body is in no classifier and its partition represents no object"} - } - if len(path) == 1 { - if write { - return opaqueRef{}, &refusal{kind: refusedContext, token: "this", why: "the object itself is not assigned"} - } - return opaqueRef{expr: expr, plural: plural}, nil - } - } else if p, d := m.pinNamed(s.scope, path[0]); p != nil { + return s.thisAnchor(path, write) + } + if p, d := m.pinNamed(s.scope, path[0]); p != nil { if write && len(path) == 1 && d.dir == "in" { - return opaqueRef{}, &refusal{kind: refusedConstruct, token: full, why: "an input pin is not assigned"} + return featureAnchor{refusal: &refusal{kind: refusedConstruct, token: full, why: "an input pin is not assigned"}} } - expr, f = writeName(d.name), p - } else { - name := path[0] - if lf := m.laneFeature(s.lane, name); lf != nil { - expr, f, plural, carrier = s.lane.expr+"."+writeName(m.nameOf(lf)), lf, s.lane.plural, s.lane.expr - s.viaLane = true - } else { - visible, hidden := m.visibleFrom(s.scope) - f = visible[name] - // The clock variable is the tool's global; any feature of that name shadows it. - if by, clock := m.clockNames()[name]; clock && f == nil && hidden[name] == nil && len(path) == 1 { - if write { - return opaqueRef{}, &refusal{kind: refusedConstruct, token: name, why: "the simulation clock is read, never assigned"} - } - s.clock = name + ", " + by - return opaqueRef{expr: clockRead, scalar: "Real"}, nil - } - switch { - case f == nil && hidden[name] != nil: - return opaqueRef{}, &refusal{kind: refusedName, token: name, - why: "it is private to " + qualifiedName(hidden[name].Parent)} - case f == nil: - return opaqueRef{}, &refusal{kind: refusedName, token: name, - why: joinNotes("nothing visible from "+qualifiedName(s.scope)+" is called "+name, s.clash)} - case f.Type != "Property" && f.Type != "Port" && f.Type != "Parameter": - return opaqueRef{}, &refusal{kind: refusedName, token: name, - why: "it is " + kindOf(f) + " " + qualifiedName(f) + ", not a feature a body reads"} - } - expr = writeName(m.nameOf(f)) - if m.ownedByClassifier(f, s.scope) { - expr = "this." + expr - } + return featureAnchor{expr: writeName(d.name), f: p} + } + return s.scopeAnchor(path, write) +} + +// thisAnchor resolves `this` to the lane's object when the lane represents one, +// else the context classifier. +func (s *bodyScope) thisAnchor(path []string, write bool) featureAnchor { + m := s.m + var a featureAnchor + switch { + case s.lane != nil && s.lane.expr != "" && s.lane.typ != nil: + a.expr, a.f, a.plural, a.carrier = s.lane.expr, s.lane.typ, s.lane.plural, s.lane.expr + s.viaLane = true + case m.contextClassifier(s.scope) != nil: + a.expr, a.f = "this", m.contextClassifier(s.scope) + default: + return featureAnchor{refusal: &refusal{kind: refusedContext, token: "this", + why: "the body is in no classifier and its partition represents no object"}} + } + if len(path) == 1 { + if write { + return featureAnchor{refusal: &refusal{kind: refusedContext, token: "this", why: "the object itself is not assigned"}} } + return featureAnchor{res: &opaqueRef{expr: a.expr, plural: a.plural}} } + return a +} + +// scopeAnchor resolves the first step of path to a lane feature, the simulation +// clock, or a member visible from the scope. +func (s *bodyScope) scopeAnchor(path []string, write bool) featureAnchor { + m := s.m + name := path[0] + if lf := m.laneFeature(s.lane, name); lf != nil { + s.viaLane = true + return featureAnchor{expr: s.lane.expr + "." + writeName(m.nameOf(lf)), f: lf, plural: s.lane.plural, carrier: s.lane.expr} + } + visible, hidden := m.visibleFrom(s.scope) + f := visible[name] + // The clock variable is the tool's global; any feature of that name shadows it. + if by, clock := m.clockNames()[name]; clock && f == nil && hidden[name] == nil && len(path) == 1 { + if write { + return featureAnchor{refusal: &refusal{kind: refusedConstruct, token: name, why: "the simulation clock is read, never assigned"}} + } + s.clock = name + ", " + by + return featureAnchor{res: &opaqueRef{expr: clockRead, scalar: "Real"}} + } + switch { + case f == nil && hidden[name] != nil: + return featureAnchor{refusal: &refusal{kind: refusedName, token: name, + why: "it is private to " + qualifiedName(hidden[name].Parent)}} + case f == nil: + return featureAnchor{refusal: &refusal{kind: refusedName, token: name, + why: joinNotes("nothing visible from "+qualifiedName(s.scope)+" is called "+name, s.clash)}} + case f.Type != "Property" && f.Type != "Port" && f.Type != "Parameter": + return featureAnchor{refusal: &refusal{kind: refusedName, token: name, + why: "it is " + kindOf(f) + " " + qualifiedName(f) + ", not a feature a body reads"}} + } + expr := writeName(m.nameOf(f)) + if m.ownedByClassifier(f, s.scope) { + expr = "this." + expr + } + return featureAnchor{expr: expr, f: f} +} + +// featureSteps resolves each further step of path as a feature of the last object, +// tracking whether the name reads through a collection. +func (s *bodyScope) featureSteps(path []string, full, expr string, f *sysmlv1.Element, plural bool, carrier string) (string, *sysmlv1.Element, bool, string, *refusal) { + m := s.m for _, step := range path[1:] { if unreadableBounds(f) { - return opaqueRef{}, boundsRefusal(f, full) + return expr, f, plural, carrier, boundsRefusal(f, full) } if !plural && manyValued(f) { plural, carrier = true, expr } typ := m.typedAs(f) if typ == nil { - return opaqueRef{}, &refusal{kind: refusedName, token: full, + return expr, f, plural, carrier, &refusal{kind: refusedName, token: full, why: qualifiedName(f) + " has no type, so no feature " + step} } visible, hidden := m.membersOf(typ, memberAny) next := visible[step] switch { case next == nil && hidden[step] != nil: - return opaqueRef{}, &refusal{kind: refusedName, token: full, + return expr, f, plural, carrier, &refusal{kind: refusedName, token: full, why: step + " is private to " + qualifiedName(hidden[step].Parent)} case next == nil: - return opaqueRef{}, &refusal{kind: refusedName, token: full, + return expr, f, plural, carrier, &refusal{kind: refusedName, token: full, why: qualifiedName(f) + " has no feature " + step} case next.Type != "Property" && next.Type != "Port": - return opaqueRef{}, &refusal{kind: refusedName, token: full, + return expr, f, plural, carrier, &refusal{kind: refusedName, token: full, why: step + " is " + kindOf(next) + ", not a feature a body reads"} } expr += "." + writeName(m.nameOf(next)) f = next } - if unreadableBounds(f) { - return opaqueRef{}, boundsRefusal(f, full) - } - if dir, _ := parameterDirection(f); write && f.Type == "Parameter" && dir == "in" { - return opaqueRef{}, &refusal{kind: refusedConstruct, token: full, why: "an in parameter is not assigned"} - } - if write && plural { - return opaqueRef{}, &refusal{kind: refusedConstruct, token: full, - why: carrier + " is a collection, so the assignment would write through several objects"} - } - if s.lane != nil && s.viaLane { - m.useLane(s.scope, s.lane) - } - return opaqueRef{ - expr: expr, - scalar: m.scalarBase(m.typedAs(f)), - object: m.nonScalar(m.typedAs(f)), - plural: plural || manyValued(f), - }, nil + return expr, f, plural, carrier, nil } // manyValued reports whether feature f is known to hold other than exactly one value. @@ -397,8 +446,23 @@ func (m *migration) clockNames() map[string]string { return m.clocks } m.clocks = map[string]string{} - var configs []*sysmlv1.Element - profiled := false + configs, profiled := m.simulationConfigs() + for name, by := range clockNamers(configs) { + if len(by) == 1 { + m.clocks[name] = "named by the configuration " + qualifiedName(by[0]) + } else { + m.clocks[name] = "named by " + strconv.Itoa(len(by)) + " simulation configurations" + } + } + if profiled && len(m.clocks) == 0 { + m.clocks[defaultClockName] = "the simulation profile's default name" + } + return m.clocks +} + +// simulationConfigs lists the elements carrying a simulation configuration, +// and whether any element applies the simulation profile at all. +func (m *migration) simulationConfigs() (configs []*sysmlv1.Element, profiled bool) { var walk func(e *sysmlv1.Element) walk = func(e *sysmlv1.Element) { for _, s := range e.Stereotypes { @@ -417,6 +481,11 @@ func (m *migration) clockNames() map[string]string { walk(r) } sort.Slice(configs, func(i, j int) bool { return configs[i].ID < configs[j].ID }) + return configs, profiled +} + +// clockNamers tallies which configurations name each clock variable. +func clockNamers(configs []*sysmlv1.Element) map[string][]*sysmlv1.Element { namers := map[string][]*sysmlv1.Element{} for _, e := range configs { for _, s := range e.Stereotypes { @@ -432,15 +501,5 @@ func (m *migration) clockNames() map[string]string { } } } - for name, by := range namers { - if len(by) == 1 { - m.clocks[name] = "named by the configuration " + qualifiedName(by[0]) - } else { - m.clocks[name] = "named by " + strconv.Itoa(len(by)) + " simulation configurations" - } - } - if profiled && len(m.clocks) == 0 { - m.clocks[defaultClockName] = "the simulation profile's default name" - } - return m.clocks + return namers } diff --git a/internal/translate/migrate/values.go b/internal/translate/migrate/values.go index 95cd551f66..f559baaaee 100644 --- a/internal/translate/migrate/values.go +++ b/internal/translate/migrate/values.go @@ -137,49 +137,61 @@ func (m *migration) directValue(v, scope *sysmlv1.Element, want wanted) (expr st case "LiteralNull": return "null", true, "" case "InstanceValue": - inst := m.model.Ref(v, "instance") - if inst == nil { - return "", false, "instance value refers to nothing in the document" - } - if inst.Type == "EnumerationLiteral" && inst.Parent != nil { - return m.ref(inst.Parent, scope) + "::" + writeName(inst.Name), true, "" - } - switch cat, _ := m.classify(inst); cat { - case catValue: - return m.ref(inst, scope), true, "" - case catIndividualDef: - return "", false, individualSubject + qualifiedName(inst) + " is a definition, which is not a v2 value" - } - return "", false, "instance value of a " + inst.Type + " has no v2 expression" + return m.instanceValue(v, scope) case "OpaqueExpression": - body, lang := opaqueBody(v) - if body == "" { - return "", false, "opaque expression has no body" - } - if dialectOf(lang) != dialectNone { - expr, note, refused := m.translatedExpr(body, lang, scope, want) - if refused == nil { - m.noted(valueOwner(v, scope), note) - return expr, true, "" - } - if refused.final(lang) { - return "", false, refused.note() - } - } - refs, ok := exprRefs(body) - if !ok { - return "", false, "opaque expression is not v2 expression syntax" + langNote(lang) - } - if problem := m.invisible(refs, scope); problem != "" { - return "", false, "opaque expression " + problem + langNote(lang) - } - return body, true, "opaque expression copied verbatim" + langNote(lang) + return m.opaqueValue(v, scope, want) case "Expression", "TimeExpression", "Duration", "Interval", "StringExpression": return "", false, "a UML " + v.Type + " tree has no v2 form" } return "", false, "no v2 form for a UML " + v.Type } +// instanceValue writes an instance value: an enumeration literal by qualified +// name, a value by reference, nothing else. +func (m *migration) instanceValue(v, scope *sysmlv1.Element) (expr string, ok bool, note string) { + inst := m.model.Ref(v, "instance") + if inst == nil { + return "", false, "instance value refers to nothing in the document" + } + if inst.Type == "EnumerationLiteral" && inst.Parent != nil { + return m.ref(inst.Parent, scope) + "::" + writeName(inst.Name), true, "" + } + switch cat, _ := m.classify(inst); cat { + case catValue: + return m.ref(inst, scope), true, "" + case catIndividualDef: + return "", false, individualSubject + qualifiedName(inst) + " is a definition, which is not a v2 value" + } + return "", false, "instance value of a " + inst.Type + " has no v2 expression" +} + +// opaqueValue writes an opaque expression: translated when its language is a +// known dialect, else copied verbatim once its references are visible. +func (m *migration) opaqueValue(v, scope *sysmlv1.Element, want wanted) (expr string, ok bool, note string) { + body, lang := opaqueBody(v) + if body == "" { + return "", false, "opaque expression has no body" + } + if dialectOf(lang) != dialectNone { + expr, note, refused := m.translatedExpr(body, lang, scope, want) + if refused == nil { + m.noted(valueOwner(v, scope), note) + return expr, true, "" + } + if refused.final(lang) { + return "", false, refused.note() + } + } + refs, ok := exprRefs(body) + if !ok { + return "", false, "opaque expression is not v2 expression syntax" + langNote(lang) + } + if problem := m.invisible(refs, scope); problem != "" { + return "", false, "opaque expression " + problem + langNote(lang) + } + return body, true, "opaque expression copied verbatim" + langNote(lang) +} + func langNote(lang string) string { if lang == "" { return "" From aa33a75b4b6b39dd4b335fbfac9decf3c1db76c0 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 02:34:45 +0000 Subject: [PATCH 4/7] chore: drop committed Maven build artifacts Co-Authored-By: jason.han --- ...ot.autoconfigure.AutoConfiguration.imports | 1 - .../syson/OpenSysMLAutoConfiguration.class | Bin 2067 -> 0 bytes .../opensysml/syson/OpenSysMLProperties.class | Bin 5323 -> 0 bytes .../syson/export/ElementSerializer.class | Bin 548 -> 0 bytes .../syson/export/ExportedProject$1.class | Bin 1005 -> 0 bytes .../ExportedProject$DocumentRange.class | Bin 2204 -> 0 bytes .../ExportedProject$ExportMessage.class | Bin 2004 -> 0 bytes .../syson/export/ExportedProject.class | Bin 6981 -> 0 bytes .../syson/export/ProjectExporter.class | Bin 403 -> 0 bytes .../syson/export/ProjectTextExporter.class | Bin 11953 -> 0 bytes .../syson/export/SysONElementSerializer.class | Bin 3614 -> 0 bytes .../ElementIndex$IndexedElement.class | Bin 2235 -> 0 bytes .../syson/identity/ElementIndex.class | Bin 4129 -> 0 bytes .../OpenSysMLTreeItemPaletteCustomizer.class | Bin 5553 -> 0 bytes .../syson/run/DiagnosticMapper$1.class | Bin 970 -> 0 bytes .../syson/run/DiagnosticMapper$Mapped.class | Bin 1993 -> 0 bytes .../syson/run/DiagnosticMapper.class | Bin 4458 -> 0 bytes .../MutationRunWithOpenSysMLDataFetcher.class | Bin 6465 -> 0 bytes .../opensysml/syson/run/RunDiagnostic.class | Bin 2587 -> 0 bytes .../opensysml/syson/run/RunInstance.class | Bin 2296 -> 0 bytes .../opensysml/syson/run/RunNamedValue.class | Bin 1631 -> 0 bytes .../opensysml/syson/run/RunOperation.class | Bin 1808 -> 0 bytes .../opensysml/syson/run/RunOutcome.class | Bin 2918 -> 0 bytes .../syson/run/RunResult$Builder.class | Bin 4296 -> 0 bytes .../run/RunResult$MappedDiagnostic.class | Bin 2004 -> 0 bytes .../opensysml/syson/run/RunResult.class | Bin 5756 -> 0 bytes .../opensysml/syson/run/RunResultStore.class | Bin 6208 -> 0 bytes .../opensysml/syson/run/RunVerdict.class | Bin 2176 -> 0 bytes .../run/RunWithOpenSysMLEventHandler.class | Bin 7373 -> 0 bytes .../syson/run/RunWithOpenSysMLInput.class | Bin 4054 -> 0 bytes .../syson/run/RunWithOpenSysMLService$1.class | Bin 1376 -> 0 bytes .../RunWithOpenSysMLService$ResultParts.class | Bin 14564 -> 0 bytes .../syson/run/RunWithOpenSysMLService.class | Bin 19242 -> 0 bytes .../run/RunWithOpenSysMLSuccessPayload.class | Bin 2491 -> 0 bytes .../opensysml/syson/run/ValueText.class | Bin 6957 -> 0 bytes .../OpenSysMLValidationService.class | Bin 4670 -> 0 bytes .../target/classes/schema/opensysml.graphqls | 100 ------------------ .../compile/default-compile/createdFiles.lst | 35 ------ .../compile/default-compile/inputFiles.lst | 25 ----- .../default-testCompile/createdFiles.lst | 18 ---- .../default-testCompile/inputFiles.lst | 17 --- ...e.opensysml.syson.DiagnosticMapperTest.xml | 57 ---------- ...nmbee.opensysml.syson.ElementIndexTest.xml | 56 ---------- ...utationRunWithOpenSysMLDataFetcherTest.xml | 62 ----------- ...l.syson.OpenSysMLAutoConfigurationTest.xml | 57 ---------- ...pensysml.syson.OpenSysMLPropertiesTest.xml | 58 ---------- ...OpenSysMLTreeItemPaletteCustomizerTest.xml | 57 ---------- ...l.syson.OpenSysMLValidationServiceTest.xml | 59 ----------- ...pensysml.syson.ProjectTextExporterTest.xml | 61 ----------- ...bee.opensysml.syson.RunResultStoreTest.xml | 57 ---------- ...syson.RunWithOpenSysMLEventHandlerTest.xml | 57 ---------- ....syson.RunWithOpenSysMLIntegrationTest.xml | 56 ---------- ...on.RunWithOpenSysMLServiceAnalysisTest.xml | 57 ---------- ...ysml.syson.RunWithOpenSysMLServiceTest.xml | 66 ------------ ...openmbee.opensysml.syson.ValueTextTest.xml | 57 ---------- ...nsysml.syson.run.RunVerdictSummaryTest.xml | 61 ----------- ...e.opensysml.syson.DiagnosticMapperTest.txt | 4 - ...nmbee.opensysml.syson.ElementIndexTest.txt | 4 - ...utationRunWithOpenSysMLDataFetcherTest.txt | 4 - ...l.syson.OpenSysMLAutoConfigurationTest.txt | 4 - ...pensysml.syson.OpenSysMLPropertiesTest.txt | 4 - ...OpenSysMLTreeItemPaletteCustomizerTest.txt | 4 - ...l.syson.OpenSysMLValidationServiceTest.txt | 4 - ...pensysml.syson.ProjectTextExporterTest.txt | 4 - ...bee.opensysml.syson.RunResultStoreTest.txt | 4 - ...syson.RunWithOpenSysMLEventHandlerTest.txt | 4 - ....syson.RunWithOpenSysMLIntegrationTest.txt | 4 - ...on.RunWithOpenSysMLServiceAnalysisTest.txt | 4 - ...ysml.syson.RunWithOpenSysMLServiceTest.txt | 4 - ...openmbee.opensysml.syson.ValueTextTest.txt | 4 - ...nsysml.syson.run.RunVerdictSummaryTest.txt | 4 - .../target/test-classes/models/broken.sysml | 5 - .../target/test-classes/models/choice.sysml | 24 ----- .../target/test-classes/models/counter.sysml | 4 - .../target/test-classes/models/req.sysml | 7 -- .../target/test-classes/models/vehicle.sysml | 3 - .../syson/DiagnosticMapperTest.class | Bin 3451 -> 0 bytes .../opensysml/syson/ElementIndexTest.class | Bin 1779 -> 0 bytes .../opensysml/syson/FakeElement$1.class | Bin 1394 -> 0 bytes .../opensysml/syson/FakeElement.class | Bin 3984 -> 0 bytes ...ationRunWithOpenSysMLDataFetcherTest.class | Bin 5893 -> 0 bytes .../OpenSysMLAutoConfigurationTest.class | Bin 5092 -> 0 bytes .../syson/OpenSysMLPropertiesTest.class | Bin 2323 -> 0 bytes ...enSysMLTreeItemPaletteCustomizerTest.class | Bin 853 -> 0 bytes .../OpenSysMLValidationServiceTest.class | Bin 4805 -> 0 bytes .../syson/ProjectTextExporterTest.class | Bin 13420 -> 0 bytes .../opensysml/syson/RunResultStoreTest.class | Bin 4588 -> 0 bytes .../RunWithOpenSysMLEventHandlerTest.class | Bin 1998 -> 0 bytes .../RunWithOpenSysMLIntegrationTest.class | Bin 12327 -> 0 bytes .../RunWithOpenSysMLServiceAnalysisTest.class | Bin 7126 -> 0 bytes .../syson/RunWithOpenSysMLServiceTest.class | Bin 8460 -> 0 bytes .../opensysml/syson/ServiceBinary.class | Bin 2728 -> 0 bytes .../opensysml/syson/ValueTextTest.class | Bin 1293 -> 0 bytes .../syson/run/RunVerdictSummaryTest.class | Bin 7704 -> 0 bytes .../spring/graphql/QueryDataFetcher.class | Bin 583 -> 0 bytes .../collaborative/api/ChangeDescription.class | Bin 1970 -> 0 bytes .../collaborative/api/ChangeKind.class | Bin 786 -> 0 bytes .../api/IEditingContextEventHandler.class | Bin 1108 -> 0 bytes .../api/IEditingContextEventProcessor.class | Bin 501 -> 0 bytes ...EditingContextEventProcessorRegistry.class | Bin 389 -> 0 bytes .../collaborative/dto/KeyBinding.class | Bin 2043 -> 0 bytes .../dto/palette/SingleClickTreeItemTool.class | Bin 2908 -> 0 bytes .../api/ITreeItemPaletteCustomizer.class | Bin 898 -> 0 bytes .../components/core/api/ErrorPayload.class | Bin 3948 -> 0 bytes .../components/core/api/IEditingContext.class | Bin 465 -> 0 bytes .../core/api/IIdentityService.class | Bin 277 -> 0 bytes .../sirius/components/core/api/IInput.class | Bin 217 -> 0 bytes .../core/api/IObjectSearchService.class | Bin 480 -> 0 bytes .../sirius/components/core/api/IPayload.class | Bin 170 -> 0 bytes .../core/api/IValidationService.class | Bin 600 -> 0 bytes .../components/core/api/SuccessPayload.class | Bin 2389 -> 0 bytes .../emf/services/api/IEMFEditingContext.class | Bin 1598 -> 0 bytes .../sirius/components/events/ICause.class | Bin 384 -> 0 bytes .../IDataFetcherWithFieldCoordinates.class | Bin 1467 -> 0 bytes .../api/IEditingContextDispatcher.class | Bin 577 -> 0 bytes .../graphql/api/IExceptionWrapper.class | Bin 1962 -> 0 bytes .../palette/dto/IPaletteEntry.class | Bin 185 -> 0 bytes .../sirius/components/palette/dto/ITool.class | Bin 335 -> 0 bytes .../palette/dto/Palette$Builder.class | Bin 1809 -> 0 bytes .../components/palette/dto/Palette.class | Bin 2877 -> 0 bytes .../components/representations/Message.class | Bin 1947 -> 0 bytes .../representations/MessageLevel.class | Bin 1408 -> 0 bytes .../sirius/components/trees/Tree.class | Bin 593 -> 0 bytes .../sirius/components/trees/TreeItem.class | Bin 596 -> 0 bytes .../trees/description/TreeDescription.class | Bin 468 -> 0 bytes .../org/eclipse/syson/sysml/Element.class | Bin 371 -> 0 bytes .../sysml/impl/MembershipCacheAdapter.class | Bin 375 -> 0 bytes .../textual/SysMLElementSerializer.class | Bin 1434 -> 0 bytes .../SysMLSerializingOptions$Builder.class | Bin 2031 -> 0 bytes .../textual/SysMLSerializingOptions.class | Bin 2603 -> 0 bytes .../textual/utils/FileNameDeresolver.class | Bin 847 -> 0 bytes .../textual/utils/INameDeresolver.class | Bin 339 -> 0 bytes .../services/textual/utils/Severity.class | Bin 1444 -> 0 bytes .../services/textual/utils/Status.class | Bin 2736 -> 0 bytes .../sysml/metamodel/util/ElementUtil.class | Bin 815 -> 0 bytes .../target/maven-archiver/pom.properties | 5 - .../compile/default-compile/createdFiles.lst | 41 ------- .../compile/default-compile/inputFiles.lst | 39 ------- ...ensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar | Bin 36799 -> 0 bytes 139 files changed, 1262 deletions(-) delete mode 100644 editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLProperties.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ElementSerializer.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$1.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectExporter.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectTextExporter.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/SysONElementSerializer.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/menu/OpenSysMLTreeItemPaletteCustomizer.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper$1.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper$Mapped.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunDiagnostic.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunInstance.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunNamedValue.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOperation.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOutcome.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$Builder.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResultStore.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunVerdict.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLInput.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$1.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLSuccessPayload.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/ValueText.class delete mode 100644 editors/syson/backend/target/classes/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class delete mode 100644 editors/syson/backend/target/classes/schema/opensysml.graphqls delete mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt delete mode 100644 editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt delete mode 100644 editors/syson/backend/target/test-classes/models/broken.sysml delete mode 100644 editors/syson/backend/target/test-classes/models/choice.sysml delete mode 100644 editors/syson/backend/target/test-classes/models/counter.sysml delete mode 100644 editors/syson/backend/target/test-classes/models/req.sysml delete mode 100644 editors/syson/backend/target/test-classes/models/vehicle.sysml delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/DiagnosticMapperTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ElementIndexTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement$1.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/MutationRunWithOpenSysMLDataFetcherTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfigurationTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLPropertiesTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ProjectTextExporterTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunResultStoreTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLIntegrationTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ServiceBinary.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ValueTextTest.class delete mode 100644 editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeDescription.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeKind.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/dto/KeyBinding.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/palette/api/ITreeItemPaletteCustomizer.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/ErrorPayload.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IEditingContext.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IIdentityService.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IInput.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IObjectSearchService.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IPayload.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IValidationService.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/SuccessPayload.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/emf/services/api/IEMFEditingContext.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/events/ICause.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IDataFetcherWithFieldCoordinates.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/IPaletteEntry.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/ITool.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette$Builder.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/Message.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/MessageLevel.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/Tree.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/TreeItem.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/description/TreeDescription.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/Element.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/FileNameDeresolver.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class delete mode 100644 editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/util/ElementUtil.class delete mode 100644 editors/syson/syson-api-stubs/target/maven-archiver/pom.properties delete mode 100644 editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 editors/syson/syson-api-stubs/target/opensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar diff --git a/editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index aa09e231d9..0000000000 --- a/editors/syson/backend/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -org.openmbee.opensysml.syson.OpenSysMLAutoConfiguration diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class deleted file mode 100644 index 30b7042d85c5d613be2b68bcb1d282ad4b5f1d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2067 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 Mn-P8``X>_q1sV>Pt^fc4 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ElementSerializer.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ElementSerializer.class deleted file mode 100644 index cb268696a958da326139374f4d38bf92de1f7d24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmbu6%}N77497ET-P-!qliBvzx{wGs@l;B`L}#anO%NV~HIh&7Bt9%XML9HR(Zw7| zE2E!~y3i3YSg4hfM!8bnOcz*00lo0`MZn~6T-V0J=w(2OcFwUUl*9ISHg58(sEwRg zu85i&UV0ZQi0BFC_*^j;_;8F!5c z&5==wwH+CDM9Mp=Eo5kf?#GcZVJZ&O9+zP+jim`&qAzru9x>$lT=s-vs4Oh*)c(2P z!vgXscqsZf1)pKXR#aV)basVs!O4Ut(~85c(rH+BPPAWWbs(ZNxXVxrT5sYs+TY~e zfJy`dm4W-u+KvofPBi1=yq(C~UTxN^^$p9- z`MBVwTrWR;<(Nx8E?XvBtydZzt}v8_WgENp(HQcN=n|4Red4-rQT7_00K<4KPDH&& z3(zn5t|VrnrXnu4xQ;CzkYlZsN3ZF<2e{Z$JspWkZ2y@2V@1ohJ(VsekyIv5_BKVj zui74NGu;1+mDBWfVbW*HkPyF`BtoxAZj3Occ{-?hI)7H0u_t9CVy@yE`GC+{WGDhE zpTUm57C*xKV85|XIFoI>L-x6Y(*#F{aF$?h2rm-!9DI)~3Yf$+&S8dn+#r7w_pn0# z0ame2K7;GjFXy_>Q3hydpe$et`E8FfHh(u%bHQaT;uiTVmdM_5%o3K#7o8>wO8Fl* CR|U%e diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class deleted file mode 100644 index b35fd0be1dd0c1cdf9979bb59fea644fdeec9df1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2204 zcmb_eZBrXn6n-uwY@myfG)0Mhu`R91qFrlItBb8IFA|N|X*=lXrzN=q+iv#8-J6d6 zPkyj7GS2Y9AK;I2eD3Z7iy&o`57~3?x##^n=S=?mYxfTTpQAH@5sX?W*(hU7VEUQ= z!goVI+HxPuu8MmCV~ar)=z9XA&DO>^Dj2sgVdETZfd?wya@9aa{Y@#;L-I1|hc3S= za^=qh6>E1TC9?M@R?lQt&n>I&urDM1m|moS-OKOmexKJ`=OBb9Iu4>O&p3U<#uTOn z#uM$wx)Vec6>alUvvJ}=bhqs%+e@m)oL0}oUE5f{YU3KNvw`xb zp&up!-=Br;LMGpCntpn%9|Z0;3;euo?e=SH-r5i-Wr&;_&m14gwaG{uGA$y??<2HX1xK3-Y z!=1py6E%#xay2kn*Z(mtx6C*YBI`2IYbwzeJ`%X|ALfog*c<8Thf3*0$NnHIKvKb{ z0ym3;=av+yw(v5?GR&h~fDfE-1 z$jD*(<543;?}ui0zp-{Zie#Lcltj(sp`B)7P2k2s4Nl0(!dC*9PZnk4vI5{XSKA0D zyM&tAzdY50oCnZ$QEecj=FQKCH!%63%;uSHeTX|LUBJhr4fZ`lWQNBKjTsg{;d_nl?h#uR+{I_`u*m-&D=B}3 PyalXc7GI)`uQB^K9-I1e diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class deleted file mode 100644 index 9ef6d14a701fe04aa4466b1f30e8f55637411bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2004 zcmb_dTTc@~6#k}Cw!oG`1r$;6g4&kLig+)gfD%XwUV}!TmUaRQ+nsf0OXNTKAc@3; z2Y-M+%6MjXkwuUg;GsP;XXboozH{53zjl5Ac#N4=q;SSSlZiB%89LVN4cl^UZ^e4e zt3uWonkO932__lN6pBkN$e_hQtBE$43{yg`Si#UWF9~fRm(8tVC z0y9oVafzWRib$^Fczm%zbtK=~%Pz$zUlCQ?U9zR4_p!1mSapcw%qe7xihY3xtD^SO zmUf*7ToQ0s;gBSTr9aQmT}V(!goO$H+PzYXj~FHi?F2>5(E3I+WR=f4Iv`ztHPWc| zNM*IiRWK)1U|^JC{1_cc#k1S&9n(StDv-7x#YSatn;{#vXgThy9JLtzvbkp5YsGy$ zF!0dCBa|5i_JSZAUf|TZ6$K+kV`y34b-=KdjHlymh;>d~ty3~*do`DFpf)925)s!GQXgiM;uxVBPBMU3(BAV|{tzIOhTQghz(xC|jV)k}8YFf;Ik z;rd<-j^JcqilP7LtCW{002rh3mZD})A+HCoo?&{{k!%J{P+X#ue%dYQX-+a%`VLka z+J;dY-bQwdR4EL^*XbCSX?;1miYvHEJFV5wEL>^u6t2;_B}Hm|2z1ie9Ha}{(-=v8 z)hO+d9$#sB&_je~#2z|n3|>FPyc_uPU*>(dK~A*y36eSdjDnL6W#ekFoT;Y z&;vBBG@}h@(}rUFCX1w|lrDXPaTK9+jL0Y|yYWaGXaC1IjS~4vVF<&a9Dzl$oitH` jqx9YibqsgWL?tkWaoi#DI{hiykI)yq7n693Y4rXEJ=gkP diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ExportedProject.class deleted file mode 100644 index 179ead1e54e74ac61f4e16f455695ccdc188a388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6981 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 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectExporter.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectExporter.class deleted file mode 100644 index 94fdf57f47663d0e4b8ab024176a364f33712b48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmaiwu};G<5QgsxO`w3pz{11|3mzCF280r+QY$Ku*d6B@u5#?icB;aoG4KF96snU} zLSkXL^M7ak`u_X=`TPQadpJvBgm7nFEo@7sDT#)MfA@_Rv05W&(^?nA!r2w6kPnJn z3Wo^iE4h|JOH+%dvfm;kyYC1e*R$T1l;+lx@a(wrLfNLZhD`8+nx*jM)~v`2*|M1C z^CGV}u&E!d3A72>&EWAL+McP}BW4k7PT|c~3+ZG-ft*K3)y@-P@?txus9;S97k_fy z_K^@SpF0z{p;z`?YI-on1{v6z=yWyvja_s`^<$~0k=QMzqAWo`IEeQJz<8uFBvGeP UjS-Gw8^Q5VCvXybzdQxl0`8N1ivR!s diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectTextExporter.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/ProjectTextExporter.class deleted file mode 100644 index b5be0cc521bd44f5fa1cce239d29b305dd3ae7d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11953 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 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/SysONElementSerializer.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/export/SysONElementSerializer.class deleted file mode 100644 index 95c7ea0827f54f60404a53244bc5d3210bf60026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3614 zcmcInT~kv>7=9K4Cke+7K*Wevsaiq6)7IJ#P%0v}XaGwrR{P~4S;)cjk)Cq`V#i&n{RDJlEjp*oNigY-3D1)6x&JR&Ll#XXQ}F%!SgA zqZRc{XvYB!2^|N~A#iH_J7w!ssap^+4Z8OLZ2@UREEvVk%x}%6S%qqMU?{r9dF@n zhN4?>F7U9cBL26jNRi)YC9_v!lPKPye_~3BcXhm{{L^H)8R>?ma;Dn=* zwP1zmEFrB@hB6qfK{W%a3<+y_7sV9;;{0JGb&M&9Y4oMz%}Wgv0{zNXUQW71Ls?kR z1H?#I2t|?IJ+JCDpG;SFabzlPm;hfo>x$O-JG_$(~|Vkrafg6 zg803*840r%0rgxV^L8dJqdi8rD*zkWT>CFeZtb9IGYe>55iA9gJ3)xeB89e6=&USL zE2D`sG?9+nkF-g zWtVYOL0F7Fj$2o2zOcVCTo!Yskh#5;n#DjWbv*02ZBZMG5S}86=7WJj^4`UD`p%e{ zD@3V=I|5gB3OyyvDc4*LPDLYEOlJ+AKt~}EYJ-P{Z;0#VNV%T%y@g_G?H!Y0*2`QY z&{It|KTL^~HS1C#pDFR(|4E6LVbL1kB@j;)8c$WJsW_9Q1`?fC>Ix(#^KNK4a>@!U zV#ko{dc~4QMT@!xIn|2HDE${a|BeyR3epQ1H3l7^S|PesA9Y>n58GxCNK$HRy$?Du z&MuqK!IoRi?6f&f^2^{%j77t#Wr!aO$0?5L7;Js7bJU9$@F}MF#TtvxP_KyVIuJpe zdrx~-ps^tKJ>m2SvAz}TB0fh}(RyW(l8%yX~MK9N|Msio+XU*YYFWMqAjD3 z(2&sjqZ?UWt;I@hCZa#|$F_ev_A4zniU(Mx!pm4G%n>MK4Pp<+ebCUx_Ip2@;db^e z2YCA+zCZ^Y9KwATu?IMU?|J$Y*UMc0$@Sm#jWY5i|JFFTf}6NSCs}GlQmQ>aWf2 z5e@Cn(aBLmYx8rQ*D$BS9^&tr>cj2k7bI!aFs>o0!6ixYE`)~M3o00|aRv&NQ=#LN lSFDaAgUo?|zdD2zHD6fGV}Y}Zv%8!Z`HORX40E`L#J^@`L398B diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class deleted file mode 100644 index 9b7789b305ef4d4f23b93b3e51a0caf804f8a91e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2235 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 Y44&f!eX3>oLv)|SB1QiO@34%%KRZwHTmS$7 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/DiagnosticMapper.class deleted file mode 100644 index 84346258439df43618af26fbccc338c97c2c3e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4458 zcmbVP`Ewjc75-Y{;9HJu=KJDUi**v~4QxQWK>Jb_fmX{q?J7^%w1!5U(=rs%JtSW!~5gFcCS1oqz5(&QxVjAIM78u$>l(eN27uin4rr0-hxEY0469R}{jPMYWW zrt6PbHkoN&I*#4gBat-lVeA#yP<3hA_SLL%1>_|&UsU5W+AZm_UjmcM99(}lIt}dC z>&GnHpVItsbmM@;K?6NV2^?*(C5FJUQ)<58xPEFlXjJyJ>xAKKRe3c>R}Rvd`#Zys z1ggtBtC+JiOot5|!BGMtbUA%mD;~n7uXZzKlEiU=!4-|Qvb4zZucU@Ul zM@o{$Co5?gbb_=@R?{*$sV*s(9v5gjPsGOXkb#FWLbQ2zW_lWXcbS#w)iI1qoHp=D z4co2;9$ZG0QE=R>#d;tyNnF)tOvafjn7(x(uZHrb=MCjpo7AxDI&K^jXpUiua8P<2 z!=qg2vgz8)&=}4!gDrc;k$6m?r-3nHu4tD|6z!^I+96LE_*75^GESE0I0nXY`U-^#%MZEw7KQ^SGn|zAcV9JGH)#n5b zuR7e6*6tBlr_a2xBF}#JjL8J$@jc>X%>0z;T6$b2M*N&b&mFycT;C6@J|3uZW+BLy z24+@8LL5}8Ud?4BMBMV{A znSHzw|B729l(SBzs1JJ`nQBoj=R4z=4=yboHFK2`A~3YF(hqWEa}!ZppN70eg*xhQ z70fG!x1i?_t*mWn*7NFA54J0X3gD)f(G_M>Lv(zg-3)L)ZIiy4d6GZ~z%8*LaBp3< z2bZt9^2RDNs{EXjJ#D&lhOb;^Lo^>|yWJ2&RRGolx8jy;HOVt7UN*&+_|1|C-tI z3j+erbChB$*hafqeQn(aa54z49jV(+OEOVc&pzoeCp?vmQb_ z`|IhH4WzU~qJzDS*v=25J=lx`{6rZ*f`{H#JkBqg7qJcBEeO25K3f`8#v{FqUd_$N>NYot7k*YOkl zl(N@wmZMh~&Re(#Kf`O}`Z?FpAq}~HL9SoYo7b`KJq$?9OYD|7_8;t!SlcBdkwMaK z({L#fljy#~!D;p(W4OkDK&EW?-+h}_G!Td_D?rKHgwpC|8tQ3nq-SMSD~mPM7GFVI zps+)GZy5(l-iLT~zQsSg+HZ~dB6s*CeuZB%j;&3E1_%nBm%m}ygS^CF**24wBi@T6 zP5n%;%fIDV=SWlZZ~xFan;43|`6}Ce-R+N*@Y$>AXzpLY+V1wV!6+K(-=;;dmrqzY zKoo>|w{sC+T!68NuPvZu5#Q9Q&>W<~<^Zt!@F?^034SzZ(S=#;tEnS7TKpRM2|A{N z{4bL9k7$c;jYe-%kzQDGQ4#E~8QPR4{0_fo+rr*S-c#RTzl-{|5IAo#y^b-- YuCqN!I@ZVd4HUy$4EEbXYAB|JLuK)l5 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class deleted file mode 100644 index 466ddf3e0bc5d0d3a16914c8a7fab5181ea9e79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6465 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 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunDiagnostic.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunDiagnostic.class deleted file mode 100644 index 872f927cea24f07efc2970bd0e8797ccbfe9ce90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2587 zcmbtWT~pge6g>;JWgJnA2{fi5kThv+5ioK3Et<4}B)D}*3Y5;YeG&H7D6u71l9}Ou z^k?*;nW?8UJoE?jM|FBul0i&e#-tCcyI=S0xp((m`>(%G{sizjzRO_@;~G*r(#Qzp zUs^|2rENK_%8qQfUQ-~mZaa4HKw!L7-k(4g6B=?lu0R)9b-h-_?MkO}AZ6I`kNr-& z!msO8yq;6p={cLW)pA@vup0tdUmi)%4vqy1^|P~f1J8C^rb2&9$CQHBI@0&8mQ-`o zItpqo)o`2P#8n-$YC>27v9!!4Mpy3+l~~NNt{u00@;#Yc*r|Ct}Fk^ zpLhfj0l*C%i)v*;wxt5DH5GxII&P`itZ#dE&#yHL%-(Gsckmu312^I?uvw~K zE+b|+!7$E(!Y=73!yxvdFrquZ6>f#cNnYVAh+xGyoP*Y zhe4ea*s78guX>=}{3F*5{J^ui5m`TrF9o&+A~a)-nMzk?QcI@Nk9kfV=BXmgfeNN5 zQ?^OAJlhQ09NRqG0^8D524Ck;$1@GvI-cW&z~Y(cSsntrBP&tBF+nQtV8B`6buwqR zbL75~m1yIZ6TSG}%z;d6-{_l~=AQ~C|h?gp-xblGTIzMq_kU-J(M*deE% z6YuG@={3iZUI;0D4Z8w&&SD;dGKfLLw*ogV-pZ?u0>(X7r7@~I%gV@7%w9p&&Cs$| zhL$BVw5*7sWyuRI3tVVf(r9%E*8U37);Ri=c7nEQ`~hJs_n{eg`0Dl6&`VLlduxEYu&7lnU@3 ztvX&aPVg@98@vBzt#ZOGG3#m8;*W>8zpv6Yiu(#aiPO7I8(y2Se1hfw@}Gptt$mbI*(Ky rX*^PRr0<8^G0&`hg&e)Vz$0v66OZu(PqBp>zTtX~>pR%PK8pVU@<0Mx diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunInstance.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunInstance.class deleted file mode 100644 index 8168320ed4240d8cb3030290e4c7d4c209adba26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2296 zcmbVOTXWk~5dMyDa$JSjZfXdD20{zA+eUU$S{)!egHp;;X9IC%f#t8d64$#oZWACzumL;KmVTo4d5&6RFFenLqSIoC4uUZ z^~^FH%RMk2%bw@=1xjnSYlrIs`DSZx24&1>sOY!?UEsFo9~j<1y2txc#*5&2aO@a- zd#>R}uJJf>J8lqKZchs2Y~qP+1@fAXIaCD-;qw7c>fMp!-O#t)15;_$bzD_iy3*RU zeLD&|eRXh6M+2`5%>FE`F!JS|^BAVo{(RdI`3`Mzed7 z(9PD__!RQnI<8}h$cI*Nxaswo$?8RsI|}Gs9m{x+WXoS7%V8p$7lg^g_x=8n?1g6Q zM}e7L`@oF}V#@!cW^F14cC2IBkJ&ZXO@X`3?Tn|iQs?cAs?geFr4xSUy0$BKA~uZw z#M*b_+Iv0A*|U6GeW#m+@X#g=D^mqI>@Wt{=#GK0ZBoGMBN-lg{U0o!8HLg(_|c`3 zxdd-2{rTpE9*QqjN8nmB!(pa=!W+LD=}~O9&7&dah-rbXGn2mwlDc(8HzLDs>q@|3H@G%2WX%+=P zz>h0rFG|*j2rlr@u^B=JdgR>>69V zA>1ZIX4!Hq|1Cpbsa(q;i=2wQhJI)a3&PzsM29==I_II_9eQospnu^QZr~VOfwO70 zd9!BP0cS`#q%ah#=RDiKYdO0Wi9D#GAYs!7(z{3*4r?gl21C{tksrfasoEQBrQFRX zu}3wG;U;0XOs};nnv~a4@7U`SYFxtvZd0%Lx4^VLhW9-KC35^!-{TFxQvSj)TT0mD zPIX(#HR^0sL7{3nd^4bVxI1Ru4tp&crd=~#OX{&P<+m(K^GUC*qz&2NeoHhzn=Vb# z=Psd)lrHITxG(Drqsa;ql`(N~4dPD>`E3!n4gSFjlfSS(3vz3y%crY3^iBxh^IfwO zCFN!Dm;mICRl*f2FsSq!C}gmh$5Sk+c&6bwUNB6ZZy@cdZ?(A*r4U0gcSA_-sd&vWb6)cmHK?dCOkV9uLx>8-BHdesu7E-pmEHuBit-ZEnE~Bo z+@UXbN!ySQ4V?x37nnYG3{{^$#=sGo6imkMAeSkU??tY3-Y1QMLTDCB5?sLpl5+}~ zW1l4ANvtY5gbEs|rfTh>W^&+K*)Lz;%LCC=r)} lGITlzNs0y=jdd=x(c6I(r9F=Y7Ry|{{Z5kZutNJ diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOperation.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunOperation.class deleted file mode 100644 index 393d43f611d16a93b556372fdd56419e11c39280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1808 zcmb7E+j84f6kYO7vT~d#P8*suv^2QXPHEkQgqzb4p(;h-OKQoc9+=4}j!2bpq>f^D z;EgA~fH!^u+!@+|f$1|p!Jl-x&yh;a6dvpuYiXUeFX!xiw*Gql+n)e#qbDOJ;YJu8 zSHp*1aC+!@;^pkSv(rJ9o?%dpMnSbb3R(}n$Q}A&kcWf}Ll!v+Ggi}f^rmC!jwzv9 zpDIv|M^YH_JkqRr-!wXod7vAP)oOBShJhv0e!bP6lx7*`xKw!QMZ0iJ?ljL(OqAH^ zALSgwd9KWN&9=4IJ1|sW2GVaD<@!$mGHB(kkLmc93C zuWvG3iqm%WdWZIMVCZ#&2Y!p;3RhUW(>&0ddc9{`HW%JzC~;w)Jght1B`&5R&hZYz zHIyaDB_7bUCEWUI%JQmM!*v;DhIes8Lbg8$15d)aa;1LaK60xAH#n}g4o|%Pu%@Dl zTQb%eHt-&GPY`Z^5imp#2;;q@9@)$cc%5I0FsPFChyf*WbABUU#;_R+dZ>scxVY^HGI{^^V zlnbPh7D)3ekfv22&89$_LV+}H0%@!S(hv!xnE|wAJ{^=HOL0HLUCL(>TP5T_b&RXO zqVf!DKNFMiIX!biOOyQuzCcRYZxV73wJ5DU#m#4sxP9th_H|leu@xF<5^K>vE1~f{ zH>DemvTDB<0^p%AbCxgvAfjPw>%Wqy_mnBZw?WEh~sB$aYSUf*`kLK{P>j6hRgQ`9zED z76seYV#6iDbS<`A5$sbfFZ?bGW@xHlt50#~F|P9B#%cJgTYVV96s8?!;>@HjeDVkR zU|nX}#e+Y3K`HkMcW4(Qyw2QY)ry`l|w+*}45I=t8%Gw2CWG1$qPZvTs`Xg6a8GE;^;t z?dJm7Y@xQc?pT&l^i9Xs=3-)LqIIJeeG2+j3}8@T-f@rePRX!O4h$ohc&FZpmFLs3 z^KRMB@09KBvR`yg3<1R{`=zq)(eYNeS5*vSL?Hd#v~_FO*L~UyhMED#UEekBqriuE zRAi(BN#E6rhV<%P730!6X}GTAO35`9lekXWmT4QhYyPZDPTXB=%H{V|OiKvmC)2kL z&l_ZjZ>X5X`vP6Q6K*DOKU=s2$!f&n{z~9E6*| zobh8>x5#DfawxHAZXdj0mbJO30^Pgjk*)h>mu{^!q-Lcp`dj*mak#HrWkXxl1ZJ8* zYLyygQK~(Omt9a_G5;dH1|+RnW3y3ZZeJh~2Dz`m+;5dxp6;H0Un`Ks8!oYbZ{+$GfoRXK#wU$1C z9*!Z7QI0W=368106uwSl2fGUPRD1(Qe6r>=+ox}y82K=MkrzCy2UW)eUdK~l+OM3K zMm|)0sN08@;ms5r=ViInq6T7>5*hBXem4xS=$a+papNZImhO3RL3B2sHG{-=uWN?q zRiJL#w&4blhNs{=fg3f>7jRJUOyJtZs?1+V7`NErJJ>K&7?f8P*l+pOLHVG(WjG&{ zH^{ksiF4i`ft7ar;ytD6cjZh+rODc`(|Jap=K1Js5B4!B{&WY(VFEiMu~>QC6xk z5d1^c%KfQ!cCNagzy{;qfzR=P?^RZ0{qYSCZ~f5?4{msD>ksW0#28^n9y8&+JWF5V WD-`euTiC|8T$6|T37+D6Wc~v&nT^c= diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$Builder.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$Builder.class deleted file mode 100644 index 0dacb7bdf91daad2566ae7cf4395821c6173112a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4296 zcmcgw>r&fB6#ir`0-_Kgg+fV5XlY{{ikgr@sJVr!Nerey-G*L;y%?pkM0H`32k85> zKbUsXnLa=ts?)Q(j%+Mz#?_Dh(a|35e&0EJE*$gsKX3j5u#B@lq|l+FQ$rWJ6%4#I zE)Cr>?22AEeaT9`g6<{LHvJU^9qH-f4fLQ_MW2Qn&=mBG?SXGvdfxPCbILhWFqEFo zU;mKpML%w-7|<|?Aq9^dx1u{2%&wj?CSJVPUe(g+>Dam(*!p2$A2Khn{HgW8w93p? zpgMtn5%?Zi*$Vz04Z|F}%Xf_uO80DHCI#_b5%;U=UG>i-7C3DMW$rsA^HB4}2 zuW5U}VVC6Adm1LWcCcz(T(I({X;f^-^Uabt^Pz?*d_-rePMKLb!#gL>rD5X!j(pd& zE5h^p8q%1it>m(6_@-kk(DUuwLE-HIf%8Da45#e&4Y$I4?#`?R9iQ@x|4D&z!c~tn z%<)}n%|ovHOv60a^?0RoRt_w2KTk9);&U?V%(M;b*sQYa9&9?nsl^2Il19lw=lfg{ zlwv~ffEVTu?Z&X>i zXjlQuu4ENVML_B$Pzxd7wi?;ij^_oLc!DSyLQ!U^Kv+v;!)`651w@ok`DIXXvrGw90GK#gAl=YHKNWG9gNqF*_|F!B&2(?|i%CL8569SD~5A*Abx1oO3 z%#ffw6WVkVrEXEw3BiLX_DWq2N=Mx@q89u>rz zZJ%4+w zI!|*~xZa{QO4y1rjEmio#R*dB!amfgUPcf#MA}mTx&ZY zMld&GFnLCXm~#SizBT6K2nlz@S~6`Fh~xOrk{R9o>JQ`kz^SA7nd^4IsgCw diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class deleted file mode 100644 index fa79863d2ee666be78068c97bdafaa8ceff34568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2004 zcmbtVTT|0e5dKbSNeh7%1Qby&0@@ZNfOiXsfDX(Q)WYzfPicFm1k#+Eq|ET2e2^I# zXL#@j_@f;6B!NaLScix9oU`5icK6#$fBriC0bmhp9f+V!K~zNy?F^}X{ZQ9T-KuB> zUJ`bhp?$%y40nm4EuGm-AdZBB4i%kH8FIp|XrjigYLRpA;v6|uQ=@NTX?ESx3U#Z% zox15xZ0fZdFRvMT#S)Hdlo&e7p~q~#6|9DNPKMI0B8e1(!cAV~mdh~a!SIr4)Epkf z;m7pGSIPBK;=L+vppPN$ifz|6tO~=2bV~tTl1wg>Z!qUWdX5HE+{7(%w5L0JtD?*q zmapk(Lnd%r#SrdLaro!DZaNHw>!F6Ce^=b+B{!G($gtBIXs9UvWIwaZ5cP>j<_(K) z)v0yt9ldB0HNAOJ(#>7nHsm`HM%_Jw5?s7id8o5Dxw|LI?{!< zjUn4g41O0=`$+7oxigU$;-Fs3g}4p|DB1R5ZEZ)M}1X{;U2xn$b)9yO@c=-PWMEF#PUa=hnD69`IDaJ=#;8T_LSuKO4o}X zR9_|V&_k1b?()$9Pl8<J)>Q*$?McHC8eB8_^H;c>n+a diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResult.class deleted file mode 100644 index 35bab6cf3b047bf7056767c8349f8173847422da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5756 zcmbVQXSY7-%|WyLNEKKz&c|R12EXl0d78Hkbw;^ZdD_ zmsReXlKgsZ($BleD|z>d%H^G)dmwK+8RZ*jS@1H-8Mbos20BM83?~BL zcIQ$pXcrb64D?lxE^=)&(TRtNPl0?Zuszp6a#owZ%dnY0(wN_`A@`58xPkq*fIeiMgqm@K?}kj)1B!u^Dalfu0*@U65y z#0i;BnK&iW%@iu_EvTFjQ08WwHE~W3-s)@nPpX%-QqIcSpot+(RnnHG8kChwCWd9D z#ddRn<)({(mt^Tl6Qi=Ualy)FRc6Sx=3Flq*lA7uWGlDSivpf9@ieaRu(`lj)`Ed; zJ>g>&XOr|cE~Yve29qY9!4!{1T<4~Noh$aw=3T9uI;z)i`=ZXU)j)z{>YMzZrB0 zw8Fx?WC7d2t&+q#4^UAOma7AGoiihDpyrfcBT(;DD;?{G2?w-jVrDs+9H%;}Ir+*Y zloDt0B#F^J!!f6=8Pt~~#L!edRf$!}JT-I7OQy;u@DT&4b!cKN5=5<7#7(jPM-5C? zCw#@5Qu?qe?bz9zDrNuTO>n_c3(5^ry;BmJA2acBd_uA(U9LN<_u_4{I{%2FJ}H6! zDFYY7fuudZW~F_`#Aoq2Mu2uCM$fw3D8>9VVb8f%koTFi2O>%HR8^+GY%QqFl;z}A z>I?z9SAnd$8D-nqRokku`FJroYeuypOck#+jc~3e8AeJ8T|@_ zBoFj5?KceaJz`+PsO_rDdA?-)NsAY+T*hA7a;7ZbmT_saA(*!r-~CnDxX6uWJGzeT z%P%F8b&RQC-pf2?`E-^*`DDClIsb=~vw)LIZ%A26}6NJ*5L|m1_MnWt+6c~I0OW-Z&%N$kyVHeSB- zt1>|O@m!4QuwSm8Sx?5M@*C!LnULVaGH1;(CR-~eHt=XwQ5CW$=_kCrpH>%b3GnuE zb#hpI(m>l~l?%p{>h9dfttE_Q9{g6@-&Fvnss3`o$v42h)~b z;o5>F;JTzidVB*Zc0k=sS2D zi2@#ywxfVe(!Q^NN2Kj4V7s(C3fL{}o&xqsyT5=wX%F5-vVddKJ+8ZtOZN%gJuTfc z1)P_5Ku=we?nT`lk?sd|ckCT~_^$`a*Gs^b>>jRprmi&QO~5`FB_ z+kxi$Xr8`<%WreefC$vY7G%v>!Z-Pq-AT4G+t_y-56RZL(AEjf-z;t@@#m`r--;pL z6eXUFCEgOt`H?8`GqJ?m@a-7R+uw?aJrzs5E0*)_DCcKmiMwNo_eF`HizV*CcVfiu zixN-A5+A}#v`N%d$D+hnV~C4!_+9co84L1w6y*6eLB27!U(LC`&L%orv3Z(QU`>VcfvGm;mnK**bo%8HfVD7y|4nxpGlIKP1pl88{pd z7os3m2&8cZ$d3pz91AiM1({hBd>5}Q;ngL4y27=SSqzxvbuh;S zGLK_y-{8#AB07Gq6FK=XJ3Oo{b6o!3q!cpu3-;t_s#FvmlX6DLi`?oz&kXxq}6(^w&Om!xThU|W&1b$9sfkv{{dmB B>AwH~ diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResultStore.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunResultStore.class deleted file mode 100644 index b9ad974f41cae96f1ded5d36e9a052c83d2cd63c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6208 zcmcIo`+F2u8GcW0OOh#BLJ1{Bh=tN*6Ie*0ElmJvAc7_&CJ-#%I@vu*1|~Dxnb`o| zidJp4TJQJ!rCzI|mQbixytP{E{jUFqKk@kZo->o(S+ZHOkN7;0J?G5%zVH36=R41U2i(==A<(_DWx9xXZ=|_ z&A+ab_VP}8Eboj-KW_))f$K?ugr{e|KU%fj9a2Nk8LRxxjKAUwygR zz#6m(tnlQtNy*{Pf zEe6)1orcNfX{UQ4d@526QUV;q*^=2+-6VYg=hE#>6`XbKSEmL_X zqZCdLMgxtv!@x^%n?Os(oh4*>cxwNoPuB?yEQx&yc4gF17TIjzc5I2-wrx(@457}YacK1x$h48R8`z;# zXz=8$J0}ykQ(&zpbrdk%J()gW`8n5Dteeq`T?Xz_nUl!sWv<oc}#Ja8QaSFGVNQQmG_BpHs?BYs~Rd3xSknUb24q_tn}f7 zSu0?aGg$+9COA09eT?ah^nKSGixQ%lh2doe_TxT*4uYvf!@O)=fTxW)#GLAD#sM5m zV9>zJaflifU8FwKxXe3g&I;UGLL088$Mwg)RtUVpz$-B%P!~u=*BkdFw^5VwaX;$G ztd%hXNhn7!lEA2eS7D5kPaeZ(!!rn3(rL<)UQI;tNOQE6`IJKe^+1@C^jW^Q6ew(qy!*DVGux%IT*KoB=JedQl1=&I*(kmB=Se zcoW{7z*`Kw6%Unk1K|e7fP64-+6 z_Fmr6@Mvruax~|bD;L*vF#O`hxabOk*();s)d)ne5M4Rj{lc80Z zwogGz@;Hl~+bV%u7bgwVGwhZHda98?I-6&uI;u)~r81SeaCiw!l+i0*G8eXnPFr3p ztE1eA_v~~_=>Zi>P`3BuftfkQ%SIHss|z*ws2go$Dc@Qa=~8Jguqt5% zuro~fN;YJBt=rU5^Q`TfSuHh@3nvQ|sT%sqn08!qYm4H&G~S90kv`e%qbzC~SA(xk zI)>M#We`*bvRxos&Jj1X5e$##jOk>pEVG@Lq;WUzW#pixE=j9PFW%c!>!a@6@eF>DM>Lu_Gfen?n@>C0L!B>xFUSoh- zz6tReiucNMoYmlMob#2aFn>E|d>bmvA4U_$^>_zc{dbaLjvN%9j?_hn)H6uje-Vur z&{P~IQ{5M^`g`0{i+AyF8>vB_bx2aqDztNDBi7;({Y~@2qj)!GM1mJ_snDMagLJRsmmnAJT@LzMhGRW)H^rOm>bEVLv!v3sSC=t z;{*7hM&6DO;lrdb0R5Znl>kXVtDk2) zoL7TOxLe=~_6+yvC1Tnqa0vqf-Is9~91hp;&$xh?$MGvTab&CBxb+fV%hR8m9#HPe zUdBo2>8zSM%9LRQ-^+{vU)mDbM$NV}es?g6d$Arnxw?y^yRZ*;(X~N`6j-lq3}42IPRlzD!`jl-Ip*Y=#e)*$!R>ecWJh5;Wn)oH!z~ULre0) zhwtkB=L>~GDfNB+-^pU}TiW^ucnTNw=xN5s5B2C-M$*rs(J%1JX!I+*h`*3h)xy8x J@AxOy{TIDo62$-j diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunVerdict.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunVerdict.class deleted file mode 100644 index 350248e328d75ff9665a2d8904b5d1b9826240af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2176 zcmb7GU31%15Ir}sCC62;WAcGR+Vau5w$fHD-=I)vQ%Vd@%e0+5geS$i6RU9~BgviV zf8eL^KxgnUlLvkPKZ@a8Nr_c#GS0)*-n-h}d(LWi?Z5vy`3u0;cv8k3=5-Vd6rl-J zUpOxvtMB-S)>GLHLRUcB@_aA8Cotb^?Jb~$1s!DrmtY8N2H~L<45WX2AZ4ud`dfS031@2rha9hP`7`TBZiO64uPM@3~Tr5fs z-IFBSc57c?x0%yt8K2bb?@#I`HLX2Vxz-7~PJhn{J$25M zg}CRD$*l|JnZ>v(<6hwYmq)zRuE-6(l+NbqbVaakW za#gvOxz@PWD;l=Tc!=+GJTmY-b_A}D`-5E+d&kmBQD;{REF7Go5qO;^?)fi+BWb0E zJC5)6Wpu3*1V_VxJ^3+nn#}R}tATtdqi*O8;vmesZ19(Rx&7Duec-p5+;8BcENxqqidM6~=pr1#mm_=k)Pjz0L&AEn8d7sKg z{^sg=xftKPI@Ni3Hs|_O*lV-F-k9pVK8te!pONhxKF1f74OU#*JExta`X%j}v}e+e j`7+V+2a7#d!dKYh|BHM02H)a7+I*)v>IZc281;VvtEj8q diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class deleted file mode 100644 index 2ca40b41b4a7cbb380bc9903a239f02f907f6b96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7373 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 h&;4;gn*Nu3qieWMn8pl^H>yVLe{Q>!NL~#HB diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class deleted file mode 100644 index 4a10b592e254d457bd106477b84e45c9f866b0a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14564 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 OPGglB%1ot##{Lf`tLPU1 diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class deleted file mode 100644 index be3a9bad1e9471f3ca7b8a4b6e012d5806002c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19242 zcmc&+34B!5)j#KEdCBAkLI82l3QAP6IWCBjxDX&nBm^WFL`5AkFJxpg6K6r9)_tv2 zv07VqZEI=mW~~le7i(K>?Y`UE+I^v$wzYe$-~ZhAX68+jmxcCIe@@ z-p6zQ+4D&vI$7NwAVnn>m1-)Za;6g#$<3j}pdBCBWZUK@HIy2Nh442K4<$44(ArFV zeKg&_8hyHlQmZ<^l` zrsI6HVJxbkP7Ys~E^*Y!?u|tUQ+6m7O-3`RP;X*jFcG)o=~T!b=nJJBElh>NgV9h& z`>N&bk!U&^-wdXw?QQAS`mw2S_03hZh^u$40h&j379FnX2s(0tgbafLnMC6edmGcj z`QsoFjewkJdMMN$vj=e7A>)8UJvCU=sHusXA&xPbIVuRI%1uKqOr{ftvC|kfL;)jr z`+!+S=QHVOEVO!1%rzVX9w9o~qGL22OUE(Qj_d-NC6ev26!h zscrHU)fv{<5f|YKI)RA-w1`?PYSnZSoeXx533fD3))61fz`85N7legs*wJ`0bK$@W zoFT0hbSl$=lpTYoup@JE6;aOZ52xnF6LT-hgk#aZC|<2;>5^in=UXt!WLN!4#S}Cr#9VgExxMw!f@& zq+&wJ0_xVZPN=TV%f1Vux2T6{dclU;lF9H;XEc=#(3w;zerJQGv*{efhXFg43U9Vk zu(=$u#xkWhSi6zVv*>(H7f_gKN&%w0hDD~*Njp5ibWqV)r!@p&;$>?sQh{Dg5rY1d zg$D;?Lrm#O6F;i&8D^E z7e^mxUN=@W-pn(gDK7jiPbVC{&!a(27fDlPB+;7@vrPpkMQMvNnzqu#Oo#etQX#Z6 z>A`R^Wp^hs$zGA!(Ow*l$b3y_RU%@GpBh)-TpzoeVg42B}v4cXqEz#6}?5%&Gc3nSR|Sn z45xuHPw}1Fkl?=8xU za$TU@2>)G3L(S6RY#H%BP4A~inM&iPxj2kD>x@>5KIrdqmgVg}Kp&=$SoD}U&5t5w z8JB5=p{wBRW#MtBuih8>j*~?=IZS9jG_f#+gHD~fM2u7Un5HM_Nw6&(L9n0cIuvgT zS%0=T%$=HcNsuiCqx;3U_h{NnABP`In$;lF%igh$wv9v47{)sy;~3jYM}st)y$x5y z;m^L2qsSoK?8Bl@G9B)t491goKne{#AsJQ&^-jbRbv>Hk@# z!wMYhh{f#9;aFR8vk9@De$Ox+<%4e#fdz%BpwA;?v6IO}GCsus`tDLMVKnv)rn!YAuD&1tgBOIMrC1TIT`D( z^J4l3O)t^QlIez%(0ry9qxi!8hW;l_f2LQMrXeLCv?B#&Kq|L<6fK;DdU=WXtERuv z-(l@WcJLIgQem+^X06iohLXzsQ`5ib-;(gzePNUcfncLQl;K$oguaOWBbmv{N+xED zmF5yIWon)XNqIS9k=B0Jn$Fd0+s|)Xx~^k&7mRg6;Uf>BRpu|(zyOn1=YVyuYg^YI z;7SfyT%}oy?>c%+%mC0S;TFoDSWrMiy4~!pf~SZbZySuEs2HF-xJL6d3CHEOEM`*` zJRRJ0-?vDInVJt^)FA^Y=vq1@h2mjh+jW)*+dws_dA8s=-GO0>F1g7eF+N!HoA?l{ zsV)Yf+zY0YC!@b3<%o&rYCcpZ)}VHcoy3v_%NUt)p5{84v07%#zp3OS_(+TAYp&-8 zrj{|;I##ql28-6ZZouyCN0w6uICVJ%HaBo^1F<^e=IQ{aZfyojmV7lzozoG3=$kY* z^HGpYA{mLIG-tBP4vUXQ-K`KhI^t3y1xq)@?4_}ADz&s9HEg@x1WOJ{kzt6B)4YID zgR6?hAu+_sa2h##%VhZ5kspan0!DHdpP>0fUIZQ%fSO|3yL~-gF^sXT0jeTf1MSY9 zK)zHvG5;kBnOFPKQZVF>+^YE`Mg_4-YIKpFa4aJW`OUuAyKBQqD}|{y7F9%`6X4(w zpQ?E=w}FGUS-9G5rcS~XA4M>pBvFR@F>iz!_%h6y44P+zxm5EqZZ`!5rzHBIFCPj6 z{g80t_y4y9hxjzjE4ah(&-kt!{{~+V{y{V0FO4rV99*fnlUG5VKzHs1)5E@O^p1aH z8M%m8YhGiDWcF6495%#jHFxtmxK39$yVJ&JjH8++1@)t5;<{-j%c*9M=Jk9QQUbUx zaa#}gvNS);4};fBG0)a~4xek7XB5+A-bG{U<^PCzUd2K(!{=!}UxJ{O%9xE!@jPM8 zo46N6k*#(z+BYQYgLE<+jU#JZGzyZwPNYYMM|*QtFvPY1?qgax3Y3uxo{7S}i~BW4 z`9g5iAneY_^e$grD8lTG)`ytp0b%zvhuv$DS4ER%$4G>ckhgtucai2KBM8+x{kp-| zRA1PQ3X>9ycc^hs8O>W6wQZd$0_xAeA_#9R0~HTxzJxEu+8s+9r)1C6?<@QNU8FW9 zDUx}!=F9mCvFNQx6yS%JhGP)uXiF?lq;^;2J}HBM$i#BCa~EHw`D(rf5u~^9Vyp<_ z9sfoO$l~jelKK$YhRk&+6-~J%d2BE94VrJ{o3MIF^mS!ou`n`Mrukln;Z{byyAk=4 za)7Vpn^8hw)bvkx2bpR|zQ=F@c%Dt_R49<-he+XIh;P+=8*hgIkdx=|X4>e*ELQ}Y z7`6Tt`W$#;n{U&62j7V`R@i0MSV1m7@{JU^aO*D3@8EYz48dl11Sa96_i{!EhYt!X zl-yF#4_{>7GCa4exJUE7d>^#K1#8w65Bb`vtTU*Ie@Za7&{3 z;$IcNkKb?cqu9aY4_RTvSRe|}-`L|)!Kmq$1&7YMmD+>WS z679t{{yu(2+Fq8s&r8|pW$E{v<}dP>fK;EX+}EKlUA#ZFERliNgYoazcnIn_gBTlNL>riM}OmuLySE(fnO`TZWvk7Zsm<{5@$g?_SXS1EDaGG&?Hm zux}+DUX*4-+K)B=Lp~<#nY~G{D}u zK>xk8z7pV<_+^X#sQFL)=ZTzAEEFN3z^I?Ng=!!l$#0vXZ0leAD-w4BS}QQ27sbc@ zRrB8%<;YSA`vPimel26SiqWAWxrYB$ILP4L*zy1@j(Xls0e+SLWASTRp>8qWQ7WuI zN2#3DVOfA?cRvKOk72C`l1_2ClP{}}ICqz{2cZjC7aAX(3b`OUWqfNum8eonm1$Kj zYYbB|+dojUNs2-Y%8RN(t4e`Zg)^p@QzE@LWt&5i{(r3{K=G*Eu;+ZD#_hU{5$1m1noHG~FMCcWv?WphY@8 zS|O|zYrL@syBg#kk1S#d!u={c-Jgiy=m4aJ-ErU>L^rx1MN9%8+gGc*0c{=)9RK zH7NW3eKO?YL~=`LlO2wyLb9|;B!@!b{D4qfCY`t#YoiFTEP)?pdd?BCzfw))T&O`J z4`P&!sj(U2281GR=E{0LfviXj?(PIr(}d>9clSMH?D17FWfS?B4)Fu-1XU*Aa5ADY z1E4tHBpJ$bKcGbf7I9{@f-5#DCIqO6uxU;VDzpKgN;|imjYCr&=jp0oe)|{tWA!?x zf|-_@x%2WL;o>HuLO7#Q3}qB80^3Yxms9&((SJfG>>Y&y+BlZ&96+DgL2=hz*K^!MkyH*S_EbZIId8Sv5mEls%}Eo|0>=PG>^rxf z0;zUR9%2F2qCCNXTQYfYP_+U?1Ed-SzTPbWZhW+*u+=h0{6b#iM(PRVz#PS2ljM?m%>LDK3gS&0TEhjmTCKnlJ>5GLJ(jAddWp{LQ zJe)S?l<)Qp(2i5`XH;CCJTi;d=Hw>lT=^I7Rm4yT9mK zt?69k6-KnkYypG{Fgj&wI66lXHoT8RCDrqIZ1E$u&$mpHS~q1K9t-^>SztVl?-x&w z?RBJ_BgpZCn6L6Pgy1bWXZ2k4mlfVCdCo8Q)RD zHI#Ar5oJWN@%z1eTtbqJit6%HHl1f9Xs)_E@)=YkaH=8T&o4ZX8sH-RKTfHxOk8YkE`Q}O9%S`xq5O=j|y6GK|Pib)+ zR@!8~QZ)nj(@N1*P$Il0ydX6b*K%Sd&p-(G${=(lzz9OK8+MY_(D)?jhNdT}rlI*s zn$Zv}eUc6=AUGSNh>i!*3xVVbnBzo{yoiF-;z4+J9^u(}gl8M(2zj&f2+tl9VW2uo z9q1rg@{pmO`2L0`sHSl@9jvIOG+3IY!2$t=kO+>q?PvH*= zi!BuZpruP9OUahXU}cuJ1u>EF8a`JdR)=^9k0Crm|4m; z1FtH)tjN;t7VRNO3qks^mdd^Kxec|?O6M=sE@T!uvh)@C^Yxwdt(HKJ)~aAduxbx| z*Toz#@$~)NQ`KI2VFL)jupjQEpEy|TqMr*tv-E4>-|vG}S^8s^{xTXK(2Eq$;FY3GY zC+#J5gcvZ|j#Tquz?yGY^{N3pJcO@Mjj9P&xsunaW@t${XzRei<@>N(l;Q?;6z(ci z2t1riCC>cnXsU90sbg}z)UoJw9D0SR^i^7B(L9S5yhc}3wMELJ(=4^XqD4-#MR!=V z(fmJT(XAHUW#Pjg`X?Rv8XYeG!hr7pVvC+LUZ=W5)nT@m;BAh?Rmrz8M~apw|ov~)X5lVK@WN!=fjPmapO^s0>C2t#MM{f*M?sge!ci@ z!|!JN9>7ojRg4$WO*9H_pBL}t(1x9S%%>WgvV3f?Y!@%wL9aD7H8g@LEpSYHiZm|S zLBH`fE|_1&I84c&MM@x{t1;ztdH$=xQ8Mzn16Fb$kR}&&SgZ+=A~w7vp&)-Na{7$|%VS z!Z~{=)?T$xA|?0a)CG6qQ$$WZu#dZq<@dOjFKyyypkU}HKA_B~&^(&{FIcUfF{8G2 z$_h)JV7Y%`xQnW48#`d6MyqC)DM>VPc6S3zuO81z4hFkv$7S#^qQJBF^8L_|2fM(b zhngGr@O$9=d55Cr0;i^!bmCT|H@CqowtLjy6WMe0&}>76Btx~TRh@+S#4l;k>a++3 zl9E&^K~mITog&DoQ-L5(L%9fU#H1x?p991`Xo7L$hF$#O^?UeZ5}tD5Sg>@GCFC-= zztdm`FDOHE+{T^DZQO~Os?jl63^CxlI|l<^f+xx7w&#MS1%0&kAb>kzK3FDCJKZOQ z#l|e}Li!=05r+HwVCfUQH_M-r>(g2O9Io{CEI%vHU&!*8<@&WOe^ajC&hqne{eG5z zDAyll`KNOId6s`A*L_+3UC?qOZ9y=H8T{^s!?*{^d@ua+0|=H6!izmb*V4lf*8_$f zYaKfB?AQ+FzT2>CyDKbEY1B~Iw%vp_QI74Z4S_|H!R;o*lw+nFoUoG%Hcl^u7`GQf zjN1zV$TDmWmSZ|60*FQ)f*<@B0Okb0q$Z%SB0_>EIqGVFLL8)74U&C;r+>ijm3;b9 zNIsqH_&z#-?l)8(;0!bPVLZ)J?P@tOfMfCH0&jPLPji4ndOvZpngUoykM8k+oR$YU z4It+lkXRAAAbVg(!mKF`P2#!!vYY==LhFaayUoCJg2ohM7lPuHyk1VhMziq(Xj_T9 z5}=JWuRBNgM0w(v>ITT*Y($(59wKI$ltd;i@C9r0$@1ka56EeGkOjV=P~d`G=^Ah~ z_>xayhqI;AfOE{XI?v{6?*p2@Og+IdQ=wNR%r)r}{m*5y}AXX3F3 zZCEYw5pcKbaS!uSm&0kCr8cN@&E0wG0@dr@*{a{YyHE|7yM($(rOn-0YOA`~eY-8+ z?^5);4se&iY!^_yx*qGPyMVvG#f6#mwi$aWQCyKbOR8fa6noiw7{i$Z!yC^dCRCvL(F{8H>4ds|s+v{GmC z20RQu=nR?8aF)f~vw0m^U`Of9jS^xRh@gD%b#&!uAWDVp@ya;hrDM5-OB9N)u z96aXTz;66#;0lAKtIWHu7%6Tk;fqjNT{#>{k9&b$`rL9x!fKuLy4VqY&j~`Ga&Dzs zu3Nbt)%)e{d_JQ7l4mCn(o@!UObUC$X4t8xoJIUe?IWJd)XantjeUk(+?a*7@c8#3 zk=uXd9JmyAwJp1jyYKiy?-OAz7zir%otaRkQHEi0(*NOTj8Wd^!9eyNI=(aH0rv^- zmw!w9)oVIaCaHSW>SwS$niwsH3rU>OmvF)%1}1eqPX|u&iiBftrvu@i!lWuOAz8O5Dd1*}t+qGyliolS(N zfwsV4&^1q2Wnm6?O1O(n16wA(!99kh(*n}G4aAUJaUm1848?;n62r4}FNF70KH>B! zX=dGbyq?R|a$CwL;mA()B^h2RNn-ej=()vJ*B7He`e~C**HJ1hNPPVCqLVcG#LPUQ zgW2*t?nf@UGC+*FcAE2)91J{QxIA5z8WJar8+7Dk!0kO7@ zPbUqn4U*+?jWj=?ok#C-^sF_XgEd!gvv9LXYnE3=g0;qqE7c_td9n* z^sg4->G!n=F%zvcRu(I?HX~d8Zke!FNiv@$6OaHD5|RL~qe2JS8Y%0rZqQS^G@8e_ z0Q^SF%nOmko{c1u3LQ<>8Ri#(UuQC3!bb$6(bwsz(=$F5lR^|I>W?V^ zonoHR2DCYcPm-8)Y&xZU^LH5263QnY8CB@hB%-wO{4B9qM uID;>7lb)BTp)s{4i51i8E7H((yG`UOz^1=v8@PpUNm?T5eSC*DF8&P<*Ld*& diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/ValueText.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/run/ValueText.class deleted file mode 100644 index 86b0738d824664f86c747b5a0c002163f23c825b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6957 zcmcIocYGAb75+wTPp1WrJ4CON03jqKnhh4h27zJ`2`~a2icMB`D{-*5E3OD|ijz3S ziBkv(iA5X}C#1&-b_^DZcZwZsZ1ST7r3%Val%ql*a7Y`}nhnkDZ{F5>NDn6kD%M5KXmY(kY5kJj3VZ@f ztayL3HK3cZUR}45#PLMTXx^ScxQV>uv z89{-GnN_uZ)Ck5=(kI~i33`!8FbKM{#G^Z2nEv~$Cn11ZRb_F*TJN^yvxaJt&kNuM4 zg~fb*H`AS!&RYl2t0F8deZ(CRsHLIv z98{X!w)|nqY6z^ZFFHM^O-+H8JnPtAS?BCHy{7BzG4xj92;vG7Dw0U0)AQ&7GMy!o zjDwiKtSpytsLjk79Bd7;vK&=$496LK+Q5K8I4^5{U&;(8qx75(7iq1+i|}FvFH!MQ z+{)x)r!srtEZNL^F>OF#jn}uvOLL7fp1;+HmkX3M&iCOq0kO}AR}tLg$7^uAg4e2e z9q!=f#;x9N8HVj7OmE5|i}5WhRG&A|wI9^t={RfkB)}`8=TLZbN!vDWQ1M2*iHnCF zO?bdw6Szjo@Oa(AspqVmZ_cWDJT2}*!CQ(s%TC=)Sn)B=auU4?-d2pYn@KYjxAP1W zn(Jq$aHonPnN-VCOq2@VQ7pF7ZsH0!jd!ZJ+s?{i%?Ni!6ue8Iv7pCy>q*VB8yi>1 z8N6G?d!&#`Hxo)Z?-gh&C}*>ois^ApdaoP22qNmew@bz1rMqi#zlr> z9)|QG(ACw*5w!Sg7-*r5%FFH;~=JWWJ zbb?C)Q?pXTwgG8c&0rQOlWKnkpH=WVnHD}T5X=N-dY-^aZy*%T1!*Rxfky=(r9Y

*CZ{D-#?#$hQTB2DAl3FI+8Mkz_hA%;agf$d%WV9hXYyq_pu?T#4+lOchDHh|&EE zbLXga)UYa+sbfV&JP-*uS#h+XB>U9t6nA_eo#tA` z%w1Plk@b{S*%R$IwImx3flc13Ag?q<`Ew?|1^HG@I~bRpY-q9Gh*o#R?epteSgFS6 zf1YHIm5PV;j;MTUm}vX6yfH14RgK1Ba!N8GX#HX;S;k6=L=4l;}>(qJVo$rVx?HX z3z}U`?V=Sm2d%@pY~a}vI+ywmO_wbXx9v*hYeIKw^ZvFbz-3+7O7&fsAmT?ZcAPE*-&4tFTEi~ zv*+vb|9^W0_ntNASk!BptYO=3UOydc5*DXU)70bbhL%Xkh~sDGQH~KZT537ut)Tq$ z)<)(H=S*xTCEw^v481t>zCzz0SKgQrvR*(qXIu?qI!sq48+D2fMQ5rBHSkmk3QY%` zt5GP&6;>dWBY%^cBPCN}R-$G5C7r~|ToD+NWAmXRuH$RPI3LRu4T{*vo@tUIur0Me4AgDG9Pdj znM*_Lpea;5)bI$DAp{yOLFrn00hPm;aE`Q)Lkme-^)RMO+MFRw;Ji7KHct|2ok_Kl zuy7dllGZeYASX3RTJs2%hor6^LPhXuiLI4btHjzIacy$uwUV$=4sDWHha;pz4qZQj z=Q~2Wo#nbEb=xp{+I~s9*`*zDXa^)sb7>KW7Ll~RVH}e3Vnb-6 z`Y}nfE`rYqBNzlO;+7HwUlx2t@Rh@O^+mkC1eb6^GMsc6PD+NiUJ1h~XWOSF!`r2V z(+=UZB-|wlXB@&ANw`N6&N_;om4x?Qz=zH?T*Su&uX#L3`^S4jDsQ9HcrlxfukpeANzBC4m?cy`c~8e2(T2IA6Z3?L`QlbA z5GQznya%=7JnC$Jx zbrO3De(@;Gn6bMyU zRt74oL-MbsB@hUN@Lvv=Gr17><=ZB$D+BFj#)^!o8k*g9h>z!W2+nd&#EHUsPZZYR z89dAJ|MB06OH!oR^s>)TP5E6SO1M1V_?%Fs_m|qsFKD=c2Zk|1@bCy80WRRv!7p6E z7wL&3_%dTeGJA4Bqi6L6s1l`_wYbHAUv>kOEVsCvP_C^sjLVT+$~m=ERPeV% zD8fg$28x(X{VVO?DpAAn31Xs{Udx`w6ciJV1CgVT5oE mVT^Ds;Yq@42u~5V5}qbpM|g&?jqohtddv{liVdP2GoAx}OBI*^ diff --git a/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class b/editors/syson/backend/target/classes/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class deleted file mode 100644 index 5c07b687a5c8a342cb42971b211f110e5929ae1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4670 zcmb_g`&S%S9sk^YFtAL3Zj!b!Y0?l9VF}r$t(Zy@4dhYc25L6aCe`Y&dw~hFGuxS2 zQhe37@lmx}t@Zszt=d*wl2BW#$8$W#<4^uQ9_#1M%)VelAC3X<3$z_IZPPz45bqzD>Oea>G^BKN zLKhfy+}W&CmUd}c%3$IxdL=8%zmA<SCxwzPdUb!FBlo7wSGMbkI!*)hlV4#z!ZdGd^+ zJKR!wjVzMh5dGwIFYeQDzm9jP2+M37M1k9Aaak5mn#Qc{c)nTiRJ^`Z#}Pb0bUojd zMoD02lQH3HmNCRlnjXW50`%xjjjn;viQ{;;hW98CP6*sl2ce0lz>$_-sPSpUpox;s z7{f^or*xdg8QNEu5atSxpP(xrub8f!aO{bSWeFT;jNR~9HJBRxoJJhu%Fwd{_cW4> zS%&9TDVpJ~X{;>I={TnlYV#fS?WZt_hcvuT$9d!hMmCOH-?>$&38acO2nFsXTpQt5 zhn;?VKc+N1tm6@tZVqjZT%g^P3(__H#S|{#Q4Jr^@j*P+l&l#q%sD(dXLxgCPLb)9 z>3X~!A7&65_C{A%(Ye$PrcLdN;o9V>VU8#&m8%(2mS$9X zEHSMIfYdEjUcank9t2*KmMk%U3hawKR;3S%Ls%$Ig@;Bo*aCy=Nf|Xfvrre+4rY@M zReAzO%Ehh@Px)6XNzXH8WeO!!R9#yTINCqHHix!YdbHtG)gOfJ34sS1m0Pb!w5V|R zzeNsiQQ8Kk1QH>T-8s{i6BU+N_kuBP5!!UlDHzt2;hO3_T1@zJCLuk!espdu-7~h% zNq^2MK4iE?N&3DAYA0~yR=Em1_J7mpCMI{*(-%=ZzL{8TWptYx zbYKDp*N?QOpr+@~|4)K%V%s*$C`}iQz6KNfSoE#U$Xb)}X?0_atj>35B5PdxhQnnapqF|S82yAVUy#%)8eWNhXsutu44bQTm<(-OKkf%+RO!nNo zH$S8*yuc2&-M(3pQ>JG!-<+^*#}C?ihEwQhudK??jLH>P9CtqJF=I%_Uo6XP)aFyu zo>9l~*-;qfFt>O;IMbcPPg1;7{8Y!6@s%F+`-|26bd-m?+pwhvX%4?u6u;5&bv)gJ zr^(`XDf}KUXn0Y_OR6*J4my*dzXaAa3a*WT8!Qb+!j3{HFzb3Wn9y6 zUB?Zq2=vwkn)ZS-FSEHIE@`MSV-$Eo0-Pja3lj2r|$iBFMKu^;7|Vv@LyEiZBm z8Mkp2xHDjQcer0;n82s;nP5MG&vF(ESa-y@3@!kl3)p-<5c7pd%oL9)D|$08LmRw- zt%4!ABeQ}%;AGzl2Glt82D(-&aaV&?y)`9zaTQ;rgvhF^HL+i!7=DY9*cpyWY-Vs7 zhi_n5UDa~V7=3sJ4@L_&@Lqws_|Um~>CgT+QsHk=q*#>MBk3Jmj!CI9xXc8)v8k}rIpV`eD* zp=B7)VS9Wyv4rlSvZt0-OEm3HD(clIM4LB8!eUaS%xjlNvi+4VS2BSLd#H z{7vr0qGciejV^IkBjW_Vt2XdGC{L(h`~k-w@=>B+Cfgt3$M{(=`#FAzrD*L}cs`o_ a7JtC2Jg=^xle`802|Mr_{*1q1$A1C9dP}_k diff --git a/editors/syson/backend/target/classes/schema/opensysml.graphqls b/editors/syson/backend/target/classes/schema/opensysml.graphqls deleted file mode 100644 index 55ba67fe67..0000000000 --- a/editors/syson/backend/target/classes/schema/opensysml.graphqls +++ /dev/null @@ -1,100 +0,0 @@ -extend type Mutation { - runWithOpenSysML(input: RunWithOpenSysMLInput!): RunWithOpenSysMLPayload! -} - -enum RunOperation { - INSTANTIATE - EXECUTE_ACTION - EXPLORE_ACTION - EXECUTE_STATE - EXPLORE_STATE - VERIFY_CONSTRAINT - VERIFY_REQUIREMENT - VERIFY_SATISFACTION - EVALUATE_CALC - RUN_ANALYSIS - VALIDATE_INSTANCE -} - -input RunWithOpenSysMLInput { - id: ID! - editingContextId: ID! - objectId: ID! - operation: RunOperation! - inputs: [RunInputValue!] - events: [String!] - arguments: [String!] - schedule: String - subject: String -} - -input RunInputValue { - name: String! - expression: String! -} - -union RunWithOpenSysMLPayload = ErrorPayload | RunWithOpenSysMLSuccessPayload - -type RunWithOpenSysMLSuccessPayload { - id: ID! - messages: [Message]! - result: OpenSysMLRunResult! -} - -type OpenSysMLRunResult { - modelHash: String! - operation: RunOperation! - target: String! - ok: Boolean! - verdict: String - schedule: String - finalTime: Float - outputs: [OpenSysMLNamedValue!]! - trace: [String!]! - outcomes: [OpenSysMLRunOutcome!]! - resultText: String - diagnostics: [OpenSysMLDiagnostic!]! - verdicts: [OpenSysMLVerdict!]! - instances: [OpenSysMLInstance!]! -} - -type OpenSysMLRunOutcome { - outputs: [OpenSysMLNamedValue!]! - finalState: String - trace: [String!]! - error: String - linearizations: Int! - witness: [String!]! -} - -type OpenSysMLNamedValue { - name: String! - value: String! -} - -type OpenSysMLDiagnostic { - severity: String! - message: String! - code: String! - documentName: String - line: Int - qualifiedName: String - elementId: String - siriusId: String -} - -type OpenSysMLVerdict { - subject: String! - kind: String! - holds: Boolean! - decided: Boolean! - detail: String - siriusId: String -} - -type OpenSysMLInstance { - id: Int! - type: String! - typeSiriusId: String - featureValues: [OpenSysMLNamedValue!]! -} diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index d5b6773770..0000000000 --- a/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,35 +0,0 @@ -org/openmbee/opensysml/syson/run/RunResultStore.class -org/openmbee/opensysml/syson/run/RunNamedValue.class -org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.class -org/openmbee/opensysml/syson/run/RunOperation.class -org/openmbee/opensysml/syson/export/ExportedProject$DocumentRange.class -org/openmbee/opensysml/syson/menu/OpenSysMLTreeItemPaletteCustomizer.class -org/openmbee/opensysml/syson/run/RunResult$MappedDiagnostic.class -org/openmbee/opensysml/syson/export/ExportedProject.class -org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.class -org/openmbee/opensysml/syson/export/ElementSerializer.class -org/openmbee/opensysml/syson/export/ProjectTextExporter.class -org/openmbee/opensysml/syson/run/RunOutcome.class -org/openmbee/opensysml/syson/identity/ElementIndex$IndexedElement.class -org/openmbee/opensysml/syson/run/RunDiagnostic.class -org/openmbee/opensysml/syson/OpenSysMLProperties.class -org/openmbee/opensysml/syson/identity/ElementIndex.class -org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$ResultParts.class -org/openmbee/opensysml/syson/run/RunWithOpenSysMLInput.class -org/openmbee/opensysml/syson/run/RunResult.class -org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.class -org/openmbee/opensysml/syson/run/DiagnosticMapper$1.class -org/openmbee/opensysml/syson/export/ProjectExporter.class -org/openmbee/opensysml/syson/run/RunVerdict.class -org/openmbee/opensysml/syson/run/RunResult$Builder.class -org/openmbee/opensysml/syson/run/DiagnosticMapper.class -org/openmbee/opensysml/syson/export/ExportedProject$ExportMessage.class -org/openmbee/opensysml/syson/run/RunWithOpenSysMLService$1.class -org/openmbee/opensysml/syson/run/DiagnosticMapper$Mapped.class -org/openmbee/opensysml/syson/export/ExportedProject$1.class -org/openmbee/opensysml/syson/run/RunInstance.class -org/openmbee/opensysml/syson/run/RunWithOpenSysMLSuccessPayload.class -org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.class -org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.class -org/openmbee/opensysml/syson/export/SysONElementSerializer.class -org/openmbee/opensysml/syson/run/ValueText.class diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 7f85d125a7..0000000000 --- a/editors/syson/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,25 +0,0 @@ -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/OpenSysMLAutoConfiguration.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/OpenSysMLProperties.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ElementSerializer.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ExportedProject.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectExporter.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/ProjectTextExporter.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/export/SysONElementSerializer.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/identity/ElementIndex.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/menu/OpenSysMLTreeItemPaletteCustomizer.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/DiagnosticMapper.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunDiagnostic.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunInstance.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunNamedValue.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunOperation.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunOutcome.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResultStore.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunVerdict.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLEventHandler.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLInput.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLSuccessPayload.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/ValueText.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/validation/OpenSysMLValidationService.java diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index 91691dae9c..0000000000 --- a/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1,18 +0,0 @@ -org/openmbee/opensysml/syson/MutationRunWithOpenSysMLDataFetcherTest.class -org/openmbee/opensysml/syson/ProjectTextExporterTest.class -org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class -org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class -org/openmbee/opensysml/syson/FakeElement.class -org/openmbee/opensysml/syson/RunResultStoreTest.class -org/openmbee/opensysml/syson/OpenSysMLPropertiesTest.class -org/openmbee/opensysml/syson/ServiceBinary.class -org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.class -org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class -org/openmbee/opensysml/syson/OpenSysMLAutoConfigurationTest.class -org/openmbee/opensysml/syson/ElementIndexTest.class -org/openmbee/opensysml/syson/RunWithOpenSysMLIntegrationTest.class -org/openmbee/opensysml/syson/ValueTextTest.class -org/openmbee/opensysml/syson/DiagnosticMapperTest.class -org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class -org/openmbee/opensysml/syson/FakeElement$1.class -org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.class diff --git a/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 5aa32dce80..0000000000 --- a/editors/syson/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1,17 +0,0 @@ -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/DiagnosticMapperTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ElementIndexTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/MutationRunWithOpenSysMLDataFetcherTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLAutoConfigurationTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLPropertiesTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ProjectTextExporterTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunResultStoreTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLIntegrationTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceAnalysisTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ServiceBinary.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/ValueTextTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.java -/home/ubuntu/repos/OpenSysML/editors/syson/backend/src/test/stubs-java/org/openmbee/opensysml/syson/FakeElement.java diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml deleted file mode 100644 index 1de53effca..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.DiagnosticMapperTest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml deleted file mode 100644 index 8ef970d748..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ElementIndexTest.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml deleted file mode 100644 index e8dd9fe3df..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml deleted file mode 100644 index a577662e57..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml deleted file mode 100644 index 65c8fafc77..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml deleted file mode 100644 index 89923aeff1..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml deleted file mode 100644 index 4af0b379bf..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml deleted file mode 100644 index 5e3ac7894d..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ProjectTextExporterTest.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml deleted file mode 100644 index fa5a8cc314..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunResultStoreTest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml deleted file mode 100644 index 41e9caf668..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml deleted file mode 100644 index 79381efa3b..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml deleted file mode 100644 index ebd4687eab..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml deleted file mode 100644 index aa50f541c1..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml deleted file mode 100644 index b230d0a5dc..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.ValueTextTest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml b/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml deleted file mode 100644 index 34f9aab142..0000000000 --- a/editors/syson/backend/target/surefire-reports/TEST-org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt deleted file mode 100644 index a7cd71d48b..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.DiagnosticMapperTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.DiagnosticMapperTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s -- in org.openmbee.opensysml.syson.DiagnosticMapperTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt deleted file mode 100644 index 64de463d3b..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ElementIndexTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.ElementIndexTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.046 s -- in org.openmbee.opensysml.syson.ElementIndexTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt deleted file mode 100644 index c054a18387..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.208 s -- in org.openmbee.opensysml.syson.MutationRunWithOpenSysMLDataFetcherTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt deleted file mode 100644 index 44301319c2..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.242 s -- in org.openmbee.opensysml.syson.OpenSysMLAutoConfigurationTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt deleted file mode 100644 index 007b5529c9..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLPropertiesTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.OpenSysMLPropertiesTest -------------------------------------------------------------------------------- -Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s -- in org.openmbee.opensysml.syson.OpenSysMLPropertiesTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt deleted file mode 100644 index 515229e277..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s -- in org.openmbee.opensysml.syson.OpenSysMLTreeItemPaletteCustomizerTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt deleted file mode 100644 index cf1c5f54a8..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest -------------------------------------------------------------------------------- -Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.openmbee.opensysml.syson.OpenSysMLValidationServiceTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt deleted file mode 100644 index b20e75d287..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ProjectTextExporterTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.ProjectTextExporterTest -------------------------------------------------------------------------------- -Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.104 s -- in org.openmbee.opensysml.syson.ProjectTextExporterTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt deleted file mode 100644 index 00f7970824..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunResultStoreTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.RunResultStoreTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.089 s -- in org.openmbee.opensysml.syson.RunResultStoreTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt deleted file mode 100644 index a009e25019..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.041 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLEventHandlerTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt deleted file mode 100644 index 9c3079671d..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest -------------------------------------------------------------------------------- -Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLIntegrationTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt deleted file mode 100644 index cb8aefd4b8..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLServiceAnalysisTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt deleted file mode 100644 index c636d7e278..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest -------------------------------------------------------------------------------- -Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.746 s -- in org.openmbee.opensysml.syson.RunWithOpenSysMLServiceTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt deleted file mode 100644 index 1ca5b84ec2..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.ValueTextTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.ValueTextTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s -- in org.openmbee.opensysml.syson.ValueTextTest diff --git a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt b/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt deleted file mode 100644 index 58ad82d986..0000000000 --- a/editors/syson/backend/target/surefire-reports/org.openmbee.opensysml.syson.run.RunVerdictSummaryTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: org.openmbee.opensysml.syson.run.RunVerdictSummaryTest -------------------------------------------------------------------------------- -Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s -- in org.openmbee.opensysml.syson.run.RunVerdictSummaryTest diff --git a/editors/syson/backend/target/test-classes/models/broken.sysml b/editors/syson/backend/target/test-classes/models/broken.sysml deleted file mode 100644 index c4f16e3b2d..0000000000 --- a/editors/syson/backend/target/test-classes/models/broken.sysml +++ /dev/null @@ -1,5 +0,0 @@ -package Broken { - part def A { - this is not valid SysML; - } -} diff --git a/editors/syson/backend/target/test-classes/models/choice.sysml b/editors/syson/backend/target/test-classes/models/choice.sysml deleted file mode 100644 index 72b878f9de..0000000000 --- a/editors/syson/backend/target/test-classes/models/choice.sysml +++ /dev/null @@ -1,24 +0,0 @@ -package test { - private import ScalarValues::*; - - action tally { - attribute passes : Integer = 0; - attribute lefts : Integer = 0; - attribute rights : Integer = 0; - - first start; - merge again; - decide pick; - action left { assign lefts := lefts + 1; assign passes := passes + 1; } - action right { assign rights := rights + 1; assign passes := passes + 1; } - done; - - succession first start then again; - succession first again then pick; - succession first pick if passes < 2 then left; - succession first pick if passes < 2 then right; - succession first pick if passes >= 2 then done; - succession first left then again; - succession first right then again; - } -} diff --git a/editors/syson/backend/target/test-classes/models/counter.sysml b/editors/syson/backend/target/test-classes/models/counter.sysml deleted file mode 100644 index 51b1487612..0000000000 --- a/editors/syson/backend/target/test-classes/models/counter.sysml +++ /dev/null @@ -1,4 +0,0 @@ -action def Counter { - in x : Integer; - out y : Integer; -} diff --git a/editors/syson/backend/target/test-classes/models/req.sysml b/editors/syson/backend/target/test-classes/models/req.sysml deleted file mode 100644 index 3b2c1a5c1a..0000000000 --- a/editors/syson/backend/target/test-classes/models/req.sysml +++ /dev/null @@ -1,7 +0,0 @@ -requirement def Holding { - require constraint { 1 == 1 } -} - -requirement def Violated { - require constraint { 1 == 0 } -} diff --git a/editors/syson/backend/target/test-classes/models/vehicle.sysml b/editors/syson/backend/target/test-classes/models/vehicle.sysml deleted file mode 100644 index c44103aa9a..0000000000 --- a/editors/syson/backend/target/test-classes/models/vehicle.sysml +++ /dev/null @@ -1,3 +0,0 @@ -package Vehicle { - part def Car; -} diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/DiagnosticMapperTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/DiagnosticMapperTest.class deleted file mode 100644 index aff3810f20768121bdbe711ebc4968e554abd90d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3451 zcmb7GX;%|h7=A7$OdKNGagExFH7biTb*q@TrGPdy0tJd<7ds@Ecp;gIGZQPVZS7v| z-rD|;_5i*GeZ&%Nx%=xCGWlO_Pp!A|NZ?BfJ^v8MF+Mh2t^S_C&P{f z?CyEP@y3v?cdLEr-}XRJ!(RcM)GVylpG#_>;oQ{Kp=GCAYN4PQWS^K!?4Z6sqBh^ zPOvg`Sn~|$8rA#JO*SYCD1AO@l{cwk2VRyA9AVG`3AIa!{!xZAZBgV8OP1~Gqu#-D z6SgH2s|&}`tDsL>+|STmw>TplN;|E$(Gp2ZDmbxG#G31hk678VOvp(}Y#zZNMJ#7! z2R#&34B!>%;3t8OQ$oN!T&hUNLS7>#2bY)LDlm`MI5h6t>+o?jj(#Rp2n6H z)-;`iP?rpA?wAVr;L-Vgk($pY9$R*7jTwL*PvP*WjMA8LrR9JVg%PEvad758beWw zXFA_)^yGhwr2W!0K3d=MK)aM$xn*?(8CDq6f#-+*$FPNLKGXSiy{sQwF zDsm0Q3v5lJbYK!w3Z|oY3o{#aS-WiNb>#g{OAWm!d&9HdjboK;^~7)a&8sfi*Pg4H zQE|_<93grevkLA+@iyL}x@-ZdufB~S>czR*grPA(O=Uw-lV!7x6Il%FX_A^JttSrH@Z?QxuypBw>1|Y-~$B@qgcX+L6ckO zd?N=#L^x9vkrbhMVe?v30Stj&>Ua}3uHU8prL8Yq3jQ!f%QZ}Q#we62_@QAdN5}Sz zF!@-S)+c+~m@5!P%UD^XFk{$4{tk#C_nsi@&a_Y2dan9)EjOqn!(J+GXNvk^%JedC zbzh-|-ddDNZ2U}@*2N?F_BRrz> zWBS#BE{{ssrCKOcgumzbZ8PYP+;O11s29!GRSVzF9?lwt{0P=&y=_S?y$~lWz42POsqH zSQSIFe<7h=)n2P&gl@y3aCimRDoC$jED?%@PFC<{A{+}ZW6Gbr1TXl4Tlwcj72^<0AH87<*}C>_ZkYED|t}Z~#weIettpFZ-SZUaCYZ;Y;%T zC^){t*W~dquHzegi!H=|oa8(~h@>3CQ+!9${dJ{yq<+9KP@ZlYC^D4&VAt_`LUmh0Bp>06ua>et82z3z_h1`0!ySP|2VPGUCHp(zwt{qdW>p-gAN=)Z0!@`LHq)SAk ze&OUJ892vK{r`415}v}%d=)Xya9XSKV=zM*$S7QN9B#tKM9lvp!>@h#|2LyP zNK8_+J=qIIR^YVQ83iiBFfQYYfiEmvMTy}|Qm05u&spa^hJwGta62D9?QA6%EJLPK z=*YHWVhmr#30!BeGY{`Cr<+AgGK{vkTav0YmDXS?wwba}#x#SqBZE+H@UC#z6wOVZ z#8D4(Avb$k`igrLcNTL7<}KWWL!pl|I#OX6_Jb8K6pg*W|AXOtIpdxiU2sMS`e1K!qI+#;$pHgO-h zE~RZ`7}|RB_&37s+?ZrNBjshvT63kF+=~Rm;Ii+M7_CVqHX>RJL4&tELhPE~=3bKr zGXBrNLA@u5u#>dmgL@?ZUgOPBVJPiL<%ZjluZ3Gx?js(E?TCAFM+!HdGIBa|veVph zB7Z~VPCRG0b+S?46+-3{Pa|3_UD1@Gr0l9n`I^TgOgt_pE;|vePNx&~q!vLkG+8EQ z-H(E{Se0>+#{Zq_&3NGH`K&1=f@LqBEpj>X&*g&>PSf%R7%t)wmP!6Ve+3LDD6Mls zRtRxOGLl0x2Vk!fl~p?9Yrw=~I;~UzKVpskfS>5LkQl$DAOnOn4q^Oa4pNR>L~++#uUHn@y4hY$fM5o{}^PwP_*MG4VHU CUhbIy diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement$1.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement$1.class deleted file mode 100644 index 14852838ff245592bfffb0e459e38124c1ef13f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1394 zcma)6TTc@~6#k|yY%g1=h=>=IYSq$K77%YK5=jG!DQGO=fw$>)C=1&ivO6{L&A;I< z@KqCymj|P-{wU+wDU_NL?QV9??3p>|eCIo7=GX6U-vK&`{W} za~KFqw0139wptXatsK`{sRzpEw%YQASXaX5O8OLa$?+Vu%rKF!?(A2P~s!pKFDU9Qsfe91mG08BZBX^g{ z*69MA$j|gx9|PAOE}FQ6%M1~@%P{uWJ{^VOaei@d zxX)XHn4*ZOrcjkG;rUaFc`A*R-!8QwL%OE8eXzj~bs`3C6PS~#9MjH_s5woKtF})z z&jyULRMd3zHm0zpFRaz0K3gUZYJGeD*St%87X4n6HQDxUvF3yo%k-SM*)TaO>nd?8 z1IKH2C^c~x_ZUpE;<^>-DLR{BIjOh)b+meq6r~d16oGmw1FDv}?s>wmxI73%fN8oO z;&fB6OeVY_XcnO_g(;F(XtsqYVkFH%@e^2~H1!$A2fgbmjl*CxE|3?X(AkG9uF)S^ zXn*0liR;K|zb00n4zUGs7r36B(uezNWaB+@dwfyrH>f> zin9#wkotlPditI=MR9^;Q6rfqok?$j@P*lAyO^>X2}6;z1|pMB43spOA*O-Ml0E{9 fkauQtnAe&G+#wmGt7H-PwI+=RB$EU*j6lyHp<-mN diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/FakeElement.class deleted file mode 100644 index d002861e8be4e32fac4c90124b30a56721f74871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3984 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 GaQqJ%zk^}` diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLTreeItemPaletteCustomizerTest.class deleted file mode 100644 index 2daaee68690a2f68e704f43907e45baa78548f8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcma)5+invv5It@~lWZ4SQf`Gpfv2WO_?>W36^c|TP(-5i*-1x`VZ8V7-u z=i2D-Qeb(fJ*=Z4@Y=eGv@25I?CMmqmCOXZbtU@!Z!t)+V7u~Dj(Q7ZVPn( zTcY!HFRjjiJm*vE+G7$}>uE#pO0KpWs8P?1rkX3VUnP8LdluvF z2yD=&nf2uRq2jPMKR6cH{7{;p3mR&#nR?F{8&sJ0Vyj}#N*))Pl`|d4RsD*|u*0Np zOE;!BI%e=>u{fT_e&Qi+@tDRhN*+`Q+~J+%RYcA1H;6A4yvZ`cKm&JKrgH<_!xo=_ x`;0DCm!I((?b25BJ62oGueg46;Um5aV3q&$FF)y-p9hRZmTg`IhZh5T^am%5>j3}& diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/OpenSysMLValidationServiceTest.class deleted file mode 100644 index 102ead0a56ced86ed306cbd72d586d3903840b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4805 zcmbVPX?qjb89mn)9$8F+GXWX_VRaJQ*a(7~6d6cuV`3$;AxJTGTbhog!5&+hQD;UD zPM4&lO}eCe+H~Ldm87lg;FhNS*!ENVfBN*?nbC%g5cqkld*?3idfw&!^MBWG062wz z#L$6G1rZfn&?V5bs4we@f^N+x&dn_vIZvSLq-mMnX@SnZ{uu>Pfic^ePuL~HD$W^( zKXF&wVj;m_+e$3!1v9UECa33kCbQyBrDtku8N*pNbB2PLK%ylbr)(uIl&uSfTP}DR z&vuL$y3rYff_tR2_X-U6rSFi$NdJr^(4*o$XadntSVQ2kzVywyk8E7&50=WFSxBT! z*BgmpJ9a48sp4IDKwzJgM|WMr@fH&~%AC+kW@6M|phaAPSg@O2&}rM_A=5g&eqW;v z6eO>J3OVk=ZUuW(JSaW3Imh~W0mXDDiY0F)ihXoq&bt!B0UT6tNJTFm5*TRTh9ovu zHVb*fkp>H7y(JKu9N0S++#Bh}Bj{7muVMg)1%}#TP8>Ntq6D_4rZd^m>1=8=J3$1s z<^S4s+HMF(6eLs}#W8_L+hHC6uqwYmHx;f*W3&grx&U`&G6ly4Mq0{B4!4N3tl@f5 zyqj@+erZ0L9F-<`T*Z5Ef=iz6%p1hvWFz=9o?}|`BX=q4$n8XJhQ*X#DjE4Rrao`k zu4m>HoDw+FQrD0`{Z1552y8JN$9AF^CC2CUd=%pXf>1w+37IX<3cS9Fk_{0as(ptm zDa$kF4W}_x+yNn(jgpv@0;UAA?V+iz_=pdGBUdm>t`Vl+AQev(jG|$AOm|!HG|~#D zR7~TXz`cHwtK}Pk4*Rk|Z=-2~#83Y>AN7Oh85I|h5xB2-li!%x&fX%KF;{yaksZ4;6HY!+kP&+6KqMvruST8TB_z<3> zSPYs}ULYBYRr7%9m}QrFzgV&@nqN-C5|En6n;yez+$LbI$hx6GmsMy^;HkjxcR^(n zAMHY3g#kKMSdNSx>p6PPOL@#`a|I);F$xw0`dZrOtiEJ~D2rhp zixR_20y{P_bpK2gMP{1-Gf~(~qGo<5$VX9pghkQyEtgCr^e6}=<$2w)Xssy9EYfAG zdh>b4^om6EiiESKLEw`7{FsW5;}dkYpUrkibvG1q1uqF4mO51pZ4@s{UlrM@_yIAd zyJoH)T`|0ft14c`rzj8!pV2*CK%>t$1jcr}A{&5L1s-qIzZOZ7>xP;h?AEIKXYn}& zpI7l3z94Ymwl`=O)6M8bx=i3i`&_FY5BUi zX}j(xa)@6jTb@}oW=z+VD7Gxy^BV^4?eV!Umf6H67Rx1*NcWpESr|$DfGb-|w}IT) zN^`8zME)6pW33fw%4dGZO8O6#NS#fu;RdB{)XF~_;<u#6<*?Q$`Rhnk)xj701b~a;RrBua1?@ebpJ2{L=q=Q+~ar;^+R?pJMnkDhgIrtl@2egZ1=eTFds5kx2Wx zlc0W?`Pg<=Xz*g=*S{NMJiHX}pVX~BHLIHSB*24_7d#4Oj5kI+7INU70;h0k7kOKm{MBbdd^j7whs3AVxk9Ac{DS({v}Wn_YGsPhbzye3YK! znBjO4dwuzL26Bb+M{yqC#&@VevnJoIY9d}HeT5wUTh(M8^RwFUD$J=+{DKr;8`dnX zL=C3>RY&u*<*HK2$VSzN2C1pEK|B)Zd?nC1xrLUBZ)sBf1z+`KSG^k>$aeW8}uugy_IsS#?U-36; G82>+5*^=P^ diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ProjectTextExporterTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/ProjectTextExporterTest.class deleted file mode 100644 index 15db73fc34e0ec5cacddc8a1916a17b55eb1c79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13420 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 Kjr+epp87u?O_N^$ diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/RunWithOpenSysMLEventHandlerTest.class deleted file mode 100644 index 698e1798ebe1eae582628becb857f37ac3d35c89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1998 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 diff --git a/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class b/editors/syson/backend/target/test-classes/org/openmbee/opensysml/syson/run/RunVerdictSummaryTest.class deleted file mode 100644 index 292ae37b330aae6c3981114075d1cbf6f64be9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7704 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 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class deleted file mode 100644 index cfc2d72e42401c24cfecc2b712b473cdc23bc63b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmaix+b%>g6o&tfVKdH$k+=}2L~x-GAT9)xNF2r(5^+`AGD>H6YrDz3nhOu$p~Na- zL?&_3uBQFgT7TF7_Wtq;U>mauN&*MgwIroR=boh3P8VLLww>FIvf!o4G8FIaw@-jH1f0{*V$7+)hMKQw{Kb0bhWvxQ5krVX>zzXCR6roddI$bxRuh4%W|P`8U0So&4{ zmy$i37H$47-EgzT-b{l66Fi8h=Si7@C9M8~)~(TLhZB;<`Em2$XkTEycS=*a76m4k zd%y1+iUONFC5Fn)%R1NEIE?0f*>dYto1U$EkUo$j8|Nu^zm42l6%gp-)z99S*r)`9 mh=vWth!QHF`!Gg0uAq!jj$_P^6DBZ;sd&7CAWUNhRp0|M&#lt{ diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeDescription.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/ChangeDescription.class deleted file mode 100644 index 8a827c17d385c62b16244d4b078df6af03879fb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1970 zcmb_cT~8B16g@+?ER;fNtov&;&wad|Jw+3@*EMyCv}__*Z<= zM1s-8`0S4|-kDusTN(w!%g&uU_s%)@?7j2r_qQJamho6e3qyL}I<(B1FKqL+ zDhV)XNyO30(7GfX;jb{nveVlMw4q%`LY{RnJaN6U$xF7VRJmCdo~TvLl6z2b9q#zj zv~6q0^(mON4Mh3hbsvPFe&(}}t1d%`Ifnt1+>#19qV+NxEn z@-ST$M8y;&?M`Sqx){38uwL%$^OB!HH_|#XNnAruofg4)m7&Yy?`p#18?Liavu%dS zDCHomFdg9>x^(o_0S3jjlY|3F3}T2hek+_^hD;3q!*PpIHZfnh5u_SN*q^fpPq>h2P&R8cs5qjs>vy)A3UCQqj5 zmMnYQ@`T)nPR-vFRN?ABw7WpVQ$^kD+~0F|Uqz(rs|S5wIRXA~_0|8^e~^;tW$wRF z4cn8AwtM(f7&<6mGwfArTiU64WH2fIGF?Y4N6Arv(kFs2+SrS-Ar{pjrhCJDwF$w^20y&|u zJLpJaf280zt$E`ZNh9|ash{XQLccL{Vh$U#%Dj1mQDab3_U$7~N_sI!dPBq?^eSrT zA=qBp_hAD4L~cOQoevOB>E=)A=9Ny8Za$PZS0L&< zg)ZPeePvlDtui%kd_n&wGFlWfgc5Qg7PLSsVGgwStF%6AI~EUq*lSTEf4=_&@DYbKlu)jsQpY{4F|@A4jW7eDFU;ZWO8P0o zT32b6eqtyey_r;DFdQy}&UKPSQ5dIkK8$26QWa|c&6iPb7^pE+k~EvuP(?kLXfSLZ zIm`TU8Y_KqoL}5z_z=byrt||9CDKe(tg^)P!|N#2Qm45Y1Y#EEDmT&;kuvQ|s#Jba zdd^UFhu&%5Jz;3C3NSS6P$#L-=|lvXG|*z$9`UmgA9L5Uy#COg+9SR&3~a0(_PE3I zC<9xoha>J<1JX9I!_XY_f#rIAdupFr?g=-rN3R}nXK3}NcO?z%Gj#6yrUUL-J->K|j~Qy?FpGWp zS>-y-Wvk!i--q{Dr_lj@>@He(2r7lBgh#|11>PjyD)2V(PJwrc_X_-&c)!3;h&u&7 zAf-}1th7HR#V*QZ0qbvX!G56nwSE5<4}L9bc}8nK;6NP}H1K?3Eu!%PFNqjl(OSam Ezr@R~lK=n! diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class deleted file mode 100644 index 82f5757fe68575abee8112d4a9e41f92eef57719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1108 zcmcgrO>fgc5Pf4(8@Hvjh4Os>sS@Rae?WjsC?cX&D@EeKZR3obO}D$&?mD8siaQ5> z06z*bPI_sD5}!D%=EHA1^G0ue|M~d~zgE5u+PvV?9S9&6-L>rI2+HnjD);Yb_pTO zj!xEf^#5$s?_4*ubrbtC>2yJY@Z;#jvnr$W z!d_;no3YVh%DxzBdl3%LEcaIwF-CGDv!`>O-hh5xpW|r zv)n)`aVAlo;BITsUh5{dkSx-BJ#0(*p1kYN*bzU$eR;bJZx8!o_a%OS13XT1JQ4dW G&Hn;)muB?< diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class deleted file mode 100644 index 8c2b90c610852ebdf24ef238cf64d92be0e36737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmaix%}zow5QV3pAov6EXRUFiF6;wAzGiT!ylJ2{-63t{g(H;I5p_s0d8=Dsw%)C=B(wv4w8TPG{Z7;WmdRt~x mQ=p(K9|usCjCY|1W!81rlYT?G6=+Jm4+lT>p`4D^H?2=UP?&=N diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class deleted file mode 100644 index b0e506de76f5e0dbb604b292738c3cf1849f0515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmb_YK}rKb5Uh!sHSr?8z@z5iJRs^tA_xmgf)AKXnxVruv&{4^`ZW(ez(+jt^0o=v&GKMf*M9xAU1%dIm z?w0F#uD|BIl3gA21PTkvSJ6Fz;l})G86}JqQMT|NEP-l#eGnWERa7A zR3KNhzcTPVf$NRdf!E|(bN;Am1Y@WaF>axXn!p_$tU0plseUM(Pz7obI$gcl*S_>4 zv-Lc;qXRcmThi%8+Ic3o7nR>r{u(i>a48BHTeOYaa~39zPpY5G$Th0-7N(6Vufm63 zWHc8n%-|x^+>qM>wG6=5Q9!TF8Y_0$!Yt+lN|8>q0xue^{}1(0Au@5^x9|b3GS0di zt}p4H6u5u3ILik9bqhDpU?JEd*JHC@p2=yZMtgm23rsiK?RMr@n%4ZPKrTt8(o()$ z8EkfB@W$|_UDsQ617*&sG8e5YVq7>&eMxDyd|mfmxPiMVBN@=+xki?MDZZHC z%L0?f(UoZleV7$##<3ZHmtX5a(3MY=NvCo^##@H_toYt@8eh~p3Zua7C%D2AngZt& z!Zs6vQjnBQ60ssM$~D0?#Z|8q@UVr>R(`_vlmj} zT{b)AZ|M!`Bp08$e$SKP)t1&9gMRa912dY`@XdB#K9XTKQ2j^;S(7Et4a2M=E%FaX zon)gQdJg*qww8Tg2C+*S7Qr4}JIMKj9Ex}*aQWn`>`am{ZgU0<@r~qAGZTornwc80 z6qU!XM5 zOZLrOT>CHkspQUn@+ExAf`~Z1yx;*mRPlL=$)PkU|1>X8roSmTM)8BZT; zJaszbnf*>=Vb@RU!yfD$zF?L^_!3`HUSPiyZYIo3c$u*BYyPjXCJ)G{G2CI<@8TZr P;~VPB)IY_yXrcZO>Z!Rc diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class deleted file mode 100644 index f14ed561e562d5fda91933ae60ffafaf4d34ee42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2908 zcmcIl-BQ~|6#mv=WP>Qi1qw7xXbLHaBue_G4^e+I9urr7Z`V91&$YOw@ z@X9@MZO`@h?M+^lL5*QxN%%r7GxW_b?BtO{-oT)VA(#x?GT66y)f0`7+o1?VGqkI+ z-jF``m0o(DyC(xzi6d^Sfb-Cmh^q9rH_JpLHf<{5*<}%`$Z*`m1l}RPKMQqG zsyE!Kdg8m@aVSCtwyQl&nV8m|h7S4hituX`Gb~b~ZkTuvHyLtD#z+_r=gZeZ-dX6T zts%^qcptY3!hstetjZc^*u6FgB^`0r#2oHW0q~!iu17iYt}9-O@yoqeysDgqT?6wB z_T?#V)se2LQd~LtEwS&rsu@szX3tf@QYubTP|FU(dY9VeQO{Pjj{Uq{Esl1$Hs2lS zB1xx2chA9a7Iql=w7$?xO*OPE0$%|^>*Aq=uMTuA|8Px}$uMy? z>T#nLx$uIk16kW}1Gml<4+zDtZ<2+cM|3_jOaF;q*8%Cgj?MSDW>JePF^s2?w+oVb zggo1nk}VRpymd~K;ZB#ZC%Gu-F2hC-_5WFigIls0RQWTZ3+BcJ&Gx=-vUJH??Y^)g zr3zKxHsT`c;d8(^H^ljGoDn0em-z=O`O^VPYLG z8E$nte9-ijsB=3`Y7(0vzt@7p@H%}i!atIS+>RC3T)*b=aJDSvVYA^}blIZ0mKav3 zc%SmH8i1bHgw#NP5MODYreMpK09f(lATD&x6P%4-ITG%yl^T@Y3R7pu%wT za#cFDm@ppF?8<=QLz?16J({U~7xkEo-ZUI(Z-LesSR|(@7|ChWwdIS*(>ja0=)*nQ z{e^S~=sjco31%&xz_9L~VA#5Mf`T>Pe}XYj`}99R_8=TK{V&J1ctFVX zZzjT|_h%whnP{bP^+hXj^@j^^1f#)|$p5?R`wr@hmw6xzaSXDrjya zq4)_#XlE(-ztb|)h1ZN#61<}{X+P^>ehc{RO6GI;oPy}+OZ3(> za@OK0KDfv}rkZP~D~B)eB>~V>vy47KA46?QHhpPIS?doNml4V)9vNk-m5;RX@YRfq z_$r~3HZEMnI4(Me;7(93;uA?b8M`c@9r)8d5lmhk!6PcKWlC8FkMT9VA5bC1*Q9kx qI##E z#gBwqF)}!g?b!KZe|dd>egS|J7{t&(xHC2vloqOTB%HEp?nG+J%4pIYwnZVQ#!6NT z5^RZ_sANIRBxI$;_}06|Oyy+h9L*h@QazE4AwuZSRen;XOuERCzbj_>Z~Ay zx5LYI*W3D@vrMtl`N(LdM^4t{ErDj_QmZOfMvH*+^wZv~KuFsBWN1S&y!WrZB7QL0 zL|R!AlXVC^`i382FF^bP2q6j{gmzG&RA|+zn~2B%uT^VixT0CcM%3&|hJVOGi0e`a z-5WEvDV?jpzJuS%dlY!vLO|H^e+8i7x!i=7w_|S&B4~Tn@zV9O4T0)Auv>@sn?J+Q M^T+(m{n~*32j_7sxc~qF diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/ErrorPayload.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/ErrorPayload.class deleted file mode 100644 index 5b0496eb3eff8c951e178338140d71e69ed1237d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3948 zcmb_fYgZFj6y28qL&ESDDQc_5MP+A_j;F9w z!7dd~qfg*yO-3^MvQB0jMyIAGrv!#GwOdIiupN73`u7T)i>4~%J2un8f`O=K)e5DpXSZa4sW7;Ohrio>g%W&#|gq z&(XEK!1n&I7JXa6Y>J_CG2M*kaah3%Dqh49fu0KZDmj7pf??&x3`a(^waVaRL1tew z)1B<)eVYvsZd5O($P6)thI zWUaC@J~-)bhHT|3NjX`290G}HyXa)~F+&zyNAyfSAU7>GVCg#1e!{jr*K@Q&P$_OZ z)V2n=@)+_|6hQ;^^LB2f9q&k#k0{V}PT95gmnLw_?J{!d@L(^!-8O+1{<`?rh+kXKvYzeGZZoUB^7T(NZ=q5U?kUa6 znYz0tW82q?h4gxz5cL))&alU#;#F2RTnt=ptQ)3qU9NRJ-q(~SlRUP`BIt%Zaq#mWT+=~H|rP$G9Qg<#ME3jIuSP0d7l~P6({3P(y#-i+oApN|GwDSHfFpC&E<-M1e zgid)+_20aPa_tR{>u?cqj(Pc^Z4{f-@m1JNNZ{jU}(YOzZmjsR^s5*ZnVa4z^ z$0{MowO+!DVUFXL7&>kM-Td|P7huo`r@{7JU5RFXcI8JP6hN1ykR61a~; z0;_llxPxPzBX=AAgez%m4rY diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IEditingContext.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IEditingContext.class deleted file mode 100644 index ffb23c041654a405ccc2fb3779df8ab8db6c2bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmbVIO-sW-5PcKdrmg+5)`S0`MR0E-h^Ja55ZXgS@h013iCfZaNH*f%^6J4K;Exg~ zK@i20m)UtUZ{F;@_m9^%0M|Hi;SerN9t#yFIxCbYbgs)ngl3b z)oDC8sa4O`MT0Qf$tNiinZ{zZ-Ko$LhKn07@RoNE^VKp~+y{iQ|IJ$4oF%RZeU>S# zOzlP{rD~%?7^oi$2+deoFCt8)v%e(VNEewY6yabx+YlOa6EPV2I#tVZzg2l4w+UCq zz6oWrk-4t$SFvFqbwRlF|93v0&|RA{57n)%c1(WRb6(xtBJk(fYr-j-Xz}YZa?pmu p?saik_j>4aXTbScjhX*a(}ob;@5Jmrx*iJ|a8m41&jlugw-6h{u9dE5(@T^?Z(P`S!Lv`p7}?lPOj*`yNIF#OzZFN@D{xLV#=Rf^)9l`=M*enP#q(e62M>_AM?Uo@|U8u?k4;bn`jx5cm!#19-=+sAR diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IInput.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IInput.class deleted file mode 100644 index 844072c3fd27dfe321320ac0cffd12cac5257ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmaKmO$x#=5QS&zPqp2Mr%*(50CA-V0l|fMfEb685|fZLJ)8><;Gx8{?p@6Acs#!M z-k;|S0CrI3kRhzCuNXOY9up2znh213Zx9bvv$o_bbnlxEi}KWq_-i;Z5=QRx&bf3=$~l{ydx=|*Wj OrX4v&z~jFq}dlTpS~aW)nlfI}fX9U(ws z!G?w9AIEZ@f8O3-UIE|=W+fB~Ov+xP3)HlzTgue6+NDjCB1Z0IMr|9?^X1bT9am_x zTUD61oa$(MgQpXhZ zvSCWm1|tOb$g5O8*lah*m|F!i{4qr;L u4(})k!|89*ukm`W6ID2+!ub^HN?8I_#? diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IPayload.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/core/api/IPayload.class deleted file mode 100644 index 45386bbed8e2ecd001f9d14ad77d28e3225bf084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmXwzOA5k35JaovCn^ZyDRg5WK-`HC5ELW_7$;5WFlNFe5xklU58$E1L~v6)sNzxY z&+`RfhiQz6z&_+G)@fA>*BZ2~+4@`MODUTkgRrTTle2j^Z?YIe!lE#D!_JgBpRR@2 zh7f5+SgzK`U)471I8BrNmN2{cHdr~R6T)FwX3e{$zND6<|athizp}+g@Q*Rwqu>8o0K#yewznBz>gBA-6FbG z@Zc%Qd&!$OZ}Rs3@(KVaup59U;KpHp{&SKUCGoeN~2M`c56|plH}!`DkxKq zj84!tlwttu0;Y4-C|M|-%bSNercS^{v%HA{u4eIH<^3 zauJuhM)zd0TV>S(9okC31i!r!5GIss&P$Km0rtEa3$Gt#L z6}O$Pup42s$$fv**>|Nwat%SBTnrxx+up9NRWl|KSxRk`(XCF`#d6#zzl>N^vT*M{P z6UauOgx6+xSgMZ|_E0`!u&SoGV&N)2CyG7C-&>U}&TxBdike0&Tc}`>s)7#LaVdrM zaq&hgp!~$dH3s{XDX1Nud8Q%So)d(M;;S7=_VNiCRlKXXPc`KPLVCWv9v4S-rOGfF zr);h+JiZZjcDdSec3mPV)Me9gcN``3|HL>M>jH>zY4dU{dF6qyrqiM$t9Z zH{j^q8b1(*Y(s{s$?pk$XvN`Haa~KILhkjs++8UHKTu9L&bFV%PYlzdRqgeQIffbf z73Zc<%i?D|G*P#(jtzzj{rFVq1){@~hL~V6WOjS-46g@MCA?SiC8xU6NBqF?S}yl5 z*QI-helA;EY$3Npw()J&3o&0y6$kE;lh z`zC&2xYCdLm>5hn7|tK>N~aJ9j2qNP4KOUxx1b*aYB>enw#jy#<_2t-G^a+334B48 zef@yZxKMcuw)i*9UzhZ!viJrwm8CZ*zNWKZ7sH`e_V; zukbbfBe;m1MKeur;3my2qSkBkB*VZrG|w2w{|?O4FV=S}Qui$_Yjr;otfAd1B<+K@ z_(ZEQA~pKu1#GDz7BRSwS&1G^IMt+uGoPiJi z0LS0txNSOPu*f)m$mRBKcc0y7cklbp{civku~I?-Ll%Z@9K#61l1jE5;fFHT!qGC3 zsdjwTiB%*bqaD%NbhJozq%X9?W9hv1)*4|7Qov&)k_PvUN_P96GUIv?qZqSLv{8c1@aRANFdV0V)`eDS;)|A`2p0~E z%2$bSlD?Xg)329s9Ayg?8z(TqFh3B;Urib89JXedJp`Hf?Wo8}jSL;HDYdCjP;E}x zIE^z5Bi#2zOhI2E(~o?IXNsF?UH3MZ+W0=3y#EF-xRmFqAFV48yJpNGLaDB;KT* z4UxR#8zG%cG?mZ8Hcw<%?jH`DZAnFO547lD2LI6Y6lSs2Yp{mw!krx)jD;?F#NjKY zj5Z06*M!+tfv(^V!|6W%Id1Eg_qHe`Xrnt?`#B|QsA4}>@t)(dFe+!qrOp= z@hXpkQ0Qw-r9P!`eX!)YlLLnDc4LuO|M$xb@@U)sboDCG_w4d8Y)K=iy7ucR5{Vmf zt%bJW(kKsba#(s6Jci3ht5U5pF6aR+;1X!o>6^qfX6S#F9)kj|p)kz4Z!}2^*D*(H zmG&!i$LK#fzX!(f71kcc8TN4!*u&WZzVys%v=&Jf^pu@L8S}KWGeg|KO_GLii`D`b Z;PmgF(%Eg?#bYedNs+W)VHpif{sKKK*y#WO diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/events/ICause.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/events/ICause.class deleted file mode 100644 index 8c1985333f3042b1a771cba1f92bacbdb780c165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmb7A%TB{E5S$Gm=>urhuK@Az2OusKAytat0OjsDR&nLVl^s{&uQ+qy1NbP!I^_p? znc1E3?rQw=`}Gar4$~4D;nMk)(8`)^&>|RbVi3x0wyxD}7lhvRw3y2nbcviWUCW&m zR<t0faiFcM+O%RWKHzoBExGhsB>vM z$`2(ERiK(7x4k{zbET_8UJr!d_~>xqE57zpXi<^cZph%h(v6Ce&i1P31>4FMT80e0 zb*Wb!5z^<-%&fI5J_+s!x6WI}vVmTPwX+in*Y&i}%5y^=`hlX$Z48@D8SE!8z=@|M6&Wq!C42v^ekdh!fsd?vCIS&JaCN81Kkk$LXWEehCTUAFWTYkeP zE=PVnI}tTGjN*!ct0u;9jbXf9M@R(j3EoX#-cFMFDv35ulE5EZX04R41ndTG8W=Y* zfk}pe7EMj99B!#lGi1CShC9h*Z?|@(t;;bt$F9`B+YEypnveVpOfig|LXl__X@UCC zU2U<=VkZGHyy|Te!v#yZa-+GoC4-vSa>!D&JX<*LM4+N`Y|QG0BCT20*_vu&JCBIV z47rXF7~Z7B?)awal|oOZc8g);WTm9IxZ2GWDF0LDa;;WgAwd0AE$k2L!jE(GRaKpS z=4L>YFLgC&ITd~sb8WfyEFsibO)K4|)6o*5Y2(XPy=Gv`ii$Kal{SGEB5l%8%itDB z(=_lHJ$ErpmKi#Ij%FY2rMW{e(vMs#5_uLD$wtC4-1rcnkMWRIOV+Gy2ofOk=Fy-AGR!+ aKNvM&Y#0>p5m_==r1$7+36EQrC;tFjt*-h2 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class deleted file mode 100644 index 0b1668dc43ae37d34a1a2750817569b274167268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmcJMO-=(b427M6wzN>-1gv304lux`fK;g?ih2Rkj5U*Lngqu|^c>uV1qa|z6&Zen zSWvNH5k<*+dj4#`uAg53;2aKmkO>$$swC>h_<%APGBHT)mfl&k9Arhx*Y}N7-pKJ) zY1r6ml&#C+X4<3>Osjy*-GBb7pPglu>7>#Mx>R1yW`2XX~vYY^2z4< z+7W&fA6p+eKba6J&5jaeQhb~@CL{z|IP3C6Q6Sf@oGMaFWTcS3@CWv|6wonkn1KGw zR90~$6!7%VaA$w+bgEX3Q)Pb9_VYEuBC=xRtboDHMbda}nnZo{>rzhJQFjFh*h=dL h$kL8F(1i?o>DA9*r@hh{v?A;#d2fT9a)$55{WlKWun+(M diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class deleted file mode 100644 index 878d9c8ef13f054f362952159cf9716ea47ceab1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1962 zcmchY&2AGh5XWaileDFj@>Ra?aKVS3$}YViDpg9=N{PhT-I~P3wT;(?_QX4J) zG&})fyh#WxiAffOR@Q3$-efPdiTV!W&13q}XtzWH}Iy#b6n+>K)V^ z5Vrq>JZ?%(D1Oc+rUV{pfzNU{!B77&YI*xcoB!7GVlY~8%?1{&>r~jkYhZN=5LUY; zxI*koMGbuOw_E91EV~v0!WFvb09tfOHK7F!Xw%n91D4~9#wv{lTqSu8uFaCyNxlvn nBe_W@{nPRWNjKrvH0d@;cVKgxbeE)iaDP_32gLob0((3l0X&r0;zHaEGtBTY zulM5#V2g2zgs^tLWXX-LgK*GZH-U3^t(_Gc1J}w(jKW29d^mr@&PIPv(I-qRbyIAV zE%|h*B#(qd7lip@dHhvb^xBpi!X$Hz&t5Ui}OamOdJ->~S#K6>zRQxFCe$Nhk8HVnPQWJr1hf6ap*;75s>74fhq z4-G|iRW;S0U+*6Pu5qL>QlOYxa@KQ~9c513XR`67i@^oS)EVzY94#f%{d0_7V_V^P zWnK+=6Iyy$teh2%9fga3L_PlG-Udl;3S(~;&MQn$&+5PEMiPhiQbDtgVg6Jrocs!U zVNW$@DeFnYZ7|X&r!d7lSyW?Y^$DqS^pF?61w PD(v3CV!xn+H9GtTI;~w! diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette$Builder.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/palette/dto/Palette$Builder.class deleted file mode 100644 index 6aa02d9a8fd955b94f5454673d96c938dbf6db9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1809 zcmbtUTTc@~6#k|c7V7pw>k z(q1%nx#2PNEelI{D-7|u@^%XS7*LQ>aRDmBU=Z$m!VJS*hK$4C_`>0J+p7Df$uK)t zi)O8sPrDRkPT+5Pj<8w-$YD@HUd2TWF+8xHmc|WJv|X;b!V$i!8TMY=wz%cFT3a`{ z=W(s++1f^DJ^k1hW|KP%G0|kmcL8@0stQJk^|6wga6Jh-rlNpL#EIk>uOAr(cik=9 zHc4ZylO+%?!>clWTt!L7XF?WFEK`Z>%YKk;_z$`y@5HLzB+A*Euz20yYj9^v zZo2;?An6yDq0udx2D|5I%usG%g!YXhi!qb~E7*ey=E7(rFP|*TKsgxLyo@rWzcm;BG zU2*!gKQiclhH`J+uQqg_q)}u{`vR#6@V}BG=(9=6vR~w zBf*e)ra#v;Q@8fC$GmAfErvwJuncdRAyz0hQb=M%K}y9Xs0`Ua-S-Sr+uVJ|o1V*% zcKDCJ;qba`)qT@sxLK&3qK0ba;#tuM(il^aQISQCVbON>G~P6gw#zlwa17ton)YGa zwz%cFT3a`{=W(s&+1ge(W*9Qa-&_QG+j9(SuPmT1tC+wQijbUZ9^7j-x$ExOwn-jm z!W}^vHN*7+{dZJM3H`LRv}O?&cNM(LaCczeW>vUuBqx@*+JgHga?> zAE>yFX@;a{hjNC8h1$SIyI7V61pKUu8@NgE`?|ZoYPUGUoeRNN1zJHx5hcnKI(A*q zxqcC>$f0#osZZDY^UJ>MZ0S9?yWG5{e}anj}GGQ*>{L6M0jQsG5_cDv6J_82Jl z&WjC(c*y!#&9HdgKiuWcj=pPBkhz-O)Xj$O7-BAkac|!sUY7<4Sb9nUU+G4C(e9vT zHn_KMx3+XgKja>F$ilDxAI?Qs?_ppdh#txXc`1wkB*hGyeOxXMPE_anB*HEiqQyym zHbM2P_I$IEL}hk&;gL%u?4X@i7lySn!htwBN#>2W!|CCcnBBI0r^z1}A{AA+d`lE> zhD&wsdK+BiDrHKd(;YG^w(Yr|qqoC!a+7$-Fm1HTy>+(S4$HJGq+<-DbdS?LIhH^z zg$>jdY^vD8Hw@QKTZZFXo^i-!hmmHeHtcpRGrWvufnhzj54aX8uIpCIyzGb*^8vQxZD0sqf^?X%2sxWjcQWG4adL2VfbXXeYL`MX}9F2!CPjl*cC-Vhr z^^7{zE!v@x#xJB3r}s?hPq4Yapgfruj|K54%^hL1G=GHg(!voYUy@o3AJH?91U>2h zLi{(-l|~BVG@qvbhecW`g^>6dOEe?!z%>?(gmc2-nZT_WKA~|(GC}Tk))vUtZCV?R zA^S5hLH88hVN`d>=%@IMltm0nq$O#qr+nG#Ls!O#}<+z$-OWk~9hIVfxph zSC;znU0M`ai}V&)O6eHafL^3T1WA$cWvTCe-e>y^@EajT9qGTlh_Z~NLT^DpvNU&$ z4_~)Gq$_zsZxR*y>0<$16jFr%L|~neG@6N!hD(27^t^zEB_b6>EK84~o5$Z|b9g{s zlEtaMAd_zn@)hOjy@0_LtkOG9pn2S<(JY;KnC;!U-ks@dq?w^Tj|eA?2UtfHU*j=J Sa}-^kWZUHA4jT9lQ~v?2*3A+C diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/Message.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/Message.class deleted file mode 100644 index 46ca5c5eb61852fe0bba92ea12833c343d6496ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1947 zcmbtU+foxj5IqwUHi-)%;UaheQPdES6%|o}cmXXb1KudC(x*)_6;_v>IJ2ROH$TV+ zt&-B>!4L4GEPHkrSOhI9KI~4k>ZYf7PEoIfjMpJm)^OYreQ*uS3 z?K{F#)-qShZg7TVRn)f_3Ne6JzI41sSp)Q%=tDn4%H^A!VwLNyQnpJqtF-Gc zmgU{bzF~L~uXx0yy_|%J9$TZjhRkyn$KxxljVhO`cGaa^6e^--yKA;|^gcRF`s)ty znrRQUOpUP2{dG})ZcBTE`&^Q<-eUaKMzn&qSYqglQ;wyAiGy!3x?-3oZ~yW37_zTK zOV;>fM<>CI-v6ZTG%DS#x$Ag9w`SckYnhiuP4`mJ6X)4Y+%l$ z!9e{!yx+C5<@wGAkD5Gk#gM7)dT00&Pk`fXiuatFQs?lA?bThbMk_+RZ#B!YC$sxB z_JJb9)vYF9fqtO3_G(}*c^;R6ORfw&V7PQBl%qHp zSYR0Xw<;AOB#bGVI|=H#1PXezkyOw_h}I6!B*I0y8KqrAk78N}OW(l8zr%Pvp?{_E zZFH6%vXk!VK=wS(f1L;~^F?_#2`3-xUA= diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/MessageLevel.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/representations/MessageLevel.class deleted file mode 100644 index 7e9aa499c3e717bca6188f2fb4a508668c8a258a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmbtU?@!ZU5PsgZ`)Ma*{7@z+;*<@PIt4{G5V8zIGB&cx%;KjqUPnpSlD6Zsf0B+w zh(^O_|0v_V-HapZ7q_In-o1CvJ$LWjzW@0A4Zu3q!w4{}*-lI4P187Wx#}8@(Q(zL z-9E7`Zh5Zi@Dqo-^r?G>ZMo_$cU`^3%lwp^Q835~f(S8$wf$nTq-hL=^8X{|1!P1) zR6xo*mF=o9TvMR`c`?rL`>G-4nrk| z2~37Drr-u{Qlh3wEnyhXWXs3;sjiy3)l#bm$Gqv~V@Tmv7}E-7aGS{eb|_h$HgP)D z%?_`=V_3-yL>Eonb@KxT&2tQ^l^@I?0DSye1$QyW5Goj!;cYNX4np-Kce3>ef-!2x zYy{B=ln6$ImQ}ETMbR9eiOcXZlO3u(MC2EgT(l3VGb3fg;+0POfIF}C1CuO!e_@y% z=1v%rWxJ`Hb=@&Uihds1(%Y0S`DZ5?61&_xvJdxkhkQKlQ0cOFWRQrZIrTQ(i;edb z+c`8W-DHSrM$6K@jzhRoCR?YmEYOnlI$s$`B<^RZk>AJ@70vEAO}=f2u8j`v*pe8f z%^Y1}ik3FGIVIK&AW1voOIi(I(mDW%lvo1cN#_r-NO6xynDb0jwl|XY@SxLskPv-#?egclZL~Q^7 diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/Tree.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/Tree.class deleted file mode 100644 index 240251d2f78703d9b7777eae0e84efd5facefba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmb7>OH0E*5Xb-9rmxsqt@Zf@OnWd0-der*03p~zYr$iZE^$kmgx!t!%?b*7_d|)Z zTC89Xx(hQqv$MZ>?A!a(3xHD`*eIY_fmKHdWrmHZ|KPi^pG58;nDS6Fl=~tP`i!CI zbjB4_84j00w~5NLER~v11{s&W7HM+%81l>rSrf>1$C36!LaRk%lAVqMH2N4 zxXIw8GIDtsi%fA>2`O^rhUqLz6P{@0YRS2BMEiVoI zc%uO|#`r}MjDniO4Ma1~1N*{g}PhiNWDekDvDHB;x2 z=@iFUrzx9NBu#S$JtwPAHY2^>or682a@VTOvGz)y0yasSzX2@TCA8>N|BA*I+GNor gv9lnZEJ*eWipd7leh}<$!tOr^jg^EwVi&Og0qdrDy8r+H diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/TreeItem.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/sirius/components/trees/TreeItem.class deleted file mode 100644 index f3860fc2725df402989bcb6c0cedaf17923643d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmb7>TTj9;6vzLC!C-Px#OoIjjA1eH4fMrmLR{nlB=K<@%`Aa#={n;#Bhf_P{ZPi! zh?hiOXp?j6>F=DLzJENw0yxK^gBSkAhqK!dExS2niMB#(xP f-6iR4NpeR2jS68BC$+kL&P3rs0}(@DU71D*(exHO4Ez0f(?51bs` zooS}?{q*}dyuAas!7xEXVB~xuDKq*xkPQ3aY+XwuXNF3$Rf3klV5?q~G|Coox!zL7 z)3(6)7)s@aX`ClHyLUO62p8xVRNbeQ=EOhpQFzR&W&pW7oR+;U>X1b diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class deleted file mode 100644 index c90f182e6013ba68a413269a30c43aa2b6ab10d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmbV|zfQw25XL{JX#*ip#LC159q@pd_#>eRroaN~?xqJZa_q=NK$*xx$`9ZsExcVosDGU z#Zq;VyujpCTOH2@M*9cz3~K^Mzn_Qa;H+e}M(VaR@|xNO`OxUDRCPl?|D>f`lEAdm zmTvl?=1wgPJ3E!Dm6Ychi9mkqdSBC(9vbZaJ<{Q$dQ#X!#>*Lw m;NbNz*ICJL4UA{65HD;b$eF`6o7i9$tGvJ_D}gO$g6S9AHDI^^ diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class deleted file mode 100644 index f879d11fbab807ae01d465b892ed7d97dd29209f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1434 zcmcgs-%k@k5dO9;v^@%xD)<8t@CUSDyaykPybw%`1x!vczPY_FWpVGW?(HGa$-X&6t-6-5mlww$^HvaZn zuMMm6m||G{ZTT{clTIhnMzr=iLUSXdaQnm;9lI!?%#e#s(sVG1iba2gVfN2Rp3yRF z*K7NE%rZQUblVlalATz%aW{@aD+A>Q!tfw!3FXE@A4^}vt`R3D;mY;8@lIn~i9m$L z6Iya5KM2jBs*O>-_1zG%y_85??`0y*;XxAmmYus55&1x9LQgce2p+?9Lxy5E37SH` z;7vuEN+a^Q+UJCf_GikRIh1q@&qjtgM7Yk7k9uGk8YBC?fO=Xi_KN#_85S;02gBST z=WeIZ`^{wsH%38iuOxOo!%Y&`Hz^C{9bpcm)^n~oRgKV;=AtLtAsJ}8j*tJXEdB)@ zTUmuxu!<`Ew;{%8=Fx|tmL6UE1&%7DC;$Ke diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class deleted file mode 100644 index f98b4b18c9c80a8b777cdaea22b50e8308431d54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2031 zcmcJQT~8B16o%g^EemCV0`gt4AYfaR_1g>lNI(pjQj8@Sx!blAI%K+AXSYQBHU0!m zAQ(-I*ZwHunQet)sTWPX*gZSjv(Gv6o-?OEe|`N9;0Yc@5ki-Nu!#t|8Da0Xq z*|)ay2fW}jbUzl3@SietB~!am^q|*3)I=XlhM~Z{>I+$S_ZS8ge^(WXXI&>-m6BmG znfaT#l4^csVBkXhoUeql--{TA3=EqX!4-zruG+VFL5hmUE$_&49epoLtIU17>=wDS zJgyE!fqRzE-}_ZtTDc={E0g0&*iw8T!*jf1E8BNzJ=~C7 zEsGVM#+Zq5okO2+irn#SO))UZu+c_RS~Jhu%-UuCoGb3R@{lVXW!gj>S4l?a!cPn@ zGo1<(?B<$@1ZEjV9L|gDUcs*LwGt^%@UI$f463ms>Iye& z-nsqmrFI#@Yt$YLgBdDzwpz|}wPWWcy&2B91zYag)F8C3zYO~&LCw6=P7*B?_|tGJ z45dp1Nd2Esu`TYG+~O-LEu9grXj31P?S#6tW9cAwu0Er*Rk2cY# zi5_o3*ZV)Cj|cQPmMMwLa-TTCR1-Zx^w}14t?C&)9?%mcXN~@htlqqlo<6}$6L&!m zwg#?orir1)>^V0PaBow2Yvo!E3I|Ml!`$2SG0A<5QM#t+nmNV%x%j%kAnbVsC+b1E ZaF>1w;U4Y>b`B57M#(=$L-!#je**?Q5fcCa diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class deleted file mode 100644 index 5c523127d16d668e2e6b29db722b3d36cd2699d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2603 zcmb_e+fv(B6kP{w%NTL736xNpv?)n#15wj^Ynrx@o2fA=&d?e9QemF~C9>p7GE@50 zKj@G2p_wVu4iEi+epDyxNHWNcVHk#obJgB^t-a4a`{>{Qj{gDhB^o&lVOT>-M;aM{ z$>-*QY1pQ-XKcx)>$L^D6y6e=twk>d{SUa^EiB(FkZ;fCa6B;IUi$bP1|T3`Wv-|^eof1ezBar%}!vs4mpk4mLnUoV|r%bdIE(6 zd?WBET2b)VbWAJkQOjvbCoq+^+J8gGEUwcv$85_7(v!YxA4u9+uU&$r3YTwG>wUID z{5N&X<1K+HN6OYiziD>l+CDiq0|h2_3Ouu$I^M=R0@=Wgm<#+^ybO&qg4K64acmUs zyE+zdo4EU?zrV)#3v6C3ZdJj&r=y4xvyMq*+B`b*NEBMi_xfEbij+cxESxte?f#0xNyxr;?~H zmHvuS8F29@Siab%*k;(~CNg-G!(%+rP}Q-HZv}3i)>p6V1Xf$d_alR-IGIAaFSoMckj#4P7=ZLd{ zdK$u!PeC}cRCCNi@aZg5dXcN&IHoz4%6~yD{tfN>CDkpfuDp1JvGURprpn7lm?=-E zjxhIVB^K5xOBKOE#aaN-;qm_?w1Nei}h*2im4$<{^9--&?7JR^+|Eu2u ze!q}<5g!snsjqNU)U)NqW867Qe^z6k zu|<})fyz@CQ=Y{q#8d7hk!LQZJdaNYD9@c2$R6!9J|pH3KF1dvQ#4cIPo2so9(kCq rQPM^!8zt<0elJk+A@gkp3)f!(&?rP@oK!?8LY1nO#xvuY-^{G%*YEE?0ldPK91S!xv^rS9s=& z>Pu~Pd@a!I?F=)t1)eQ}KHE@NmGhCthZT7hwX?gY1yxCDBNu3eSdVgK=%f`Qm;4A;)tYG6TV&j?TFQJ51r9`|s6M$Pen UwFVw?-dcm*U`HzQXa;)x2k3s}rvLx| diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class deleted file mode 100644 index 46fb4b551c40bf01195908c77bbac230cac2a382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmah_%Sr?>5Uh;4qpJr6KSD3&0~T*83hM(FyvIy2W=STJ^bGoI9{d15N=y(G1o6_{ zMR!+q_4~)`8-P>nwP+MBW9l`ncTbr*zvMX77`zS?6JkfNGt=ZOvlc$fXuKZ9`K+&Q zOyC(4bMzBai%o_7wV90eX6W_p!R9ANt?vIv#$)0-#4zl=n;CT6?wUXq9 zeo^$VDUY$cGpXnZQ&wpC#aJpEhiXA#zKUbAyl}o8bNI{1N#&g>C~TBJ0jl`g!mQx7 Qpq&QWHPr^@B{tao1Q9}JY5)KL diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class deleted file mode 100644 index 44261eb9ba2130b437e319221a8188317f4b72e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1444 zcmb_bT~8BH5IwiM?Y8SyYWYwQ6tPMR%31|QTL=h+kkr<+QquUelxtbC-J0EPBX9mB zEr}S7hG&12aqhOn67|V8**iURXU=@wnIAvDd!JkxUZGH-Lo^o}E7kTnDmVhC>Lp6_lmY~=r& zHY0e$8X|&M-YIMqh2oM1O(>MT^-^J{uq||#H4OQ|bEQ(TBs5nv#4$`(iOPC@H&rRhy4Xt9H9<6;*9lC(R%q?Pd{tqBmD5X&Jf>HZ$($?ra)8It0sb`bl7 zku!{bAjGghXUM;k$bJes0>1qsN#UW!+1zK0pMeSczyS z4KF00EKO3PD`jqe@)S2e(%*kEDOeO$_)L)imSVtT`kweM%Q00SZ<5p(cu~FIE}GQ!Mu=YCVd~S7M0YmQIm4f#icbvJVs=+zt9b q^}%e&2hq<+o**WQ=>{01mV*eRBqykdS%_jJDz%&aGi2yKfb1`$a8hjm diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class deleted file mode 100644 index 005716c446f1045fae3bcb060aa883cace008a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2736 zcmb_d>vq#d5dPLUk?klrak!LT0&TfC4n+;UQm4=)PJ&y<0q4T4f7bS53uMV%t<&Za zc$fYtJ>}37&gld6p?W$i$wVzSha~)vb~T!vZ)U!k*}wnU`wPIg_%VY7ju}Xr7{MsR z#3R1LEr+`;t0o$rY%+|_+pevyGaSp$Y^RYz+Cav{7)*v6o@`m7;n-bYSpKf>x%%C4 ztd3B;<28k2`9kj44dGi#{Gxi?v3kmOd}~8-)$(|E_g858f~J%-Z( zwvOIf3msbVWQQxt?89htE&r;64`QPA`XkX$#hI8W3L``DexSLVX1JSw3kiG`LX)1u zITIi1M2#%hYU?#E`PjsHElHNEE9+Wt(Zr=drL?@bwVI>)nlVwpERn3d&|ikFqc|DV z%%C)Auun`}fkj|#?zfky_83ZU0j#WT&zZQ2&xkSc6O}NP?e@_v$1>gL_daDa^gLU! zT~Y0I>OyYvx)ao}*Wk`Jm$v?ngh|!5$(w~E5Fh50I)6>5w%5GHC8y>UlFS-EbLmpE zFtp#aKo8$WeLvD%wt5}mDso_IKod|23MoBFsj}UN9(^`Ny+=Nt$Peg`U}}{aPR0X> zrJIp~_;iSVF)Wj{!w1tJM+}(_uO}N~#nv2-g;Vc}o(NP-{Rum<=y}Rll6ON6{1hrg zNPjXGqdAr(M(7#Oj^b7Zw^1{&VPX?o3}^S}o9wyD?g%T4Br?d5uJ3uF##aH;6zUWY3TK~@m z#uK|g*lh5>vu3?O?jfbWI@To?v0br66_y15o8bDHfrS~Xop zVGnuW|EUjIHba$&-;`eicikrP1eU)fJE`%qt`j{XorC#Wu-w%iX~}JiwWM0dQG_%K!iX diff --git a/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/util/ElementUtil.class b/editors/syson/syson-api-stubs/target/classes/org/eclipse/syson/sysml/metamodel/util/ElementUtil.class deleted file mode 100644 index 5c7fbe69c701290a0f0173027f6b8f43d7b33220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 815 zcmb7?-)j>=5XZlpq|NnA+ZbE5{;E~MM8pH>TdJTTqIj{Avw`?h_L4Q-y0>@i?TP)% z3JUt}A0^JFsg2YJeb{AY`0RIPcIL;=FW&$>!95=(l&h%Juz*E|`XT?s1I6_u*o_ax z$TBSMNGr(V=wqhdCGywj{L4g?-0~4|m53db$pTg$9D{vD zb=X)s#)a=QCBQ8#u!IU(*T|}!(728p)A&u?BEl(c&y@VXsJLvDV@|=xCT>$~i_QWg M2ZY?AyM(*H0I`$GMF0Q* diff --git a/editors/syson/syson-api-stubs/target/maven-archiver/pom.properties b/editors/syson/syson-api-stubs/target/maven-archiver/pom.properties deleted file mode 100644 index 3bd29c35d8..0000000000 --- a/editors/syson/syson-api-stubs/target/maven-archiver/pom.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Generated by Maven -#Mon Sep 21 02:32:09 UTC 2026 -artifactId=opensysml-syson-api-stubs -groupId=org.openmbee -version=0.1.0-SNAPSHOT diff --git a/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index 5fa2ec8ac8..0000000000 --- a/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,41 +0,0 @@ -org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.class -org/eclipse/sirius/components/collaborative/api/ChangeKind.class -org/eclipse/sirius/components/collaborative/trees/palette/api/ITreeItemPaletteCustomizer.class -org/eclipse/sirius/components/core/api/IPayload.class -org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.class -org/eclipse/syson/sysml/impl/MembershipCacheAdapter.class -org/eclipse/sirius/components/trees/description/TreeDescription.class -org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.class -org/eclipse/sirius/components/core/api/ErrorPayload.class -org/eclipse/sirius/components/graphql/api/IDataFetcherWithFieldCoordinates.class -org/eclipse/sirius/components/trees/TreeItem.class -org/eclipse/sirius/components/palette/dto/Palette.class -org/eclipse/sirius/components/palette/dto/ITool.class -org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions$Builder.class -org/eclipse/sirius/components/core/api/IValidationService.class -org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.class -org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.class -org/eclipse/syson/sysml/Element.class -org/eclipse/sirius/components/core/api/SuccessPayload.class -org/eclipse/sirius/components/events/ICause.class -org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.class -org/eclipse/syson/sysml/metamodel/util/ElementUtil.class -org/eclipse/sirius/components/representations/MessageLevel.class -org/eclipse/sirius/components/palette/dto/Palette$Builder.class -org/eclipse/sirius/components/core/api/IObjectSearchService.class -org/eclipse/sirius/components/graphql/api/IExceptionWrapper.class -org/eclipse/sirius/components/core/api/IInput.class -org/eclipse/sirius/components/emf/services/api/IEMFEditingContext.class -org/eclipse/sirius/components/core/api/IIdentityService.class -org/eclipse/sirius/components/trees/Tree.class -org/eclipse/sirius/components/collaborative/dto/KeyBinding.class -org/eclipse/sirius/components/core/api/IEditingContext.class -org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.class -org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.class -org/eclipse/sirius/components/representations/Message.class -org/eclipse/sirius/components/palette/dto/IPaletteEntry.class -org/eclipse/syson/sysml/metamodel/services/textual/utils/FileNameDeresolver.class -org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.class -org/eclipse/sirius/components/collaborative/api/ChangeDescription.class -org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.class -org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.class diff --git a/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 0627ae43f3..0000000000 --- a/editors/syson/syson-api-stubs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,39 +0,0 @@ -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/annotations/spring/graphql/QueryDataFetcher.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/ChangeDescription.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/ChangeKind.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/IEditingContextEventHandler.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessor.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/api/IEditingContextEventProcessorRegistry.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/dto/KeyBinding.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/trees/dto/palette/SingleClickTreeItemTool.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/collaborative/trees/palette/api/ITreeItemPaletteCustomizer.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/ErrorPayload.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IEditingContext.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IIdentityService.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IInput.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IObjectSearchService.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IPayload.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/IValidationService.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/core/api/SuccessPayload.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/emf/services/api/IEMFEditingContext.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/events/ICause.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/graphql/api/IDataFetcherWithFieldCoordinates.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/graphql/api/IEditingContextDispatcher.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/graphql/api/IExceptionWrapper.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/palette/dto/IPaletteEntry.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/palette/dto/ITool.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/palette/dto/Palette.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/representations/Message.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/representations/MessageLevel.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/trees/Tree.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/trees/TreeItem.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/sirius/components/trees/description/TreeDescription.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/Element.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/impl/MembershipCacheAdapter.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/SysMLElementSerializer.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/SysMLSerializingOptions.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/FileNameDeresolver.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/INameDeresolver.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/Severity.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/services/textual/utils/Status.java -/home/ubuntu/repos/OpenSysML/editors/syson/syson-api-stubs/src/main/java/org/eclipse/syson/sysml/metamodel/util/ElementUtil.java diff --git a/editors/syson/syson-api-stubs/target/opensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar b/editors/syson/syson-api-stubs/target/opensysml-syson-api-stubs-0.1.0-SNAPSHOT.jar deleted file mode 100644 index 0de001cd128b3dd7fd8c2280d113d319a7c4cc67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36799 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 z 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 From bf38b271107941a8daa77fd3f0f23d475e29720e Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 02:41:27 +0000 Subject: [PATCH 5/7] refactor: tidy the SonarCloud round-3 fixes Edit.java uses a private requireTarget over a public constant; input collection returns on first error; outcome keys disambiguate repeats; Maven target dirs ignored Co-Authored-By: jason.han --- .gitignore | 1 + .../java/org/openmbee/opensysml/Edit.java | 12 ++++---- .../MutationRunWithOpenSysMLDataFetcher.java | 29 +++++++++++-------- .../src/dialog/RunWithOpenSysMLDialog.tsx | 12 ++------ .../registry/opensysmlExtensionRegistry.ts | 4 ++- .../frontend/src/results/RunResultsPanel.tsx | 17 +++++++++-- 6 files changed, 45 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index 6dbd94c97f..16ab8e708c 100644 --- a/.gitignore +++ b/.gitignore @@ -46,6 +46,7 @@ coverage-node.lcov # Maven build output for the Java client and the Cameo plugin /client/java/**/target/ /editors/cameo/**/target/ +/editors/syson/**/target/ !/editors/cameo/dist/ # Partial oracle record a failed `make fuml-expected` leaves for diagnosis diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java index 62adb1f462..e42d668375 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java @@ -12,7 +12,9 @@ */ public sealed interface Edit { - String NAME_TARGET = "target"; + private static void requireTarget(String target) { + Objects.requireNonNull(target, "target"); + } /** * Sets the value of a feature that already exists, replacing the expression of its {@code = @@ -32,7 +34,7 @@ record SetValue(String target, String value) implements Edit { * @param value the new value, never {@code null} */ public SetValue { - Objects.requireNonNull(target, NAME_TARGET); + requireTarget(target); Objects.requireNonNull(value, "value"); } } @@ -54,7 +56,7 @@ record Rename(String target, String newName) implements Edit { * @param newName the new name, never {@code null} */ public Rename { - Objects.requireNonNull(target, NAME_TARGET); + requireTarget(target); Objects.requireNonNull(newName, "newName"); } } @@ -172,7 +174,7 @@ record Delete(String target, boolean cascade) implements Edit { * @param cascade whether referring declarations go too */ public Delete { - Objects.requireNonNull(target, NAME_TARGET); + requireTarget(target); } } @@ -193,7 +195,7 @@ record Move(String target, String owner) implements Edit { * @param owner the receiving namespace, never {@code null} */ public Move { - Objects.requireNonNull(target, NAME_TARGET); + requireTarget(target); Objects.requireNonNull(owner, "owner"); } } diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java index b7b5bb9c3e..66e9906bb8 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/MutationRunWithOpenSysMLDataFetcher.java @@ -36,17 +36,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) { Map argument = environment.getArgument("input"); // GraphQL represents named inputs as a list; the input record uses a map. Map values = new LinkedHashMap<>(); - String inputError = null; - for (Map value : (List>) argument.getOrDefault("inputs", List.of())) { - String name = value.get("name"); - if (inputError == null && (name == null || name.isBlank())) { - inputError = "input name must not be blank"; - } else if (inputError == null && values.containsKey(name)) { - inputError = "duplicate input name: " + name; - } else if (inputError == null) { - values.put(name, value.get("expression")); - } - } + String inputError = collectInputs( + (List>) argument.getOrDefault("inputs", List.of()), values); Map convertedArgument = new LinkedHashMap<>(argument); convertedArgument.put("inputs", values); RunWithOpenSysMLInput converted = objectMapper.convertValue(convertedArgument, RunWithOpenSysMLInput.class); @@ -61,4 +52,18 @@ public CompletableFuture get(DataFetchingEnvironment environment) { return exceptionWrapper.wrapMono(() -> editingContextDispatcher.dispatchMutation(input.editingContextId(), input), input).toFuture(); } -} + + private static String collectInputs(List> inputs, Map values) { + for (Map value : inputs) { + String name = value.get("name"); + if (name == null || name.isBlank()) { + return "input name must not be blank"; + } + if (values.containsKey(name)) { + return "duplicate input name: " + name; + } + values.put(name, value.get("expression")); + } + return null; + } +} \ No newline at end of file diff --git a/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx b/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx index 936528aebb..f6fdbe9d56 100644 --- a/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx +++ b/editors/syson/frontend/src/dialog/RunWithOpenSysMLDialog.tsx @@ -160,9 +160,7 @@ export const RunWithOpenSysMLDialog = ({ value={input.expression} onChange={(event) => updateInput(index, 'expression', event.target.value)} /> - @@ -186,9 +184,7 @@ export const RunWithOpenSysMLDialog = ({ value={event} onChange={(change) => updateEvent(index, change.target.value)} /> - @@ -210,9 +206,7 @@ export const RunWithOpenSysMLDialog = ({ value={argument} onChange={(change) => updateArgument(index, change.target.value)} /> - diff --git a/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts b/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts index bbff2222cd..511409d566 100644 --- a/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts +++ b/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts @@ -14,7 +14,9 @@ interface ExtensionRegistry { const contribution: TreeItemContextMenuOverrideContribution = { canHandle: (entry: GQLTreeItemContextMenuEntry) => entry.id === RUN_WITH_OPENSYSML_TOOL_ID, - component: RunWithOpenSysMLMenuContribution, + // The menu uses only four of Sirius' props; the contribution type wants the full set. + component: + RunWithOpenSysMLMenuContribution as unknown as TreeItemContextMenuOverrideContribution['component'], }; export const opensysmlExtensionRegistry: ExtensionRegistry = new SiriusExtensionRegistry(); diff --git a/editors/syson/frontend/src/results/RunResultsPanel.tsx b/editors/syson/frontend/src/results/RunResultsPanel.tsx index ffa530c48e..324d76c1d6 100644 --- a/editors/syson/frontend/src/results/RunResultsPanel.tsx +++ b/editors/syson/frontend/src/results/RunResultsPanel.tsx @@ -14,7 +14,7 @@ import TableCell from '@mui/material/TableCell'; import TableHead from '@mui/material/TableHead'; import TableRow from '@mui/material/TableRow'; import Typography from '@mui/material/Typography'; -import { GQLRunOperation, GQLOpenSysMLRunResult } from '../graphql/runWithOpenSysML'; +import { GQLRunOperation, GQLOpenSysMLRunOutcome, GQLOpenSysMLRunResult } from '../graphql/runWithOpenSysML'; export interface RunResultsPanelProps { result: GQLOpenSysMLRunResult; @@ -48,6 +48,16 @@ const verdictColor = (result: GQLOpenSysMLRunResult): 'success' | 'error' | 'war const verdictLabel = (result: GQLOpenSysMLRunResult): string => result.verdict ?? (result.ok ? 'completed' : 'failed'); +const outcomeKeys = (outcomes: GQLOpenSysMLRunOutcome[]): string[] => { + const seen = new Map(); + return outcomes.map((outcome) => { + const base = JSON.stringify(outcome); + const count = seen.get(base) ?? 0; + seen.set(base, count + 1); + return count === 0 ? base : `${base}#${count}`; + }); +}; + const verdictIcon = (verdict: GQLOpenSysMLRunResult['verdicts'][number]) => { if (!verdict.decided) { return ; @@ -68,6 +78,7 @@ const diagnosticIcon = (severity: string) => { export const RunResultsPanel = ({ result, onSelectElement }: RunResultsPanelProps) => { const status = verdictLabel(result); + const keys = outcomeKeys(result.outcomes); return (

@@ -119,8 +130,8 @@ export const RunResultsPanel = ({ result, onSelectElement }: RunResultsPanelProp {result.outcomes.length >= 1 && (
Outcomes ({result.outcomes.length}) - {result.outcomes.map((outcome) => ( -
+ {result.outcomes.map((outcome, index) => ( +
{outcome.outputs.length > 0 && ( outputs: {outcome.outputs.map((output) => `${output.name} = ${output.value}`).join(', ')} From 5a71378aed3d7698367b77c379e6ab674698dc61 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 02:46:12 +0000 Subject: [PATCH 6/7] style: format the syson extension registry with prettier Co-Authored-By: jason.han --- .../syson/frontend/src/registry/opensysmlExtensionRegistry.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts b/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts index 511409d566..372d842ee0 100644 --- a/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts +++ b/editors/syson/frontend/src/registry/opensysmlExtensionRegistry.ts @@ -15,8 +15,7 @@ interface ExtensionRegistry { const contribution: TreeItemContextMenuOverrideContribution = { canHandle: (entry: GQLTreeItemContextMenuEntry) => entry.id === RUN_WITH_OPENSYSML_TOOL_ID, // The menu uses only four of Sirius' props; the contribution type wants the full set. - component: - RunWithOpenSysMLMenuContribution as unknown as TreeItemContextMenuOverrideContribution['component'], + component: RunWithOpenSysMLMenuContribution as unknown as TreeItemContextMenuOverrideContribution['component'], }; export const opensysmlExtensionRegistry: ExtensionRegistry = new SiriusExtensionRegistry(); From fde7cd360100e92ec92be56d066a3c4506c679bb Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 05:49:56 +0000 Subject: [PATCH 7/7] fix(syson): keep modelHash non-null on handled run failures Co-Authored-By: jason.han --- .../opensysml/syson/run/RunResult.java | 2 +- .../syson/run/RunWithOpenSysMLService.java | 2 +- .../syson/RunWithOpenSysMLServiceTest.java | 26 +++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java index e3667757a8..02c24c84ed 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunResult.java @@ -45,7 +45,7 @@ public static Builder builder() { } public static final class Builder { - private String modelHash; + private String modelHash = ""; private RunOperation operation; private String target; private boolean ok; diff --git a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java index a3bbce1410..f86f9a01af 100644 --- a/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java +++ b/editors/syson/backend/src/main/java/org/openmbee/opensysml/syson/run/RunWithOpenSysMLService.java @@ -89,7 +89,7 @@ public RunResult run(IEMFEditingContext context, Element target, RunWithOpenSysM mappedDiagnostics.forEach(value -> resultDiagnostics.add( new RunResult.MappedDiagnostic(value.diagnostic(), value.element()))); resultDiagnostics.add(new RunResult.MappedDiagnostic(diagnostic, selected.element())); - RunResult result = RunResult.builder().operation(input.operation()).target(targetName) + RunResult result = RunResult.builder().modelHash("").operation(input.operation()).target(targetName) .mappedDiagnostics(resultDiagnostics).build(); store.put(context.getId(), result); return result; diff --git a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java index 6ec2044f98..8b376218b3 100644 --- a/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java +++ b/editors/syson/backend/src/test/java/org/openmbee/opensysml/syson/RunWithOpenSysMLServiceTest.java @@ -19,6 +19,7 @@ import org.openmbee.opensysml.syson.export.ProjectTextExporter; import org.openmbee.opensysml.syson.identity.ElementIndex; import org.openmbee.opensysml.syson.run.RunOperation; +import org.openmbee.opensysml.syson.run.RunResult; import org.openmbee.opensysml.syson.run.RunResultStore; import org.openmbee.opensysml.syson.run.RunWithOpenSysMLInput; import org.openmbee.opensysml.syson.run.RunWithOpenSysMLService; @@ -103,4 +104,29 @@ void reportsMissingQualifiedNameWithoutCallingService() { .isEqualTo("selected element has no qualified name in the export"); org.mockito.Mockito.verifyNoInteractions(connection); } + + @Test + void handledFailureKeepsModelHashNonNull() { + Connection connection = org.mockito.Mockito.mock(Connection.class); + Element target = org.mockito.Mockito.mock(Element.class); + org.mockito.Mockito.when(target.getQualifiedName()).thenReturn(VEHICLE); + org.mockito.Mockito.when(target.getElementId()).thenReturn(VEHICLE_ID); + org.mockito.Mockito.when(connection.parseSources(org.mockito.ArgumentMatchers.any())) + .thenThrow(new IllegalArgumentException("unparsable")); + ExportedProject project = new ExportedProject(List.of(SourceDocument.inline("vehicle.sysml", "part def ;")), + new ElementIndex(Map.of(VEHICLE, new ElementIndex.IndexedElement(VEHICLE, VEHICLE_ID, + "sirius-id", target))), + List.of(), List.of()); + IEMFEditingContext context = org.mockito.Mockito.mock(IEMFEditingContext.class); + org.mockito.Mockito.when(context.getId()).thenReturn("ctx"); + RunWithOpenSysMLService service = new RunWithOpenSysMLService(connection, ignored -> project, + new RunResultStore(), new OpenSysMLProperties()); + + RunResult result = service.run(context, target, new RunWithOpenSysMLInput(UUID.randomUUID(), "ctx", + VEHICLE_ID, RunOperation.INSTANTIATE, Map.of(), List.of(), List.of(), null, null)); + + assertThat(result.ok()).isFalse(); + assertThat(result.modelHash()).isEqualTo(""); + assertThat(result.diagnostics()).isNotEmpty(); + } }