import net.sf.ehcache.config.CacheConfiguration;
import net.sf.ehcache.config.SizeOfPolicyConfiguration;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.taxeditor.remoting.cache.CacheLoader;
@Component
public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionManagerObserver {
- @Autowired
- ITermService termService;
private ICdmEntitySessionManager cdmEntitySessionManager;
DefinedTermBase.setCacher(this);
CdmTransientEntityCacher.setDefaultCacher(this);
TermServiceRequestExecutor.setDefaultCacher(this);
+
cacheLoader = new CacheLoader(this);
}
@Override
protected CdmBase findByUuid(UUID uuid) {
- CdmBase term = termService.findWithoutFlush(uuid);
+ CdmBase term = CdmApplicationState.getCurrentAppConfig().getTermService().findWithoutFlush(uuid);
return load(term);
}
public CdmBase getFromCache(CdmBase cdmBase) {
CdmBase cachedCdmEntity = null;
// first we check in the active session cache if the
+ // entity has been loaded there
+ // FIXME:Remoting do we really need the cdmTransientEntityCacher
+ // here. Is it not guarenteed that all every entity which 'isCachable'
+ // by this cacher is cached only in this cacher ?
if(!isCachable(cdmBase) && cdmTransientEntityCacher != null) {
CdmEntityCacheKey key = CdmTransientEntityCacher.generateKey(cdmBase);
cachedCdmEntity = cdmTransientEntityCacher.getFromCache(key);
public CdmBase load(CdmBase cdmEntity) {
CdmBase cachedCdmEntity = getFromCache(cdmEntity.getUuid());
- if(isCachable(cdmEntity)) {
- cachedCdmEntity = cacheLoader.load(cdmEntity, true, false);
+ if(isCachable(cdmEntity) && cachedCdmEntity == null) {
+ cachedCdmEntity = cacheLoader.load(cdmEntity, false, true);
}
return cachedCdmEntity;
}