From cc973fd47a1fdef9f9372757add994a57bc6637d Mon Sep 17 00:00:00 2001 From: Matt Van Horn Date: Mon, 29 Jun 2026 03:05:42 -0700 Subject: [PATCH] [2221] Empty initial direct edit value for elements with null declared name The SysON Explorer initial direct-edit provider mapped the resolved element through getDeclaredName(). When that returned null (for example a Dependency), Optional.map collapsed to empty and the code fell back to the computed tree-item label. Validating that prefilled label wrote the display label into the declared name, creating a duplicated short name. When an Element is resolved, return its declared name or an empty string when it is null. The tree-item label fallback is kept only when no Element resolves at all. Bug: https://github.com/eclipse-syson/syson/issues/2221 Signed-off-by: Matt Van Horn --- CHANGELOG.adoc | 2 ++ ...xplorerViewControllerIntegrationTests.java | 25 +++++++++++++++++++ ...ExplorerViewDirectEditTestProjectData.java | 2 ++ .../ExplorerView-DirectEdit.sql | 2 +- ...nitialDirectEditTreeItemLabelProvider.java | 2 +- 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 8d29c4039..c43782fcd 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -34,6 +34,8 @@ It has long been unused by Sirius Web itself (since the transition to MUI). - https://github.com/eclipse-syson/syson/issues/1808[#1808] [diagrams] Remove multiplicity displayed on feature membership edge between Part Definition and Part Usage. - https://github.com/eclipse-syson/syson/issues/2194[#2194] [diagrams] Properly report feedback messages to user when using _ISysMLMoveElementService_. - https://github.com/eclipse-syson/syson/issues/2306[#2306] [diagrams] Fixed an error when trying to rename a constraint displayed as a list item through direct edit. +- https://github.com/eclipse-syson/syson/issues/2221[#2221] [explorer] Fix the initial direct edit value of an _Explorer_ tree item whose element has no declared name (for example a `Dependency`). +The initial value is now an empty string instead of the computed display label, so validating it without changes no longer writes the display label into the element's declared name. === Improvements - https://github.com/eclipse-syson/syson/issues/2198[#2198] [diagrams] Improve diagram-to-diagram drag and drop to support dropping multiple graphical nodes at once, leveraging Sirius Web's `droppedNodes` and `droppedElements` variables. diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java index e47832b6a..54dd98b8a 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java @@ -126,6 +126,10 @@ private record TreeItemMatcher(Function treeItemFinder, Predicat tree -> tree.getChildren().get(0).getChildren().get(1).getChildren().get(2), treeItem -> treeItem.getLabel().toString().equals(" ")); + private final TreeItemMatcher req3RU = new TreeItemMatcher( + tree -> tree.getChildren().get(0).getChildren().get(1).getChildren().get(3), + treeItem -> treeItem.getLabel().toString().startsWith("")); + private final TreeItemMatcher userLibraryPackageRW = new TreeItemMatcher( tree -> this.findTreeItem(tree, WithUserLibrariesTestProjectData.SemanticIds.RW_USER_LIBRARY_PACKAGE_ID).orElseThrow(), treeItem -> treeItem.getLabel().toString().equals("Package2")); @@ -264,6 +268,27 @@ public void testDirectEditOnElementWithShortName() { .verify(Duration.ofSeconds(10)); } + @DisplayName("GIVEN the SysON Explorer View, WHEN we direct edit an Element with a null declared name, THEN the initial value of the direct edit is empty") + @GivenSysONServer({ ExplorerViewDirectEditTestProjectData.SCRIPT_PATH }) + @Test + public void testDirectEditOnElementWithNullDeclaredName() { + var expandedIds = this.getAllTreeItemIds(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID); + var activatedFilters = List.of(SysONTreeFilterConstants.HIDE_ROOT_NAMESPACES_ID, SysONTreeFilterConstants.HIDE_MEMBERSHIPS_TREE_ITEM_FILTER_ID); + var treeRepresentationId = this.representationIdBuilder.buildExplorerRepresentationId(this.sysONTreeViewDescriptionProvider.getDescriptionId(), expandedIds, activatedFilters); + + var treeEventInput = new ExplorerEventInput(UUID.randomUUID(), ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId); + var treeFlux = this.treeEventSubscriptionRunner.run(treeEventInput).flux(); + + var hasProjectContent = this.getTreeRefreshedEventPayloadMatcher(List.of(this.req3RU)); + + StepVerifier.create(treeFlux) + .consumeNextWith(hasProjectContent) + .then(this.triggerDirectEditTreeItemLabel(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId, + UUID.fromString(ExplorerViewDirectEditTestProjectData.SemanticIds.REQ3_RU_ID), "")) + .thenCancel() + .verify(Duration.ofSeconds(10)); + } + @DisplayName("GIVEN the SysON Explorer View, WHEN we try to create a new element in an imported read-write user library, THEN a new element is added to the user library") @GivenSysONServer({ WithUserLibrariesTestProjectData.SCRIPT_PATH }) @Test diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/ExplorerViewDirectEditTestProjectData.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/ExplorerViewDirectEditTestProjectData.java index 826c14ac0..a64632aed 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/ExplorerViewDirectEditTestProjectData.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/ExplorerViewDirectEditTestProjectData.java @@ -61,6 +61,8 @@ public static final class SemanticIds { public static final String REQ1_RU_ID = "49ec0ce7-c6c4-45f2-a55b-d11a5dca62e4"; public static final String REQ2_RU_ID = "1380102d-9b85-4933-8f60-f691fab97672"; + + public static final String REQ3_RU_ID = "f9f66a25-6bda-4ab3-bc5f-96dc6866df0c"; } } diff --git a/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql b/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql index a5d874a3f..68791fab9 100644 --- a/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql +++ b/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql @@ -26,7 +26,7 @@ INSERT INTO public.semantic_data (id, created_on, last_modified_on) VALUES ('4b5 -- Data for Name: document; Type: TABLE DATA; Schema: public; Owner: dbuser -- -INSERT INTO public.document (id, semantic_data_id, name, content, created_on, last_modified_on, is_read_only) VALUES ('9a59f836-1df2-4e5d-803c-9eb0ba7031aa', '4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b', 'SysMLv2.sysml', '{"json":{"version":"1.0","encoding":"utf-8"},"ns":{"sysml":"http://www.eclipse.org/syson/sysml"},"migration":{"lastMigrationPerformed":"OneDiagramDescriptionMigrationParticipant$$SpringCGLIB$$0","migrationVersion":"2025.8.0-202508220000"},"content":[{"id":"686dee81-b94c-4393-b15b-65dd73dfdd24","eClass":"sysml:Namespace","data":{"elementId":"bea38691-2169-4b70-87ac-ffa289824fde","ownedRelationship":[{"id":"e3c74bf2-55ba-4b0d-a4f5-9ab326f372c4","eClass":"sysml:OwningMembership","data":{"elementId":"a6fce401-4aaf-47c8-88a6-d75462e3c6db","ownedRelatedElement":[{"id":"127c38e7-0e15-4232-aa02-76b342e3324a","eClass":"sysml:Package","data":{"declaredName":"Package1","elementId":"d51791b8-6666-46e3-8c60-c975e1f3e490","ownedRelationship":[{"id":"0642ab55-a317-40c1-aa52-cc16306d937b","eClass":"sysml:NamespaceImport","data":{"elementId":"9f902e4a-4ca9-4787-92d8-713b3b06c490","importedNamespace":"ec12f223-8639-42a3-96c2-34163c6eccce"}},{"id":"883deb19-59a8-4c58-8887-978bf11fffcd","eClass":"sysml:OwningMembership","data":{"elementId":"be359545-8e91-439c-8bdf-0638ab702f9d","ownedRelatedElement":[{"id":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","eClass":"sysml:PartUsage","data":{"declaredName":"p","elementId":"d99634bb-d4e0-4afa-bbe4-ee553005937d","ownedRelationship":[{"id":"1ba5c6e8-1c6b-44f6-8a05-f82f2c7a2538","eClass":"sysml:FeatureTyping","data":{"elementId":"9bfede6e-a370-451e-aa33-c1102942dcb7","type":"0a70220d-707e-4a88-84dc-6aa43aa97269","typedFeature":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e"}},{"id":"d0af8b7c-1a69-4817-be08-13fd7379fd81","eClass":"sysml:FeatureMembership","data":{"elementId":"9700175b-699c-4201-bfbd-8ce3d90cbc5f","ownedRelatedElement":[{"id":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c","eClass":"sysml:ViewUsage","data":{"declaredName":"view4","elementId":"bdedde81-86db-4f74-887b-20af07833c25","ownedRelationship":[{"id":"395ef21e-36d7-4d9a-9586-99a631fcedf0","eClass":"sysml:FeatureTyping","data":{"elementId":"edb72ff4-e724-4387-9dd6-7b3e7095607e","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c"}}]}}]}}],"isComposite":true}}]}},{"id":"a5e72c79-5496-4770-a4c7-296a56f47617","eClass":"sysml:OwningMembership","data":{"elementId":"4e21e33f-7920-49fe-8889-b4fab257dc78","ownedRelatedElement":[{"id":"17df78b1-ad06-4861-827e-c1cf15eed2a5","eClass":"sysml:ViewUsage","data":{"declaredName":"view1","elementId":"0a0c297f-a58b-4ef8-a4f6-8d0ff197b238","ownedRelationship":[{"id":"60d64858-90b3-44ed-af19-b966d72a8a8b","eClass":"sysml:FeatureTyping","data":{"elementId":"da3ad6ee-3e58-4ed4-a41a-88f7b3d1dbfa","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#03904fdf-d6f2-57b1-92d5-95d36b8208dc","typedFeature":"17df78b1-ad06-4861-827e-c1cf15eed2a5"}},{"id":"af34119d-aacc-46ca-a981-8a27cda51335","eClass":"sysml:MembershipExpose","data":{"elementId":"a8f61be3-c17e-4084-ad2f-b42aca0c816b","importedMembership":"883deb19-59a8-4c58-8887-978bf11fffcd"}}],"isComposite":true}}]}},{"id":"28feab55-0a2d-4d69-85d5-29fe3b069b71","eClass":"sysml:OwningMembership","data":{"elementId":"41ccfd33-8013-4684-82b5-f279decaad1b","ownedRelatedElement":[{"id":"c7a3fc13-d643-469c-a0ad-5939869a2bee","eClass":"sysml:ViewUsage","data":{"declaredName":"view2","elementId":"dd76563a-251d-4c3e-a4bf-108304672629","ownedRelationship":[{"id":"ed5facc4-54a7-41f9-b4ec-6f08fc4061b5","eClass":"sysml:FeatureTyping","data":{"elementId":"c2d81d09-5098-4775-bb74-b746a70fe510","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#e1e8729f-a571-520c-b3f8-1b8dcdf5014d","typedFeature":"c7a3fc13-d643-469c-a0ad-5939869a2bee"}}]}}]}},{"id":"505066be-cc52-4edb-a1df-17a29242e4be","eClass":"sysml:OwningMembership","data":{"elementId":"c20baa6f-ffc6-4178-8dc1-e074b9e68782","ownedRelatedElement":[{"id":"cca0616d-49d3-4311-a390-2511576cf759","eClass":"sysml:ViewUsage","data":{"declaredName":"view3","elementId":"c691780a-a8a9-4444-acba-d33cfd628b73","ownedRelationship":[{"id":"82cc5a01-8b63-4e60-a7b1-df7631d00e22","eClass":"sysml:FeatureTyping","data":{"elementId":"5fa23d7d-50a7-407a-a631-f800ad514d8c","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#073ba87b-4f0a-5a2e-8ce5-71f9dc645098","typedFeature":"cca0616d-49d3-4311-a390-2511576cf759"}}]}}]}}]}}]}},{"id":"13001db6-0353-48ba-8bec-157bbd9a3b57","eClass":"sysml:OwningMembership","data":{"elementId":"cd1165da-f4a1-4962-90f6-d117e8c7a354","ownedRelatedElement":[{"id":"ec12f223-8639-42a3-96c2-34163c6eccce","eClass":"sysml:Package","data":{"declaredName":"Package2","elementId":"40c37406-f22d-4424-981f-99935f039244","ownedRelationship":[{"id":"bbe9c050-d108-4807-8c62-7d20c31817f6","eClass":"sysml:OwningMembership","data":{"elementId":"c0c5cec5-6606-4145-98c7-eef80964e95a","ownedRelatedElement":[{"id":"0a70220d-707e-4a88-84dc-6aa43aa97269","eClass":"sysml:PartDefinition","data":{"declaredName":"PartDefX","elementId":"47acdb65-63f9-4bd5-8675-e2596241dc2c"}}]}},{"id":"a058de76-1db9-40b4-9174-e07dad7ab3b0","eClass":"sysml:OwningMembership","data":{"elementId":"7a696b33-a936-40ad-b9f4-19fdf27315cb","ownedRelatedElement":[{"id":"49ec0ce7-c6c4-45f2-a55b-d11a5dca62e4","eClass":"sysml:RequirementUsage","data":{"declaredName":"requirement1","declaredShortName":"Req1","elementId":"73d7d098-14e8-4035-a7d0-e623ac08606a","isComposite":true}}]}},{"id":"c6712512-93c6-48f3-8676-cce185ed4cde","eClass":"sysml:OwningMembership","data":{"elementId":"9f232534-cfa1-40c7-bdc0-746de3d8c7da","ownedRelatedElement":[{"id":"1380102d-9b85-4933-8f60-f691fab97672","eClass":"sysml:RequirementUsage","data":{"declaredName":"","declaredShortName":"Req2","elementId":"aa0b606d-d7fb-4da7-8ddd-c5754b4ff08a","isComposite":true}}]}}]}}]}}]}}]}', '2025-10-27 13:16:35.102947+00', '2025-10-27 13:16:35.102947+00', false); +INSERT INTO public.document (id, semantic_data_id, name, content, created_on, last_modified_on, is_read_only) VALUES ('9a59f836-1df2-4e5d-803c-9eb0ba7031aa', '4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b', 'SysMLv2.sysml', '{"json":{"version":"1.0","encoding":"utf-8"},"ns":{"sysml":"http://www.eclipse.org/syson/sysml"},"migration":{"lastMigrationPerformed":"OneDiagramDescriptionMigrationParticipant$$SpringCGLIB$$0","migrationVersion":"2025.8.0-202508220000"},"content":[{"id":"686dee81-b94c-4393-b15b-65dd73dfdd24","eClass":"sysml:Namespace","data":{"elementId":"bea38691-2169-4b70-87ac-ffa289824fde","ownedRelationship":[{"id":"e3c74bf2-55ba-4b0d-a4f5-9ab326f372c4","eClass":"sysml:OwningMembership","data":{"elementId":"a6fce401-4aaf-47c8-88a6-d75462e3c6db","ownedRelatedElement":[{"id":"127c38e7-0e15-4232-aa02-76b342e3324a","eClass":"sysml:Package","data":{"declaredName":"Package1","elementId":"d51791b8-6666-46e3-8c60-c975e1f3e490","ownedRelationship":[{"id":"0642ab55-a317-40c1-aa52-cc16306d937b","eClass":"sysml:NamespaceImport","data":{"elementId":"9f902e4a-4ca9-4787-92d8-713b3b06c490","importedNamespace":"ec12f223-8639-42a3-96c2-34163c6eccce"}},{"id":"883deb19-59a8-4c58-8887-978bf11fffcd","eClass":"sysml:OwningMembership","data":{"elementId":"be359545-8e91-439c-8bdf-0638ab702f9d","ownedRelatedElement":[{"id":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","eClass":"sysml:PartUsage","data":{"declaredName":"p","elementId":"d99634bb-d4e0-4afa-bbe4-ee553005937d","ownedRelationship":[{"id":"1ba5c6e8-1c6b-44f6-8a05-f82f2c7a2538","eClass":"sysml:FeatureTyping","data":{"elementId":"9bfede6e-a370-451e-aa33-c1102942dcb7","type":"0a70220d-707e-4a88-84dc-6aa43aa97269","typedFeature":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e"}},{"id":"d0af8b7c-1a69-4817-be08-13fd7379fd81","eClass":"sysml:FeatureMembership","data":{"elementId":"9700175b-699c-4201-bfbd-8ce3d90cbc5f","ownedRelatedElement":[{"id":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c","eClass":"sysml:ViewUsage","data":{"declaredName":"view4","elementId":"bdedde81-86db-4f74-887b-20af07833c25","ownedRelationship":[{"id":"395ef21e-36d7-4d9a-9586-99a631fcedf0","eClass":"sysml:FeatureTyping","data":{"elementId":"edb72ff4-e724-4387-9dd6-7b3e7095607e","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c"}}]}}]}}],"isComposite":true}}]}},{"id":"a5e72c79-5496-4770-a4c7-296a56f47617","eClass":"sysml:OwningMembership","data":{"elementId":"4e21e33f-7920-49fe-8889-b4fab257dc78","ownedRelatedElement":[{"id":"17df78b1-ad06-4861-827e-c1cf15eed2a5","eClass":"sysml:ViewUsage","data":{"declaredName":"view1","elementId":"0a0c297f-a58b-4ef8-a4f6-8d0ff197b238","ownedRelationship":[{"id":"60d64858-90b3-44ed-af19-b966d72a8a8b","eClass":"sysml:FeatureTyping","data":{"elementId":"da3ad6ee-3e58-4ed4-a41a-88f7b3d1dbfa","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#03904fdf-d6f2-57b1-92d5-95d36b8208dc","typedFeature":"17df78b1-ad06-4861-827e-c1cf15eed2a5"}},{"id":"af34119d-aacc-46ca-a981-8a27cda51335","eClass":"sysml:MembershipExpose","data":{"elementId":"a8f61be3-c17e-4084-ad2f-b42aca0c816b","importedMembership":"883deb19-59a8-4c58-8887-978bf11fffcd"}}],"isComposite":true}}]}},{"id":"28feab55-0a2d-4d69-85d5-29fe3b069b71","eClass":"sysml:OwningMembership","data":{"elementId":"41ccfd33-8013-4684-82b5-f279decaad1b","ownedRelatedElement":[{"id":"c7a3fc13-d643-469c-a0ad-5939869a2bee","eClass":"sysml:ViewUsage","data":{"declaredName":"view2","elementId":"dd76563a-251d-4c3e-a4bf-108304672629","ownedRelationship":[{"id":"ed5facc4-54a7-41f9-b4ec-6f08fc4061b5","eClass":"sysml:FeatureTyping","data":{"elementId":"c2d81d09-5098-4775-bb74-b746a70fe510","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#e1e8729f-a571-520c-b3f8-1b8dcdf5014d","typedFeature":"c7a3fc13-d643-469c-a0ad-5939869a2bee"}}]}}]}},{"id":"505066be-cc52-4edb-a1df-17a29242e4be","eClass":"sysml:OwningMembership","data":{"elementId":"c20baa6f-ffc6-4178-8dc1-e074b9e68782","ownedRelatedElement":[{"id":"cca0616d-49d3-4311-a390-2511576cf759","eClass":"sysml:ViewUsage","data":{"declaredName":"view3","elementId":"c691780a-a8a9-4444-acba-d33cfd628b73","ownedRelationship":[{"id":"82cc5a01-8b63-4e60-a7b1-df7631d00e22","eClass":"sysml:FeatureTyping","data":{"elementId":"5fa23d7d-50a7-407a-a631-f800ad514d8c","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#073ba87b-4f0a-5a2e-8ce5-71f9dc645098","typedFeature":"cca0616d-49d3-4311-a390-2511576cf759"}}]}}]}}]}}]}},{"id":"13001db6-0353-48ba-8bec-157bbd9a3b57","eClass":"sysml:OwningMembership","data":{"elementId":"cd1165da-f4a1-4962-90f6-d117e8c7a354","ownedRelatedElement":[{"id":"ec12f223-8639-42a3-96c2-34163c6eccce","eClass":"sysml:Package","data":{"declaredName":"Package2","elementId":"40c37406-f22d-4424-981f-99935f039244","ownedRelationship":[{"id":"bbe9c050-d108-4807-8c62-7d20c31817f6","eClass":"sysml:OwningMembership","data":{"elementId":"c0c5cec5-6606-4145-98c7-eef80964e95a","ownedRelatedElement":[{"id":"0a70220d-707e-4a88-84dc-6aa43aa97269","eClass":"sysml:PartDefinition","data":{"declaredName":"PartDefX","elementId":"47acdb65-63f9-4bd5-8675-e2596241dc2c"}}]}},{"id":"a058de76-1db9-40b4-9174-e07dad7ab3b0","eClass":"sysml:OwningMembership","data":{"elementId":"7a696b33-a936-40ad-b9f4-19fdf27315cb","ownedRelatedElement":[{"id":"49ec0ce7-c6c4-45f2-a55b-d11a5dca62e4","eClass":"sysml:RequirementUsage","data":{"declaredName":"requirement1","declaredShortName":"Req1","elementId":"73d7d098-14e8-4035-a7d0-e623ac08606a","isComposite":true}}]}},{"id":"c6712512-93c6-48f3-8676-cce185ed4cde","eClass":"sysml:OwningMembership","data":{"elementId":"9f232534-cfa1-40c7-bdc0-746de3d8c7da","ownedRelatedElement":[{"id":"1380102d-9b85-4933-8f60-f691fab97672","eClass":"sysml:RequirementUsage","data":{"declaredName":"","declaredShortName":"Req2","elementId":"aa0b606d-d7fb-4da7-8ddd-c5754b4ff08a","isComposite":true}}]}},{"id":"b76c699c-7886-4afc-b14c-b7b5559eff95","eClass":"sysml:OwningMembership","data":{"elementId":"2e1396c1-b047-4fd4-883e-c3647f1e135f","ownedRelatedElement":[{"id":"f9f66a25-6bda-4ab3-bc5f-96dc6866df0c","eClass":"sysml:RequirementUsage","data":{"declaredShortName":"Req3","elementId":"3d3e5424-9e87-4223-ba50-f28d00f2e1bd","isComposite":true}}]}}]}}]}}]}}]}', '2025-10-27 13:16:35.102947+00', '2025-10-27 13:16:35.102947+00', false); -- diff --git a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerInitialDirectEditTreeItemLabelProvider.java b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerInitialDirectEditTreeItemLabelProvider.java index 6e6cefe84..b3dfc556c 100644 --- a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerInitialDirectEditTreeItemLabelProvider.java +++ b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerInitialDirectEditTreeItemLabelProvider.java @@ -61,7 +61,7 @@ public IPayload handle(IEditingContext editingContext, Tree tree, InitialDirectE String label = this.objectSearchService.getObject(editingContext, input.treeItemId()) .filter(Element.class::isInstance) .map(Element.class::cast) - .map(Element::getDeclaredName) + .map(element -> Optional.ofNullable(element.getDeclaredName()).orElse("")) .orElseGet(() -> tree.getChildren().stream() .map(treeItems -> this.searchById(treeItems, input.treeItemId())) .filter(Optional::isPresent)