fix #2939 removing EhCacheConfig from application contexts and configuring the CacheM...
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / cdm / api / cache / CdmServiceCacher.java
index 7fc37b176a232e32c9f88c2da44bd11ca1e002a8..88f0aab8867089bbf7b82e43fcbd8005810078aa 100644 (file)
@@ -1,10 +1,13 @@
 package eu.etaxonomy.cdm.api.cache;
 
+import java.io.File;
 import java.util.UUID;
 
 import org.springframework.stereotype.Component;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.config.EhCacheConfiguration;
+import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.TermBase;
@@ -17,6 +20,7 @@ import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManagerObserver;
 import net.sf.ehcache.config.CacheConfiguration;
+import net.sf.ehcache.config.DiskStoreConfiguration;
 import net.sf.ehcache.config.SizeOfPolicyConfiguration;
 
 /**
@@ -30,11 +34,10 @@ import net.sf.ehcache.config.SizeOfPolicyConfiguration;
  *
  * @param <T>
  */
-@Component
+@Component //FIXME This indicates that the CdmServiceCacher is initialized as Spring Component but it seems only to be instantiated directly
 public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionManagerObserver {
 
 
-
     private ICdmEntitySessionManager cdmEntitySessionManager;
 
     private CdmTransientEntityCacher cdmTransientEntityCacher;
@@ -43,11 +46,35 @@ public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionMana
 
     @Override
     protected void setup() {
+
+        setUpCacheManager();
+
         DefinedTermBase.setCacher(this);
         CdmTransientEntityCacher.setDefaultCacher(this);
         TermServiceRequestExecutor.setDefaultCacher(this);
 
         cacheLoader = new CacheLoader(this);
+
+    }
+
+
+    /**
+     *
+     */
+    private void setUpCacheManager() {
+
+        EhCacheConfiguration cacheConfig = new EhCacheConfiguration();
+
+        DiskStoreConfiguration diskStoreConfiguration = new DiskStoreConfiguration();
+        File ehcacheFolder = CdmUtils.getCdmSubDir("taxeditor-ehcache");
+        // FIXME use subfolder per taxeditor version to allow running multiple installations in parallel
+        // String taxEditorVersion = ..;
+        // File ehcacheFolder = new File(ehcacheFolder, taxEditorVersion);
+        diskStoreConfiguration.setPath(ehcacheFolder.getAbsolutePath());
+
+        cacheConfig.setDiskStoreConfiguration(diskStoreConfiguration);
+        addCacheManager(cacheConfig.cacheManager());
+
     }