From 2c5aa22368371b0a7eeb4f1f81b85c0f81b50993 Mon Sep 17 00:00:00 2001
From: Christoph Thelen <christoph.thelen@mni.thm.de>
Date: Mon, 18 May 2015 12:12:39 +0200
Subject: [PATCH] Fix caching: Annotations on CouchDBDao were not working

At least caching of learning progress responses
did not work since commit a59eb75 on March, 6th.

While the exact origin of this problem is unclear,
it seemed like Spring was creating more than one
databaseDao bean. One of these beans had no
working caching annotations.
---
 .../de/thm/arsnova/{dao => cache}/CacheBustListener.java   | 7 ++++++-
 .../java/de/thm/arsnova/{dao => cache}/CacheBuster.java    | 2 +-
 .../java/de/thm/arsnova/{dao => cache}/ICacheBuster.java   | 2 +-
 src/main/java/de/thm/arsnova/cache/package-info.java       | 4 ++++
 src/main/webapp/WEB-INF/spring/spring-main.xml             | 2 +-
 5 files changed, 13 insertions(+), 4 deletions(-)
 rename src/main/java/de/thm/arsnova/{dao => cache}/CacheBustListener.java (88%)
 rename src/main/java/de/thm/arsnova/{dao => cache}/CacheBuster.java (99%)
 rename src/main/java/de/thm/arsnova/{dao => cache}/ICacheBuster.java (96%)
 create mode 100644 src/main/java/de/thm/arsnova/cache/package-info.java

diff --git a/src/main/java/de/thm/arsnova/dao/CacheBustListener.java b/src/main/java/de/thm/arsnova/cache/CacheBustListener.java
similarity index 88%
rename from src/main/java/de/thm/arsnova/dao/CacheBustListener.java
rename to src/main/java/de/thm/arsnova/cache/CacheBustListener.java
index cde9852b3..68520b619 100644
--- a/src/main/java/de/thm/arsnova/dao/CacheBustListener.java
+++ b/src/main/java/de/thm/arsnova/cache/CacheBustListener.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.dao;
+package de.thm.arsnova.cache;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
@@ -24,6 +24,11 @@ import org.springframework.stereotype.Component;
 import de.thm.arsnova.events.NovaEvent;
 import de.thm.arsnova.events.NovaEventVisitor;
 
+/**
+ * Listener registration for the cache buster.
+ *
+ * Note that this class is necessary in order for the annotations to work.
+ */
 @Component
 public class CacheBustListener implements ApplicationListener<NovaEvent> {
 
diff --git a/src/main/java/de/thm/arsnova/dao/CacheBuster.java b/src/main/java/de/thm/arsnova/cache/CacheBuster.java
similarity index 99%
rename from src/main/java/de/thm/arsnova/dao/CacheBuster.java
rename to src/main/java/de/thm/arsnova/cache/CacheBuster.java
index f767ca217..00c9ab4a5 100644
--- a/src/main/java/de/thm/arsnova/dao/CacheBuster.java
+++ b/src/main/java/de/thm/arsnova/cache/CacheBuster.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.dao;
+package de.thm.arsnova.cache;
 
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Component;
diff --git a/src/main/java/de/thm/arsnova/dao/ICacheBuster.java b/src/main/java/de/thm/arsnova/cache/ICacheBuster.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/dao/ICacheBuster.java
rename to src/main/java/de/thm/arsnova/cache/ICacheBuster.java
index f173d2b48..9800991cf 100644
--- a/src/main/java/de/thm/arsnova/dao/ICacheBuster.java
+++ b/src/main/java/de/thm/arsnova/cache/ICacheBuster.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.dao;
+package de.thm.arsnova.cache;
 
 /**
  * This interface is used as a tag to make Spring dependency injection happy...
diff --git a/src/main/java/de/thm/arsnova/cache/package-info.java b/src/main/java/de/thm/arsnova/cache/package-info.java
new file mode 100644
index 000000000..4bf087927
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/cache/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Classes and interfaces related to caching
+ */
+package de.thm.arsnova.cache;
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/spring/spring-main.xml b/src/main/webapp/WEB-INF/spring/spring-main.xml
index a1c452605..72c2beb31 100644
--- a/src/main/webapp/WEB-INF/spring/spring-main.xml
+++ b/src/main/webapp/WEB-INF/spring/spring-main.xml
@@ -23,7 +23,7 @@
 		<property name="fileEncoding" value="UTF-8" />
 	</bean>
 
-	<context:component-scan base-package="de.thm.arsnova.dao,de.thm.arsnova.events,de.thm.arsnova.security,de.thm.arsnova.services,de.thm.arsnova.config,de.thm.arsnova.domain" />
+	<context:component-scan base-package="de.thm.arsnova.dao,de.thm.arsnova.cache,de.thm.arsnova.events,de.thm.arsnova.security,de.thm.arsnova.services,de.thm.arsnova.config,de.thm.arsnova.domain" />
 
 	<context:annotation-config />
 
-- 
GitLab