From 4bef68f471da89bda9bcebbf679ada9337e9c496 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Mon, 29 Jun 2026 10:49:20 +0200 Subject: [PATCH 1/2] [NAE-2452] Pre-release bugfixes Refactor `MenuItemService` to streamline parent ID handling and optimize destination folder assignment logic. --- .../engine/menu/services/MenuItemService.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java b/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java index 90283ee4d29..98d0ed8ae67 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java @@ -267,13 +267,12 @@ public void moveItem(Case itemCase, String destUri) throws TransitionNotExecutab } List casesToSave = new ArrayList<>(); - List parentIdList = MenuItemUtils.getCaseIdsFromCaseRef(itemCase, MenuItemConstants.FIELD_PARENT_ID); - if (parentIdList != null && !parentIdList.isEmpty()) { - Case oldParent = removeChildItemFromParent(parentIdList.get(0), itemCase); + List oldParentIdList = MenuItemUtils.getCaseIdsFromCaseRef(itemCase, MenuItemConstants.FIELD_PARENT_ID); + Case newParent = getOrCreateFolderItem(destUri); + if (oldParentIdList != null && !oldParentIdList.isEmpty()) { + Case oldParent = removeChildItemFromParent(oldParentIdList.get(0), itemCase); casesToSave.add(oldParent); } - - Case newParent = getOrCreateFolderItem(destUri); if (newParent != null) { itemCase.getDataField(MenuItemConstants.FIELD_PARENT_ID).setValue(List.of(newParent.getStringId())); appendChildCaseIdInMemory(newParent, itemCase.getStringId()); From a5e640ef0c5ed24f4bfc7a94ab3521c6fb0e5732 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Mon, 29 Jun 2026 14:03:34 +0200 Subject: [PATCH 2/2] [NAE-2452] Pre-release bugfixes Refactor `MenuItemService` to improve parent ID comparison and optimize parent-child relationship updates. --- .../engine/menu/services/MenuItemService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java b/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java index 98d0ed8ae67..8ae2a3fd8bd 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java @@ -269,15 +269,19 @@ public void moveItem(Case itemCase, String destUri) throws TransitionNotExecutab List oldParentIdList = MenuItemUtils.getCaseIdsFromCaseRef(itemCase, MenuItemConstants.FIELD_PARENT_ID); Case newParent = getOrCreateFolderItem(destUri); - if (oldParentIdList != null && !oldParentIdList.isEmpty()) { - Case oldParent = removeChildItemFromParent(oldParentIdList.get(0), itemCase); + + String oldParentId = oldParentIdList != null && !oldParentIdList.isEmpty() ? oldParentIdList.getFirst() : null; + boolean parentChanged = !Objects.equals(oldParentId, newParent != null ? newParent.getStringId() : null); + + if (parentChanged && oldParentId != null) { + Case oldParent = removeChildItemFromParent(oldParentId, itemCase); casesToSave.add(oldParent); } - if (newParent != null) { + if (parentChanged && newParent != null) { itemCase.getDataField(MenuItemConstants.FIELD_PARENT_ID).setValue(List.of(newParent.getStringId())); appendChildCaseIdInMemory(newParent, itemCase.getStringId()); casesToSave.add(newParent); - } else { + } else if (newParent == null) { itemCase.getDataField(MenuItemConstants.FIELD_PARENT_ID).setValue(null); }