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 @@ -23,6 +23,7 @@
- https://github.com/eclipse-syson/syson/issues/1581[#1581] [diagrams] Display inherited `PortUsages` as graphical border nodes in diagrams.
- https://github.com/eclipse-syson/syson/issues/1581[#1581] [diagrams] Redefine inherited `PortUsages` when connected as graphical border nodes.
- https://github.com/eclipse-syson/syson/issues/1589[#1589] [explorer] Add a filter to hide expose elements in `ViewUsage`.
- https://github.com/eclipse-syson/syson/issues/1587[#1587] [diagrams] Handle `ActionUsage` and `ActionDefinition` parameters as graphical border nodes.

== v2025.10.0

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2024 Obeo.
* Copyright (c) 2024, 2025 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 @@ -62,9 +62,10 @@ public CheckNodeOnDiagram hasTargetObjectLabel(String expectedTargetObjectLabel)

@Override
public void check(Diagram previousDiagram, Diagram newDiagram) {
String nodeDescriptionId = this.diagramDescriptionIdProvider.getNodeDescriptionId(this.nodeDescriptionName);
List<Node> newNodes = this.diagramComparator.newNodes(previousDiagram, newDiagram);
assertThat(newDiagram.getNodes()).anySatisfy(childNode -> {
assertThat(childNode).hasDescriptionId(this.diagramDescriptionIdProvider.getNodeDescriptionId(this.nodeDescriptionName));
assertThat(childNode).hasDescriptionId(nodeDescriptionId);
assertThat(childNode.getChildNodes()).hasSize(this.compartmentCount);
if (this.targetObjectLabel != null) {
assertThat(childNode).hasTargetObjectLabel(this.targetObjectLabel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,14 @@ private void checkItemParameterOnActionUsage(String kind) {
this.verifier.then(() -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, this.diagram, "action", creationToolId));

IDiagramChecker diagramChecker = (initialDiagram, newDiagram) -> {
// One bordered node
// One border + one root node for Tree Composition (with 4 compartments) + new item in the items
// compartment
// One new Composite Edge
new CheckDiagramElementCount(this.diagramComparator)
.hasNewBorderNodeCount(1) // One bordered node
.hasNewNodeCount(7) // One border + one root node for Tree Composition (with 4 compartments) +
// new item in the items compartment
.hasNewEdgeCount(1) // Composite Edge
.hasNewBorderNodeCount(1)
.hasNewNodeCount(7)
.hasNewEdgeCount(1)
.check(initialDiagram, newDiagram);

List<Node> newNodes = this.diagramComparator.newNodes(initialDiagram, newDiagram);
Expand All @@ -227,7 +230,6 @@ private void checkItemParameterOnActionUsage(String kind) {
.hasType("node:image")
.hasTargetObjectLabel(ITEM1 + kind)
.hasTargetObjectKind("siriusComponents://semantic?domain=sysml&entity=ItemUsage");

};

this.diagramCheckerService.checkDiagram(diagramChecker, this.diagram, this.verifier);
Expand All @@ -236,19 +238,21 @@ private void checkItemParameterOnActionUsage(String kind) {
EList<Feature> parameters = actionUsage.getParameter();
assertThat(parameters).hasSize(1).allMatch(p -> (ITEM1 + kind).equals(p.getDeclaredName()) && p.getDirection() == FeatureDirectionKind.get(kind.toLowerCase()));
});

}

private void checkItemParameterOnActionDefinition(String kind) {
String creationToolId = this.diagramDescriptionIdProvider.getNodeCreationToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getActionDefinition()), "New Item " + kind);
this.verifier.then(() -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, this.diagram, "ActionDefinition", creationToolId));

IDiagramChecker diagramChecker = (initialDiagram, newDiagram) -> {
// One bordered node
// One border + one root node for Tree Composition (with 4 compartments) + new item in the items
// compartment
// One new Composite Edge
new CheckDiagramElementCount(this.diagramComparator)
.hasNewBorderNodeCount(1) // One bordered node
.hasNewNodeCount(7) // One border + one root node for Tree Composition (with 4 compartments) + new
// item in the parameters compartment
.hasNewEdgeCount(1) // Composite Edge
.hasNewBorderNodeCount(1)
.hasNewNodeCount(7)
.hasNewEdgeCount(1)
.check(initialDiagram, newDiagram);

List<Node> newNodes = this.diagramComparator.newNodes(initialDiagram, newDiagram);
Expand All @@ -271,7 +275,6 @@ private void checkItemParameterOnActionDefinition(String kind) {
.hasType("node:image")
.hasTargetObjectLabel(ITEM1)
.hasTargetObjectKind("siriusComponents://semantic?domain=sysml&entity=ItemUsage");

};

this.diagramCheckerService.checkDiagram(diagramChecker, this.diagram, this.verifier);
Expand All @@ -280,7 +283,5 @@ private void checkItemParameterOnActionDefinition(String kind) {
EList<Feature> parameters = actionUsage.getParameter();
assertThat(parameters).hasSize(1).allMatch(p -> "item1".equals(p.getDeclaredName()) && p.getDirection() == FeatureDirectionKind.get(kind.toLowerCase()));
});

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,9 @@ public void invokeShowOnlyValuedContent() {
var diagram = diagramRefreshedEventPayload.diagram();
assertThat(diagram.getNodes()).hasSize(1);
nodeId.set(diagram.getNodes().get(0).getId());
assertThat(diagram.getNodes().get(0).getChildNodes()).hasSize(5);
assertThat(diagram.getNodes().get(0).getChildNodes()).hasSize(6);
var children = diagram.getNodes().get(0).getChildNodes();
assertThat(children.stream().filter(node -> node.getState().equals(ViewModifier.Hidden))).hasSize(5);
assertThat(children.stream().filter(node -> node.getState().equals(ViewModifier.Hidden))).hasSize(6);
assertThat(children.stream().filter(node -> node.getState().equals(ViewModifier.Normal))).hasSize(0);
}, () -> fail("Missing diagram"));

Expand Down Expand Up @@ -138,9 +138,9 @@ public void invokeShowOnlyValuedContent() {
var diagram = diagramRefreshedEventPayload.diagram();
assertThat(diagram.getNodes()).hasSize(1);
nodeId.set(diagram.getNodes().get(0).getId());
assertThat(diagram.getNodes().get(0).getChildNodes()).hasSize(5);
assertThat(diagram.getNodes().get(0).getChildNodes()).hasSize(6);
var children = diagram.getNodes().get(0).getChildNodes();
assertThat(children.stream().filter(node -> node.getState().equals(ViewModifier.Hidden))).hasSize(4);
assertThat(children.stream().filter(node -> node.getState().equals(ViewModifier.Hidden))).hasSize(5);
assertThat(children.stream().filter(node -> node.getState().equals(ViewModifier.Normal))).hasSize(1);
assertThat(children.stream().filter(node -> node.getState().equals(ViewModifier.Faded))).hasSize(0);
}, () -> fail("Missing diagram"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class GVSubNodeActionFlowCreationTests extends AbstractIntegrationTests {

private static final String PARAMETERS = "parameters";

private static final String ACTION = "action";

private static final String ACTIONS_COMPARTMENT = "actions";
Expand Down Expand Up @@ -162,7 +164,23 @@ private static Stream<Arguments> actionUsageListNodeParameters() {

private static Stream<Arguments> actionUsageBorderAndChildNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), "ports", SysmlPackage.eINSTANCE.getUsage_NestedPort(), SysmlPackage.eINSTANCE.getPortUsage()))
Arguments.of(SysmlPackage.eINSTANCE.getReferenceUsage(), PARAMETERS, SysmlPackage.eINSTANCE.getUsage_NestedReference(), SysmlPackage.eINSTANCE.getReferenceUsage(),
"New Parameter In"),
Arguments.of(SysmlPackage.eINSTANCE.getReferenceUsage(), PARAMETERS, SysmlPackage.eINSTANCE.getUsage_NestedReference(), SysmlPackage.eINSTANCE.getReferenceUsage(),
"New Parameter Inout"),
Arguments.of(SysmlPackage.eINSTANCE.getReferenceUsage(), PARAMETERS, SysmlPackage.eINSTANCE.getUsage_NestedReference(), SysmlPackage.eINSTANCE.getReferenceUsage(),
"New Parameter Out"))
.map(TestNameGenerator::namedArguments);
}

private static Stream<Arguments> actionDefinitionBorderAndChildNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getReferenceUsage(), PARAMETERS, SysmlPackage.eINSTANCE.getDefinition_OwnedReference(), SysmlPackage.eINSTANCE.getReferenceUsage(),
"New Parameter In"),
Arguments.of(SysmlPackage.eINSTANCE.getReferenceUsage(), PARAMETERS, SysmlPackage.eINSTANCE.getDefinition_OwnedReference(), SysmlPackage.eINSTANCE.getReferenceUsage(),
"New Parameter Inout"),
Arguments.of(SysmlPackage.eINSTANCE.getReferenceUsage(), PARAMETERS, SysmlPackage.eINSTANCE.getDefinition_OwnedReference(), SysmlPackage.eINSTANCE.getReferenceUsage(),
"New Parameter Out"))
.map(TestNameGenerator::namedArguments);
}

Expand Down Expand Up @@ -227,7 +245,7 @@ public void setUp() {
public void tearDown() {
if (this.verifier != null) {
this.verifier.thenCancel()
.verify(Duration.ofSeconds(10));
.verify(Duration.ofSeconds(1000));
}
}

Expand Down Expand Up @@ -386,10 +404,42 @@ public void createActionUsageListChildNodes(EClass childEClass, String compartme
@Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED))
@ParameterizedTest
@MethodSource("actionUsageBorderAndChildNodeParameters")
public void createActionUsageBorderAndChildNodes(EClass childEClass, String compartmentName, EReference containmentReference, EClass borderNodeType) {
public void createActionUsageBorderAndChildNodes(EClass childEClass, String compartmentName, EReference containmentReference, EClass borderNodeType, String toolName) {
EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage();
String parentLabel = ACTION;
this.creationTestsService.createNode(this.verifier, this.diagramDescriptionIdProvider, this.diagram, parentEClass, parentLabel, childEClass);
this.creationTestsService.createNode(this.verifier, this.diagramDescriptionIdProvider, this.diagram, parentEClass, parentLabel, toolName);
IDiagramChecker diagramChecker = (initialDiagram, newDiagram) -> {
new CheckDiagramElementCount(this.diagramComparator)
.hasNewNodeCount(2)
.hasNewBorderNodeCount(1)
.hasNewEdgeCount(0)
.check(initialDiagram, newDiagram);
String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference);
new CheckNodeInCompartment(this.diagramDescriptionIdProvider, this.diagramComparator)
.withParentLabel(parentLabel)
.withCompartmentName(compartmentName)
.hasNodeDescriptionName(compartmentNodeDescription)
.hasCompartmentCount(0)
.check(initialDiagram, newDiagram);
String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType);
new CheckBorderNode(this.diagramDescriptionIdProvider, this.diagramComparator)
.withParentLabel(parentLabel)
.hasBorderNodeDescriptionName(borderNodeDescription)
.check(initialDiagram, newDiagram);
};
this.diagramCheckerService.checkDiagram(diagramChecker, this.diagram, this.verifier);
this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass), this.verifier);
}

@Sql(scripts = { GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD,
config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED))
@Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED))
@ParameterizedTest
@MethodSource("actionDefinitionBorderAndChildNodeParameters")
public void createActionDefinitionBorderAndChildNodes(EClass childEClass, String compartmentName, EReference containmentReference, EClass borderNodeType, String toolName) {
EClass parentEClass = SysmlPackage.eINSTANCE.getActionDefinition();
String parentLabel = "ActionDefinition";
this.creationTestsService.createNode(this.verifier, this.diagramDescriptionIdProvider, this.diagram, parentEClass, parentLabel, toolName);
IDiagramChecker diagramChecker = (initialDiagram, newDiagram) -> {
new CheckDiagramElementCount(this.diagramComparator)
.hasNewNodeCount(2)
Expand Down Expand Up @@ -568,7 +618,8 @@ public void createActionDefinitionSiblingNodes(EClass childEClass, EReference co
EClass parentEClass = SysmlPackage.eINSTANCE.getActionDefinition();
String parentLabel = "ActionDefinition";
this.creationTestsService.createNode(this.verifier, this.diagramDescriptionIdProvider, this.diagram, parentEClass, parentLabel, childEClass);
this.diagramCheckerService.checkDiagram(this.diagramCheckerService.getSiblingNodeGraphicalChecker(this.diagram, this.diagramDescriptionIdProvider, childEClass, compartmentCount), this.diagram,
this.diagramCheckerService.checkDiagram(this.diagramCheckerService.getSiblingNodeGraphicalChecker(this.diagram, this.diagramDescriptionIdProvider, childEClass, compartmentCount, 2),
this.diagram,
this.verifier);
this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass), this.verifier);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ private static Stream<Arguments> packageChildNodeParameters() {
Arguments.of(SysmlPackage.eINSTANCE.getAttributeUsage(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationDefinition(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationUsage(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getActionDefinition(), ownedMember, 5),
Arguments.of(SysmlPackage.eINSTANCE.getActionDefinition(), ownedMember, 6),
Arguments.of(SysmlPackage.eINSTANCE.getAcceptActionUsage(), ownedMember, 2),
Arguments.of(SysmlPackage.eINSTANCE.getActionUsage(), ownedMember, 7),
Arguments.of(SysmlPackage.eINSTANCE.getAssignmentActionUsage(), ownedMember, 1),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ private static Stream<Arguments> topNodeParameters() {
Arguments.of(SysmlPackage.eINSTANCE.getAllocationUsage(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationDefinition(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getAcceptActionUsage(), 2),
Arguments.of(SysmlPackage.eINSTANCE.getActionDefinition(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getActionDefinition(), 6),
Arguments.of(SysmlPackage.eINSTANCE.getActionUsage(), 7),
Arguments.of(SysmlPackage.eINSTANCE.getAssignmentActionUsage(), 1),
Arguments.of(SysmlPackage.eINSTANCE.getConcernDefinition(), 8),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public class GVViewUsageTests extends AbstractIntegrationTests {
private static Stream<Arguments> childNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getAcceptActionUsage(), 2),
Arguments.of(SysmlPackage.eINSTANCE.getActionDefinition(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getActionDefinition(), 6),
Arguments.of(SysmlPackage.eINSTANCE.getActionUsage(), 7),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationDefinition(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationUsage(), 3),
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading