From 87eebbfb6e2ba9d31fa0266e804bcdbeeb17666c Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 13 Dec 2017 10:36:44 +0100 Subject: [PATCH] OO-3204: make sure the invitation to delete is not detached from hibernate session --- .../org/olat/portfolio/manager/InvitationDAO.java | 12 +++++++----- .../olat/portfolio/manager/InvitationDAOTest.java | 3 +-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/olat/portfolio/manager/InvitationDAO.java b/src/main/java/org/olat/portfolio/manager/InvitationDAO.java index e29e750efe2..cfba3cf6a7a 100644 --- a/src/main/java/org/olat/portfolio/manager/InvitationDAO.java +++ b/src/main/java/org/olat/portfolio/manager/InvitationDAO.java @@ -303,7 +303,7 @@ public class InvitationDAO { cal.add(Calendar.HOUR, -6); Date dateLimit = cal.getTime(); - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(512); sb.append("select invitation from ").append(InvitationImpl.class.getName()).append(" as invitation ") .append(" inner join invitation.baseGroup baseGroup ") .append(" where invitation.creationDate<:dateLimit")//someone can create an invitation but not add it to a policy within millisecond @@ -331,15 +331,17 @@ public class InvitationDAO { //normally only one identity for(Identity identity:identities) { if(identity.getStatus().compareTo(Identity.STATUS_VISIBLE_LIMIT) >= 0) { - //already deleted + //already deleted } else if(securityManager.isIdentityInSecurityGroup(identity, olatUserSecGroup)) { - //out of scope + //out of scope } else { - //delete user + //delete user UserDeletionManager.getInstance().deleteIdentity(identity); } } - dbInstance.getCurrentEntityManager().remove(invitation); + Invitation invitationRef = dbInstance.getCurrentEntityManager() + .getReference(InvitationImpl.class, invitation.getKey()); + dbInstance.getCurrentEntityManager().remove(invitationRef); dbInstance.commit(); } } diff --git a/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java b/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java index ce0dd0e13fc..3a351d06a32 100644 --- a/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java +++ b/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java @@ -213,12 +213,11 @@ public class InvitationDAOTest extends OlatTestCase { //clean the invitations invitationDao.cleanUpInvitations(); + dbInstance.commitAndCloseSession(); //check that the invitation not was not deleted boolean afterVisible = epFrontendManager.isMapVisible(invitee, map.getOlatResource()); Assert.assertTrue(afterVisible); } - - } -- GitLab