httpInvokerServiceClients.xml : set 'CdmServiceRequestExecutor' class as default...
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / taxeditor / remoting / cache / CdmTransientEntityCacher.java
index 7eea5c11a05a799fca3b2354c72cb881d5757812..4c80ad7942e35d9fb135c1047f9b39daa485335d 100644 (file)
@@ -13,7 +13,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
 
 import net.sf.ehcache.Cache;
 import net.sf.ehcache.Element;
@@ -63,19 +62,18 @@ public class CdmTransientEntityCacher implements ICdmCacher {
         this.cacheId = cacheId;
 
         cache = new Cache(getEntityCacheConfiguration(cacheId));
-        CdmRemoteCacheManager.getInstance().getDefaultCacheManager().addCache(cache);
-
 
         this.cdmEntitySessionManager = cdmEntitySessionManager;
-        CdmBase fromCache = cdmServiceCacher.getFromCache(UUID.fromString("462a7819-8b00-4190-8313-88b5be81fad5"));
-
-        cacheLoader = new CacheLoader(this, cdmServiceCacher);
 
+        cacheLoader = new CacheLoader(this);
+    }
 
+    public CdmTransientEntityCacher(Object sessionOwner, ICdmEntitySessionManager cdmEntitySessionManager) {
+        this(generateCacheId(sessionOwner), cdmEntitySessionManager);
     }
 
-    public CdmTransientEntityCacher(Object obj, ICdmEntitySessionManager cdmEntitySessionManager) {
-        this(obj.getClass().getName() +  String.valueOf(obj.hashCode()), cdmEntitySessionManager);
+    public static String generateCacheId(Object sessionOwner) {
+        return sessionOwner.getClass().getName() +  String.valueOf(sessionOwner.hashCode());
     }
 
     /**
@@ -146,7 +144,14 @@ public class CdmTransientEntityCacher implements ICdmCacher {
             return;
         }
         CdmEntityCacheKey id = new CdmEntityCacheKey(cdmEntity);
-        getCache().put(new Element(id, cdmEntity));
+
+        cachedCdmEntity = getFromCache(id);
+        if(cachedCdmEntity == null) {
+            getCache().put(new Element(id, cdmEntity));
+            logger.info(" - object of type " + cdmEntity.getClass().getName() + " with id " + cdmEntity.getId() + " put in cache");
+            return;
+        }
+        logger.info(" - object of type " + cdmEntity.getClass().getName() + " with id " + cdmEntity.getId() + " already exists");
     }
 
 
@@ -179,7 +184,7 @@ public class CdmTransientEntityCacher implements ICdmCacher {
 
         if(cachedCdmEntity == null) {
             // ... then try the permanent cache
-            cachedCdmEntity = cdmServiceCacher.getFromCache(cdmBase);
+            cachedCdmEntity = cdmServiceCacher.getFromCache(cdmBase.getUuid());
         }
 
         return cachedCdmEntity;
@@ -214,7 +219,7 @@ public class CdmTransientEntityCacher implements ICdmCacher {
 
     public void dispose() {
         cache.dispose();
-        CdmRemoteCacheManager.getInstance().getDefaultCacheManager().removeCache(cacheId);
+
     }