From 0d87f944a614f4f2f9494fda55537a03fea54d9e Mon Sep 17 00:00:00 2001
From: Christoph Thelen <christoph.thelen@mni.thm.de>
Date: Fri, 6 Feb 2015 22:06:03 +0100
Subject: [PATCH] Cache single question objects

Note that due to the way it is currently implemented,
we have to clear the whole cache once a set of
questions published or unpublished in bulk.
---
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 00028f5b..781801e5 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -457,6 +457,7 @@ public class CouchDBDao implements IDatabaseDao {
 		return database;
 	}
 
+	@CachePut(value = "questions", key="#question")
 	@Override
 	public final Question saveQuestion(final Session session, final Question question) {
 		final Document q = toQuestionDocument(session, question);
@@ -514,6 +515,7 @@ public class CouchDBDao implements IDatabaseDao {
 		return q;
 	}
 
+	@CachePut(value = "questions")
 	@Override
 	public final Question updateQuestion(final Question question) {
 		try {
@@ -589,6 +591,7 @@ public class CouchDBDao implements IDatabaseDao {
 		return null;
 	}
 
+	@Cacheable("questions")
 	@Override
 	public final Question getQuestion(final String id) {
 		try {
@@ -698,6 +701,7 @@ public class CouchDBDao implements IDatabaseDao {
 		return collectQuestionIds(view);
 	}
 
+	@CacheEvict(value = "questions")
 	@Override
 	public final void deleteQuestionWithAnswers(final Question question) {
 		try {
@@ -1536,6 +1540,7 @@ public class CouchDBDao implements IDatabaseDao {
 		publishQuestions(session, publish, questions);
 	}
 
+	@CacheEvict(value = "questions", allEntries = true)
 	@Override
 	public void publishQuestions(final Session session, final boolean publish, List<Question> questions) {
 		for (final Question q : questions) {
-- 
GitLab