From 53bcb0dcfd8c5afe81336b5a2e5243aae8f02106 Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <code@dgerhardt.net>
Date: Wed, 21 Dec 2016 15:56:22 +0100
Subject: [PATCH] Move deletion of session related data to DAO method

---
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java             | 2 +-
 src/main/java/de/thm/arsnova/dao/IDatabaseDao.java           | 5 +++++
 src/main/java/de/thm/arsnova/services/SessionService.java    | 1 -
 .../java/de/thm/arsnova/services/SessionServiceTest.java     | 1 -
 4 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index c18e0313..1996ea4e 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 a7372b08..4b49f134 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 8ac0aa34..a1555145 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 8a3bb77f..87a3f5da 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);
-- 
GitLab