From b363dcdada70d4e12862f4e7b9bfd6bea7b12097 Mon Sep 17 00:00:00 2001 From: brianbrix Date: Sun, 17 May 2026 20:19:10 +0300 Subject: [PATCH 1/2] AMP-31110: issues in admin --- .../java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java | 2 ++ amp/src/main/webapp/WEB-INF/jsp/help/view/helpTopics.jsp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java b/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java index ce622f58b76..093419af59e 100644 --- a/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java +++ b/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java @@ -177,6 +177,7 @@ public static void deletePermissionMap(PermissionMap permissionMap, Session sess Iterator i = cp.getPermissions().iterator(); while (i.hasNext()) { Permission element = (Permission) i.next(); + i.remove(); Object object = session.load(Permission.class, element.getId()); session.delete(object); } @@ -194,6 +195,7 @@ public static void deleteCompositePermission(CompositePermission cp, Session ses Iterator i = cp.getPermissions().iterator(); while (i.hasNext()) { Permission element = (Permission) i.next(); + i.remove(); Object object = session.load(Permission.class, element.getId()); session.delete(object); } diff --git a/amp/src/main/webapp/WEB-INF/jsp/help/view/helpTopics.jsp b/amp/src/main/webapp/WEB-INF/jsp/help/view/helpTopics.jsp index 77ec86ee314..68d8fb8dc23 100644 --- a/amp/src/main/webapp/WEB-INF/jsp/help/view/helpTopics.jsp +++ b/amp/src/main/webapp/WEB-INF/jsp/help/view/helpTopics.jsp @@ -108,7 +108,7 @@ if (typeof DOMParser == "undefined") { var id = document.getElementById("treeboxbox_tree"); tree = new dhtmlXTreeObject(id,"100%","100%",0); - tree.setImagePath("../../jsp/help/view/images/csh_vista/"); + tree.setImagePath("<%=request.getContextPath()%>/resources/images/jsp/help/view/images/csh_vista/"); tree.enableTreeImages(false); tree.enableDragAndDrop(true); From 251e30396edbf09b3ecf51ddc43ad8634aacafb5 Mon Sep 17 00:00:00 2001 From: brianbrix Date: Sun, 17 May 2026 20:47:14 +0300 Subject: [PATCH 2/2] AMP-31110: issues in admin --- .../amp/permissionmanager/web/PMUtil.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java b/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java index 093419af59e..25783756bee 100644 --- a/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java +++ b/amp/src/main/java/org/dgfoundation/amp/permissionmanager/web/PMUtil.java @@ -174,10 +174,17 @@ public static void deletePermissionMap(PermissionMap permissionMap, Session sess //we delete the old permissions, if they are dedicated if (p!=null && p.isDedicated()) { CompositePermission cp = (CompositePermission)p; - Iterator i = cp.getPermissions().iterator(); - while (i.hasNext()) { - Permission element = (Permission) i.next(); - i.remove(); + List toDelete = new ArrayList<>(cp.getPermissions()); + cp.getPermissions().clear(); + for (Permission element : toDelete) { + // Remove from every CompositePermission that references this element so + // Hibernate does not attempt to re-save a deleted object via cascade on flush + Iterator linkedIt = element.getCompositeLinkedPermissions().iterator(); + while (linkedIt.hasNext()) { + CompositePermission linkedCp = linkedIt.next(); + linkedCp.getPermissions().remove(element); + linkedIt.remove(); + } Object object = session.load(Permission.class, element.getId()); session.delete(object); } @@ -190,12 +197,17 @@ public static void deletePermissionMap(PermissionMap permissionMap, Session sess public static void deleteCompositePermission(CompositePermission cp, Session session, boolean delCompositePermission) { - // TODO Auto-generated method stub -//session.flush(); - Iterator i = cp.getPermissions().iterator(); - while (i.hasNext()) { - Permission element = (Permission) i.next(); - i.remove(); + List toDelete = new ArrayList<>(cp.getPermissions()); + cp.getPermissions().clear(); + for (Permission element : toDelete) { + // Remove from every CompositePermission that references this element so + // Hibernate does not attempt to re-save a deleted object via cascade on flush + Iterator linkedIt = element.getCompositeLinkedPermissions().iterator(); + while (linkedIt.hasNext()) { + CompositePermission linkedCp = linkedIt.next(); + linkedCp.getPermissions().remove(element); + linkedIt.remove(); + } Object object = session.load(Permission.class, element.getId()); session.delete(object); }