Skip to content

Commit 3c4e6b9

Browse files
committed
[releng] Bump version to 2025.8.8
Signed-off-by: Axel RICHARD <axel.richard@obeo.fr>
1 parent c52d102 commit 3c4e6b9

39 files changed

Lines changed: 575 additions & 127 deletions

File tree

backend/application/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<groupId>org.eclipse.syson</groupId>
1919
<artifactId>syson-application-parent</artifactId>
20-
<version>2025.8.5</version>
20+
<version>2025.8.8</version>
2121

2222
<name>syson-application-parent</name>
2323
<description>SysON Application Parent</description>

backend/application/syson-application-configuration/pom.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
</parent>
2424
<groupId>org.eclipse.syson</groupId>
2525
<artifactId>syson-application-configuration</artifactId>
26-
<version>2025.8.5</version>
26+
<version>2025.8.8</version>
2727
<name>syson-application-configuration</name>
2828
<description>SysON Application Configuration</description>
2929

@@ -69,27 +69,27 @@
6969
<dependency>
7070
<groupId>org.eclipse.syson</groupId>
7171
<artifactId>syson-sysml-metamodel</artifactId>
72-
<version>2025.8.5</version>
72+
<version>2025.8.8</version>
7373
</dependency>
7474
<dependency>
7575
<groupId>org.eclipse.syson</groupId>
7676
<artifactId>syson-sysml-metamodel-edit</artifactId>
77-
<version>2025.8.5</version>
77+
<version>2025.8.8</version>
7878
</dependency>
7979
<dependency>
8080
<groupId>org.eclipse.syson</groupId>
8181
<artifactId>syson-services</artifactId>
82-
<version>2025.8.5</version>
82+
<version>2025.8.8</version>
8383
</dependency>
8484
<dependency>
8585
<groupId>org.eclipse.syson</groupId>
8686
<artifactId>syson-siriusweb-customnodes-metamodel</artifactId>
87-
<version>2025.8.5</version>
87+
<version>2025.8.8</version>
8888
</dependency>
8989
<dependency>
9090
<groupId>org.eclipse.syson</groupId>
9191
<artifactId>syson-siriusweb-customnodes-metamodel-edit</artifactId>
92-
<version>2025.8.5</version>
92+
<version>2025.8.8</version>
9393
</dependency>
9494
<!-- Test Dependencies -->
9595
<dependency>
@@ -105,7 +105,7 @@
105105
<dependency>
106106
<groupId>org.eclipse.syson</groupId>
107107
<artifactId>syson-tests</artifactId>
108-
<version>2025.8.5</version>
108+
<version>2025.8.8</version>
109109
<scope>test</scope>
110110
</dependency>
111111
</dependencies>

backend/application/syson-application/pom.xml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
</parent>
2424
<groupId>org.eclipse.syson</groupId>
2525
<artifactId>syson-application</artifactId>
26-
<version>2025.8.5</version>
26+
<version>2025.8.8</version>
2727
<name>syson-application</name>
2828
<description>SysON Application</description>
2929

@@ -82,62 +82,62 @@
8282
<dependency>
8383
<groupId>org.eclipse.syson</groupId>
8484
<artifactId>syson-sysml-metamodel</artifactId>
85-
<version>2025.8.5</version>
85+
<version>2025.8.8</version>
8686
</dependency>
8787
<dependency>
8888
<groupId>org.eclipse.syson</groupId>
8989
<artifactId>syson-sysml-metamodel-edit</artifactId>
90-
<version>2025.8.5</version>
90+
<version>2025.8.8</version>
9191
</dependency>
9292
<dependency>
9393
<groupId>org.eclipse.syson</groupId>
9494
<artifactId>syson-frontend</artifactId>
95-
<version>2025.8.5</version>
95+
<version>2025.8.8</version>
9696
</dependency>
9797
<dependency>
9898
<groupId>org.eclipse.syson</groupId>
9999
<artifactId>syson-application-configuration</artifactId>
100-
<version>2025.8.5</version>
100+
<version>2025.8.8</version>
101101
</dependency>
102102
<dependency>
103103
<groupId>org.eclipse.syson</groupId>
104104
<artifactId>syson-sysml-rest-api-services</artifactId>
105-
<version>2025.8.5</version>
105+
<version>2025.8.8</version>
106106
</dependency>
107107
<dependency>
108108
<groupId>org.eclipse.syson</groupId>
109109
<artifactId>syson-diagram-common-view</artifactId>
110-
<version>2025.8.5</version>
110+
<version>2025.8.8</version>
111111
</dependency>
112112
<dependency>
113113
<groupId>org.eclipse.syson</groupId>
114114
<artifactId>syson-standard-diagrams-view</artifactId>
115-
<version>2025.8.5</version>
115+
<version>2025.8.8</version>
116116
</dependency>
117117
<dependency>
118118
<groupId>org.eclipse.syson</groupId>
119119
<artifactId>syson-table-requirements-view</artifactId>
120-
<version>2025.8.5</version>
120+
<version>2025.8.8</version>
121121
</dependency>
122122
<dependency>
123123
<groupId>org.eclipse.syson</groupId>
124124
<artifactId>syson-tree-explorer-view</artifactId>
125-
<version>2025.8.5</version>
125+
<version>2025.8.8</version>
126126
</dependency>
127127
<dependency>
128128
<groupId>org.eclipse.syson</groupId>
129129
<artifactId>syson-sysml-import</artifactId>
130-
<version>2025.8.5</version>
130+
<version>2025.8.8</version>
131131
</dependency>
132132
<dependency>
133133
<groupId>org.eclipse.syson</groupId>
134134
<artifactId>syson-sysml-export</artifactId>
135-
<version>2025.8.5</version>
135+
<version>2025.8.8</version>
136136
</dependency>
137137
<dependency>
138138
<groupId>org.eclipse.syson</groupId>
139139
<artifactId>syson-sysml-validation</artifactId>
140-
<version>2025.8.5</version>
140+
<version>2025.8.8</version>
141141
</dependency>
142142

143143
<!-- Test Dependencies -->
@@ -194,7 +194,7 @@
194194
<dependency>
195195
<groupId>org.eclipse.syson</groupId>
196196
<artifactId>syson-sysml-metamodel</artifactId>
197-
<version>2025.8.5</version>
197+
<version>2025.8.8</version>
198198
<type>test-jar</type>
199199
<scope>test</scope>
200200
</dependency>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2025 Obeo.
3+
* This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v2.0
5+
* which accompanies this distribution, and is available at
6+
* https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* Obeo - initial API and implementation
12+
*******************************************************************************/
13+
package org.eclipse.syson.application.controllers.explorer.view;
14+
15+
import static org.assertj.core.api.Assertions.assertThat;
16+
import static org.eclipse.sirius.components.trees.tests.TreeEventPayloadConsumer.assertRefreshedTreeThat;
17+
18+
import com.jayway.jsonpath.JsonPath;
19+
20+
import java.time.Duration;
21+
import java.util.ArrayList;
22+
import java.util.List;
23+
import java.util.Map;
24+
import java.util.UUID;
25+
import java.util.function.Consumer;
26+
import java.util.function.Function;
27+
import java.util.function.Predicate;
28+
29+
import org.eclipse.emf.ecore.EObject;
30+
import org.eclipse.emf.ecore.resource.Resource;
31+
import org.eclipse.sirius.components.core.api.IEditingContextSearchService;
32+
import org.eclipse.sirius.components.core.api.IIdentityService;
33+
import org.eclipse.sirius.components.emf.services.api.IEMFEditingContext;
34+
import org.eclipse.sirius.components.trees.Tree;
35+
import org.eclipse.sirius.components.trees.TreeItem;
36+
import org.eclipse.sirius.components.trees.tests.graphql.InitialDirectEditTreeItemLabelQueryRunner;
37+
import org.eclipse.sirius.web.application.views.explorer.ExplorerEventInput;
38+
import org.eclipse.sirius.web.tests.services.api.IGivenInitialServerState;
39+
import org.eclipse.sirius.web.tests.services.explorer.ExplorerEventSubscriptionRunner;
40+
import org.eclipse.sirius.web.tests.services.representation.RepresentationIdBuilder;
41+
import org.eclipse.syson.AbstractIntegrationTests;
42+
import org.eclipse.syson.application.data.ExplorerViewDirectEditTestProjectData;
43+
import org.eclipse.syson.tree.explorer.view.SysONTreeViewDescriptionProvider;
44+
import org.eclipse.syson.tree.explorer.view.filters.SysONTreeFilterProvider;
45+
import org.junit.jupiter.api.BeforeEach;
46+
import org.junit.jupiter.api.DisplayName;
47+
import org.junit.jupiter.api.Test;
48+
import org.springframework.beans.factory.annotation.Autowired;
49+
import org.springframework.boot.test.context.SpringBootTest;
50+
import org.springframework.test.context.jdbc.Sql;
51+
import org.springframework.test.context.jdbc.SqlConfig;
52+
import org.springframework.transaction.annotation.Transactional;
53+
54+
import reactor.test.StepVerifier;
55+
56+
/**
57+
* Integration tests of the Explorer view.
58+
*
59+
* @author arichard
60+
*/
61+
@Transactional
62+
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
63+
public class ExplorerViewControllerIntegrationTests extends AbstractIntegrationTests {
64+
65+
/**
66+
* Record used to contain both a way to find a tree item and some predicate to validate on said tree item in order
67+
* to simplify the design of some advanced tests.
68+
*
69+
* @author arichard
70+
*/
71+
private record TreeItemMatcher(Function<Tree, TreeItem> treeItemFinder, Predicate<TreeItem> treeItemPredicate) {
72+
}
73+
74+
private final TreeItemMatcher view1GV = new TreeItemMatcher(
75+
tree -> tree.getChildren().get(0).getChildren().get(0).getChildren().get(2),
76+
treeItem -> treeItem.getLabel().toString().equals("view1 [GeneralView]"));
77+
78+
private final TreeItemMatcher view2AFV = new TreeItemMatcher(
79+
tree -> tree.getChildren().get(0).getChildren().get(0).getChildren().get(3),
80+
treeItem -> treeItem.getLabel().toString().equals("view2 [ActionFlowView]"));
81+
82+
private final TreeItemMatcher view3STV = new TreeItemMatcher(
83+
tree -> tree.getChildren().get(0).getChildren().get(0).getChildren().get(4),
84+
treeItem -> treeItem.getLabel().toString().equals("view3 [StateTransitionView]"));
85+
86+
private final TreeItemMatcher view4IV = new TreeItemMatcher(
87+
tree -> tree.getChildren().get(0).getChildren().get(0).getChildren().get(1).getChildren().get(1),
88+
treeItem -> treeItem.getLabel().toString().equals("view4 [InterconnectionView]"));
89+
90+
@Autowired
91+
private IGivenInitialServerState givenInitialServerState;
92+
93+
@Autowired
94+
private IEditingContextSearchService editingContextSearchService;
95+
96+
@Autowired
97+
private IIdentityService identityService;
98+
99+
@Autowired
100+
private ExplorerEventSubscriptionRunner treeEventSubscriptionRunner;
101+
102+
@Autowired
103+
private InitialDirectEditTreeItemLabelQueryRunner initialDirectEditTreeItemLabelQueryRunner;
104+
105+
@Autowired
106+
private RepresentationIdBuilder representationIdBuilder;
107+
108+
@Autowired
109+
private SysONTreeViewDescriptionProvider sysONTreeViewDescriptionProvider;
110+
111+
@BeforeEach
112+
public void beforeEach() {
113+
this.givenInitialServerState.initialize();
114+
}
115+
116+
@DisplayName("GIVEN the SysON Explorer View, WHEN we direct edit a ViewUsage typed with a standard diagram, THEN the type of ViewUsage is not part of the initial value of the direct edit")
117+
@Sql(scripts = { ExplorerViewDirectEditTestProjectData.SCRIPT_PATH }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD,
118+
config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED))
119+
@Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED))
120+
@Test
121+
public void testDirectEditOnViewUsage() {
122+
var expandedIds = this.getAllTreeItemIds();
123+
var activatedFilters = List.of(SysONTreeFilterProvider.HIDE_ROOT_NAMESPACES_ID, SysONTreeFilterProvider.HIDE_MEMBERSHIPS_TREE_ITEM_FILTER_ID);
124+
var treeRepresentationId = this.representationIdBuilder.buildExplorerRepresentationId(this.sysONTreeViewDescriptionProvider.getDescriptionId(), expandedIds, activatedFilters);
125+
126+
var treeEventInput = new ExplorerEventInput(UUID.randomUUID(), ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId);
127+
var treeFlux = this.treeEventSubscriptionRunner.run(treeEventInput);
128+
129+
var hasProjectContent = this.getTreeRefreshedEventPayloadMatcher(List.of(this.view1GV, this.view2AFV, this.view3STV, this.view4IV));
130+
131+
StepVerifier.create(treeFlux)
132+
.consumeNextWith(hasProjectContent)
133+
.then(this.triggerDirectEditTreeItemLabel(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId, UUID.fromString(ExplorerViewDirectEditTestProjectData.SemanticIds.VIEW_1_GV_ID), "view1"))
134+
.then(this.triggerDirectEditTreeItemLabel(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId,
135+
UUID.fromString(ExplorerViewDirectEditTestProjectData.SemanticIds.VIEW_2_AFV_ID), "view2"))
136+
.then(this.triggerDirectEditTreeItemLabel(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId,
137+
UUID.fromString(ExplorerViewDirectEditTestProjectData.SemanticIds.VIEW_3_STV_ID), "view3"))
138+
.then(this.triggerDirectEditTreeItemLabel(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId,
139+
UUID.fromString(ExplorerViewDirectEditTestProjectData.SemanticIds.VIEW_4_IV_ID), "view4"))
140+
.thenCancel()
141+
.verify(Duration.ofSeconds(100));
142+
143+
}
144+
145+
private List<String> getAllTreeItemIds() {
146+
var optionalEditingContext = this.editingContextSearchService.findById(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID)
147+
.filter(IEMFEditingContext.class::isInstance)
148+
.map(IEMFEditingContext.class::cast);
149+
assertThat(optionalEditingContext).isPresent();
150+
151+
var editingContext = optionalEditingContext.get();
152+
var expandedIds = new ArrayList<String>();
153+
editingContext.getDomain().getResourceSet().getAllContents().forEachRemaining(notifier -> {
154+
if (notifier instanceof Resource || notifier instanceof EObject) {
155+
expandedIds.add(this.identityService.getId(notifier));
156+
}
157+
});
158+
return expandedIds;
159+
}
160+
161+
private Consumer<Object> getTreeRefreshedEventPayloadMatcher(List<TreeItemMatcher> treeItemMatchers) {
162+
return assertRefreshedTreeThat(tree -> {
163+
assertThat(treeItemMatchers).allMatch(treeItemMatcher -> {
164+
var treeItem = treeItemMatcher.treeItemFinder.apply(tree);
165+
return treeItemMatcher.treeItemPredicate.test(treeItem);
166+
});
167+
});
168+
}
169+
170+
private Runnable triggerDirectEditTreeItemLabel(String editingContextId, String treeId, UUID treeItemId, String expectedLabel) {
171+
return () -> {
172+
Map<String, Object> variables = Map.of(
173+
"editingContextId", editingContextId,
174+
"representationId", treeId,
175+
"treeItemId", treeItemId);
176+
var result = this.initialDirectEditTreeItemLabelQueryRunner.run(variables);
177+
178+
String initialDirectEditLabel = JsonPath.read(result, "$.data.viewer.editingContext.representation.description.initialDirectEditTreeItemLabel");
179+
assertThat(initialDirectEditLabel).isEqualTo(expectedLabel);
180+
};
181+
}
182+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2025 Obeo.
3+
* This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v2.0
5+
* which accompanies this distribution, and is available at
6+
* https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* Obeo - initial API and implementation
12+
*******************************************************************************/
13+
package org.eclipse.syson.application.data;
14+
15+
/**
16+
* Identifiers for the "ExplorerView-DirectEdit" project.
17+
*
18+
* @author Arthur Daussy
19+
*/
20+
public class ExplorerViewDirectEditTestProjectData {
21+
22+
public static final String SCRIPT_PATH = "/scripts/database-content/ExplorerView-DirectEdit.sql";
23+
24+
public static final String PROJECT_NAME = "ExplorerView-DirectEdit";
25+
26+
public static final String EDITING_CONTEXT_ID = "4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b";
27+
28+
public static final String PROJECT_ID = "a427f187-9003-498c-9178-72e8350cc67c";
29+
30+
public static final String DOCUMENT_ID = "9a59f836-1df2-4e5d-803c-9eb0ba7031aa";
31+
32+
/**
33+
* Ids of graphical elements.
34+
*/
35+
public static class GraphicalIds {
36+
37+
}
38+
39+
/**
40+
* Ids for the semantic elements.
41+
*/
42+
public static final class SemanticIds {
43+
44+
public static final String PACKAGE_1_ID = "127c38e7-0e15-4232-aa02-76b342e3324a";
45+
46+
public static final String PART_DEF_ID = "0a70220d-707e-4a88-84dc-6aa43aa97269";
47+
48+
public static final String PART_ID = "a4f51a38-bfeb-4e0d-a870-55f8fe90405e";
49+
50+
public static final String PACKAGE2_ID = "ec12f223-8639-42a3-96c2-34163c6eccce";
51+
52+
public static final String VIEW_1_GV_ID = "17df78b1-ad06-4861-827e-c1cf15eed2a5";
53+
54+
public static final String VIEW_2_AFV_ID = "c7a3fc13-d643-469c-a0ad-5939869a2bee";
55+
56+
public static final String VIEW_3_STV_ID = "cca0616d-49d3-4311-a390-2511576cf759";
57+
58+
public static final String VIEW_4_IV_ID = "c3b15305-e5fb-44a9-96a1-4e0245fc4f2c";
59+
}
60+
61+
}

0 commit comments

Comments
 (0)