Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ The ends of a connector created from a diagram are owned through an `EndFeatureM
- [releng] Improve the frontend package build by replacing UMD outputs with CommonJS outputs for reusable npm libraries.
This removes Rollup warnings about missing global names for externalized peer dependencies while keeping React, MUI, Apollo and other shared dependencies outside the published bundles.
- [releng] Reduce the log of the frontend tasks `format-lint` and `build-dev` by default to make tasks such as `build` or `start` less verbose.
- [cleanup] Use only one border node description provider for all item border nodes.

=== New features

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ private Consumer<Object> assertReconnectThat(String expectedSourceGraplicalId, S

private Runnable buildCreateEdgeRunnable(DiagramDescriptionIdProvider diagramDescriptionIdProvider, AtomicReference<Diagram> diagram, String sourceNodeId, String targetNodeId) {
String creationToolId = diagramDescriptionIdProvider.getEdgeCreationToolId(
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getBehavior_Parameter()),
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem()),
"New Binding Connector As Usage (bind)");
return () -> this.edgeCreationTester.createEdgeUsingNodeId(GeneralViewBindingConnectorProjectData.EDITING_CONTEXT_ID,
diagram,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ public void checkBorderedNodeUsageNodeDuplication() {
SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID);
var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider);

var duplicateToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getBehavior_Parameter()), "Duplicate Element");
var duplicateToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem()), "Duplicate Element");
Runnable duplicateToolRunnable = () -> this.toolTester.invokeTool(GeneralViewItemAndAttributeProjectData.EDITING_CONTEXT_ID,
diagram.get().getId(),
GeneralViewItemAndAttributeProjectData.GraphicalIds.A1_3_BORDERED_NODE_ID,
Expand Down Expand Up @@ -268,7 +268,7 @@ public void checkCompartmentItemUsageNodeDuplication() {
SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID);
var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider);

var duplicateToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getBehavior_Parameter()), "Duplicate Element");
var duplicateToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem()), "Duplicate Element");
Runnable duplicateToolRunnable = () -> this.toolTester.invokeTool(GeneralViewItemAndAttributeProjectData.EDITING_CONTEXT_ID,
diagram.get().getId(),
GeneralViewItemAndAttributeProjectData.GraphicalIds.A1_1_BORDERED_NODE_ID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ public void givenGeneralViewDiagramDescriptionWhenInspectingItemFlowToolTargetsT
SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID);

var itemUsageBorderNodeDescription = this.findNodeDescription(diagramDescription,
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getBehavior_Parameter()));
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem()));
var actionUsageNodeDescription = this.findNodeDescription(diagramDescription, this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getActionUsage()));

var newFlowTool = itemUsageBorderNodeDescription.getPalette().getEdgeTools().stream()
Expand Down Expand Up @@ -202,7 +202,7 @@ public void checkFlowConnectionCreation() {
SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID);
var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider);

String creationToolId = diagramDescriptionIdProvider.getEdgeCreationToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getBehavior_Parameter()),
String creationToolId = diagramDescriptionIdProvider.getEdgeCreationToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem()),
"New Flow (flow)");
Runnable creationToolRunnable = () -> this.edgeCreationTester.createEdgeUsingNodeId(GeneralViewFlowConnectionItemUsagesProjectData.EDITING_CONTEXT_ID,
diagram,
Expand Down Expand Up @@ -319,7 +319,7 @@ public void checkItemUsageBindingConnectorAsUsage() {
SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID);
var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider);

String creationToolId = diagramDescriptionIdProvider.getEdgeCreationToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getBehavior_Parameter()),
String creationToolId = diagramDescriptionIdProvider.getEdgeCreationToolId(this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem()),
"New Binding Connector As Usage (bind)");
Runnable creationToolRunnable = () -> this.edgeCreationTester.createEdgeUsingNodeId(GeneralViewFlowConnectionItemUsagesProjectData.EDITING_CONTEXT_ID,
diagram,
Expand Down Expand Up @@ -685,7 +685,6 @@ private List<String> getExpectedFlowTargetDescriptionNames() {
this.descriptionNameGenerator.getInheritedBorderNodeName(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPort()),
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedItem()),
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem()),
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getBehavior_Parameter()),
this.descriptionNameGenerator.getBorderNodeName(SysmlPackage.eINSTANCE.getReferenceUsage()),
this.descriptionNameGenerator.getInheritedBorderNodeName(SysmlPackage.eINSTANCE.getReferenceUsage()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.eclipse.syson.application.controllers.diagrams.checkers.CheckBorderNode;
import org.eclipse.syson.application.controllers.diagrams.checkers.CheckDiagramElementCount;
import org.eclipse.syson.application.controllers.diagrams.checkers.CheckNodeInCompartment;
import org.eclipse.syson.application.controllers.diagrams.checkers.CheckNodeOnDiagram;
import org.eclipse.syson.application.controllers.diagrams.checkers.DiagramCheckerService;
import org.eclipse.syson.application.controllers.diagrams.testers.ToolTester;
import org.eclipse.syson.application.controllers.utils.TestNameGenerator;
Expand Down Expand Up @@ -178,14 +179,14 @@ private static Stream<Arguments> actionUsageFreeFormNodeParameters() {

private static Stream<Arguments> actionUsageSiblingAndChildNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getActionUsage(), ACTIONS_COMPARTMENT, SysmlPackage.eINSTANCE.getUsage_NestedAction(), 17, 1),
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), "items", SysmlPackage.eINSTANCE.getUsage_NestedItem(), 6, 1))
Arguments.of(SysmlPackage.eINSTANCE.getActionUsage(), ACTIONS_COMPARTMENT, SysmlPackage.eINSTANCE.getUsage_NestedAction(), 17, 0, 1),
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), "items", SysmlPackage.eINSTANCE.getUsage_NestedItem(), 7, 1, 1))
.map(TestNameGenerator::namedArguments);
}

private static Stream<Arguments> actionDefinitionSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedItem(), 4))
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedItem(), 7, 4, 1, 1))
.map(TestNameGenerator::namedArguments);
}

Expand Down Expand Up @@ -564,7 +565,7 @@ public void createActionUsageFreeFormChildNodes(EClass childEClass, EReference c
@GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH })
@ParameterizedTest
@MethodSource("actionUsageSiblingAndChildNodeParameters")
public void createActionUsageSiblingAndChildNodes(EClass childEClass, String compartmentName, EReference containmentReference, int expectedNumberOfNewNodes,
public void createActionUsageSiblingAndChildNodes(EClass childEClass, String compartmentName, EReference containmentReference, int expectedNumberOfNewNodes, int expectedNumberOfNewBorderNodes,
int expectedNumberOfNewEdges) {
var flux = this.givenSubscriptionToDiagram();

Expand All @@ -584,6 +585,7 @@ public void createActionUsageSiblingAndChildNodes(EClass childEClass, String com
new CheckDiagramElementCount(this.diagramComparator)
.hasNewNodeCount(expectedNumberOfNewNodes)
.hasNewEdgeCount(expectedNumberOfNewEdges)
.hasNewBorderNodeCount(expectedNumberOfNewBorderNodes)
.check(initialDiagram, newDiagram);
String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference);
new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator)
Expand Down Expand Up @@ -700,7 +702,8 @@ public void createPerformActionUsageInActionUsage() {
@GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH })
@ParameterizedTest
@MethodSource("actionDefinitionSiblingNodeParameters")
public void createActionDefinitionSiblingNodes(EClass childEClass, EReference containmentReference, int compartmentCount) {
public void createActionDefinitionSiblingNodes(EClass childEClass, EReference containmentReference, int expectedNumberOfNewNodes, int compartmentCount, int expectedNumberOfNewBorderNodes,
int expectedNumberOfNewEdges) {
var flux = this.givenSubscriptionToDiagram();

AtomicReference<Diagram> diagram = new AtomicReference<>();
Expand All @@ -713,7 +716,19 @@ public void createActionDefinitionSiblingNodes(EClass childEClass, EReference co
EClass parentEClass = SysmlPackage.eINSTANCE.getActionDefinition();
String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_DEFINITION_ID;
Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass);
Consumer<Object> diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount, 2);
Consumer<Object> diagramCheck = assertRefreshedDiagramThat(newDiagram -> {
new CheckDiagramElementCount(this.diagramComparator)
.hasNewNodeCount(expectedNumberOfNewNodes)
.hasNewBorderNodeCount(expectedNumberOfNewBorderNodes)
.hasNewEdgeCount(expectedNumberOfNewEdges)
.check(diagram.get(), newDiagram);

String newNodeDescriptionName = this.descriptionNameGenerator.getNodeName(childEClass);
new CheckNodeOnDiagram(diagramDescriptionIdProvider, this.diagramComparator)
.hasNodeDescriptionName(newNodeDescriptionName)
.hasTotalCompartmentCount(compartmentCount)
.check(diagram.get(), newDiagram);
});
Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ActionDefinition", containmentReference, childEClass));

StepVerifier.create(flux)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,13 @@ private static Stream<Arguments> actionsCompartmentItemInheritanceArguments() {
}

private static Stream<Arguments> itemsCompartmentItemInheritanceArguments() {
NestedElementTestArgument nestedItem = new NestedElementTestArgument("New Item", "items", "item1");
NestedElementTestArgument nestedItemWithBorderNode = new NestedElementTestArgument("New Item", "items", "item1", "", 1, 1, 0);
return Stream.of(
Arguments.of(ACTION_DEFINITION_ARGUMENT, nestedItem, ACTION_USAGE_ARGUMENT, FEATURE_TYPING_ARGUMENT),
Arguments.of(ACTION_DEFINITION_ARGUMENT, nestedItem, ACTION_DEFINITION_ARGUMENT, SUBCLASSIFICATION_ARGUMENT),
Arguments.of(ACTION_USAGE_ARGUMENT, nestedItem, ACTION_USAGE_ARGUMENT, SUBSETTING_ARGUMENT),
Arguments.of(ACTION_USAGE_ARGUMENT, nestedItem, ACTION_USAGE_ARGUMENT, REFERENCE_SUBSETTING_ARGUMENT),
Arguments.of(ACTION_USAGE_ARGUMENT, nestedItem, ACTION_USAGE_ARGUMENT, REDEFINITION_ARGUMENT),
Arguments.of(ACTION_DEFINITION_ARGUMENT, nestedItemWithBorderNode, ACTION_USAGE_ARGUMENT, FEATURE_TYPING_ARGUMENT),
Arguments.of(ACTION_DEFINITION_ARGUMENT, nestedItemWithBorderNode, ACTION_DEFINITION_ARGUMENT, SUBCLASSIFICATION_ARGUMENT),
Arguments.of(ACTION_USAGE_ARGUMENT, nestedItemWithBorderNode, ACTION_USAGE_ARGUMENT, SUBSETTING_ARGUMENT),
Arguments.of(ACTION_USAGE_ARGUMENT, nestedItemWithBorderNode, ACTION_USAGE_ARGUMENT, REFERENCE_SUBSETTING_ARGUMENT),
Arguments.of(ACTION_USAGE_ARGUMENT, nestedItemWithBorderNode, ACTION_USAGE_ARGUMENT, REDEFINITION_ARGUMENT),
Arguments.of(PORT_USAGE_ARGUMENT, nestedItemWithBorderNode, PORT_USAGE_ARGUMENT, SUBSETTING_ARGUMENT),
Arguments.of(PORT_USAGE_ARGUMENT, nestedItemWithBorderNode, PORT_USAGE_ARGUMENT, REFERENCE_SUBSETTING_ARGUMENT),
Arguments.of(PORT_DEFINITION_ARGUMENT, nestedItemWithBorderNode, PORT_DEFINITION_ARGUMENT, SUBCLASSIFICATION_ARGUMENT)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2025 Obeo.
* Copyright (c) 2025, 2026 Obeo.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
Expand Down Expand Up @@ -65,21 +65,17 @@ public static final class GraphicalIds {

public static final String DIAGRAM_ID = "219f9e4c-900d-4258-b2fc-a69c94f3f666";

public static final String I0_ID = "c0a61f94-7762-357b-a245-2d00916f612e";
public static final String I0_ID = "b50e0dee-7e33-3a5c-9226-f7051bb9182e";

public static final String I1_ID = "07b3e9f5-55b1-3b81-97b9-e04214393b4b";
public static final String I1_ID = "bbe1eabd-69b6-332d-a64b-4a8704cc9cb8";

public static final String I11 = "e43e174a-8163-3ac8-b3f5-ebe6856d9ed2";
public static final String I11_ID = "7c524a77-046a-335f-9dc2-f901e6604ab7";

public static final String I11TEST = "99a13645-74bd-3ca4-97fd-59d8340f7bfd";
public static final String I11TEST_ID = "33e0fb55-971d-3755-8f56-1081ffc312d0";

public static final String I11_ID = "e43e174a-8163-3ac8-b3f5-ebe6856d9ed2";
public static final String BINDING_EDGE_ID = "0a532744-6cb9-3896-9c3d-6ebcd6cbeca8";

public static final String I11TEST_ID = "99a13645-74bd-3ca4-97fd-59d8340f7bfd";

public static final String BINDING_EDGE_ID = "38487ae1-e4ee-32e6-892b-d43929582aa0";

public static final String I2_ID = "a8aa241b-5fff-3fd3-963d-60f3c5b01858";
public static final String I2_ID = "5218e9c1-1d67-369c-9b4f-af3ca4c2cda5";

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,21 @@ public static class GraphicalIds {

public static final String ACTION_USAGE_1_ID = "c9d5c8c3-7019-322c-9184-8c49bf1940fd";

public static final String ACTION_USAGE_1_OUT_ITEM_ID = "554af08e-3830-33ca-86f2-2f2aa1469585";
public static final String ACTION_USAGE_1_OUT_ITEM_ID = "f302c8f1-5a06-3e84-9da7-ebe2417c60ec";

public static final String ACTION_USAGE_2_ID = "6ecd5ce8-cf92-36f4-98d5-81f63382a27e";

public static final String ACTION_USAGE_2_IN_ITEM_ID = "cf13ec0b-ed3f-3341-8fae-f0bbf74155f6";
public static final String ACTION_USAGE_2_IN_ITEM_ID = "28d5f1d5-90cd-3a63-a573-a5c07db919d4";

public static final String ACTION_USAGE_2_OUT_ITEM_ID = "bb06c37a-6235-3b64-93e5-bf9018e5ac95";
public static final String ACTION_USAGE_2_OUT_ITEM_ID = "8febbb96-09b2-3017-85ff-11d3b517af45";

public static final String ACTION_USAGE_3_ID = "8996c5aa-00f3-3812-a60b-bdf8cd472320";

public static final String ACTION_USAGE_3_IN_ITEM_ID = "87610918-cc3c-32f3-b9e9-2c8fec982688";
public static final String ACTION_USAGE_3_IN_ITEM_ID = "af63700e-83a9-351c-969b-4af0b3da9c2d";

public static final String ACTION_USAGE_3_OUT_ITEM_ID = "66aa0a1d-2d8a-320a-80c4-38a2621d64ca";
public static final String ACTION_USAGE_3_OUT_ITEM_ID = "796e47ab-9a70-36d9-9ca7-2cfcd24e094b";

public static final String FLOW_CONNECTION_ID = "08697a19-1d8a-33ba-be01-dc1acafa8ac8";
public static final String FLOW_CONNECTION_ID = "976ca71b-5b9f-33df-beb7-e6cedef065e2";
}

/**
Expand Down
Loading
Loading