diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index c18e03133b4d470a17eabf0a4b491ff3f25c3aab..1996ea4e0684bec880008fc9b9b0437692d376bb 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1676,6 +1676,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware @Caching(evict = { @CacheEvict("sessions"), @CacheEvict(cacheNames="sessions", key="#p0.keyword") }) public void deleteSession(final Session session) { try { + deleteAllQuestionsWithAnswers(session); deleteDocument(session.get_id()); LOGGER.debug("Deleted session document {} and related data.", session.get_id()); } catch (final IOException e) { @@ -1693,7 +1694,6 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware Session s = new Session(); s.set_id(oldDoc.getId()); s.set_rev(oldDoc.getJSONObject("value").getString("_rev")); - deleteAllQuestionsWithAnswers(s); deleteSession(s); } diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index a7372b085f4883efca0df69ee15d3e4746994f00..4b49f1348ff065717d5c2877358e02ae1c2f8d65 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -144,6 +144,11 @@ public interface IDatabaseDao { Session changeSessionCreator(Session session, String newCreator); + /** + * Deletes a session and related data. + * + * @param session the session for deletion + */ void deleteSession(Session session); boolean deleteInactiveGuestSessions(long lastActivityBefore); diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 8ac0aa34702e610b509f910e7ea663e1c7f9dded..a155514505557b145b495f732099ec9788b90253 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -405,7 +405,6 @@ public class SessionService implements ISessionService, ApplicationEventPublishe prepSubjects.add(""); } - databaseDao.deleteAllQuestionsWithAnswers(session); databaseDao.deleteSession(session); this.publisher.publishEvent(new DeleteSessionEvent(this, session)); diff --git a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java index 8a3bb77f7a27e0259e4524466114a2fec2eff9c1..87a3f5da12938dbd6c6ac41beb6a376eed89f7c9 100644 --- a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java @@ -173,7 +173,6 @@ public class SessionServiceTest { sessionService.deleteSession(session.getKeyword()); - verify(mockDatabase).deleteAllQuestionsWithAnswers(session); verify(mockDatabase).deleteSession(session); } finally { ReflectionTestUtils.setField(getTargetObject(sessionService), "databaseDao", tempDatabase);