import org.springframework.transaction.PlatformTransactionManager;\r
import org.springframework.transaction.TransactionStatus;\r
\r
-import eu.etaxonomy.cdm.api.cache.ICachedCommonService;\r
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
import eu.etaxonomy.cdm.api.conversation.ConversationHolderMock;\r
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;\r
+import eu.etaxonomy.taxeditor.remoting.cache.ICachedCommonService;\r
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;\r
\r
\r
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.api.application.RemotingMonitoredGenericApplicationContext;
-import eu.etaxonomy.cdm.api.cache.CdmModelCacher;
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
import eu.etaxonomy.cdm.common.monitor.NullProgressMonitor;
import eu.etaxonomy.cdm.common.monitor.SubProgressMonitor;
+import eu.etaxonomy.taxeditor.remoting.cache.CdmModelCacher;
import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
import eu.etaxonomy.taxeditor.session.CdmEntitySessionManager;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
import java.util.Collection;
import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import eu.etaxonomy.cdm.api.cache.CdmTransientEntityCacher;
-import eu.etaxonomy.cdm.api.service.ICommonService;
-import eu.etaxonomy.cdm.api.service.IService;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
+import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
/**
public class CdmEntitySession<T extends CdmBase> implements ICdmEntitySession<T> {
-
+
private CdmEntitySessionManager cdmEntitySessionManager;
-
- private ISessionEventListener sessionOwner;
-
- private CdmTransientEntityCacher cdmTransientEntityCacher;
-
- private List<T> rootEntities;
-
+
+ private final ISessionEventListener sessionOwner;
+
+ private final CdmTransientEntityCacher cdmTransientEntityCacher;
+
+ private final List<T> rootEntities;
+
CdmEntitySession(ISessionEventListener sessionOwner, CdmEntitySessionManager cdmEntitySessionManager) {
this.sessionOwner = sessionOwner;
this.cdmTransientEntityCacher = new CdmTransientEntityCacher(sessionOwner, cdmEntitySessionManager);
this.rootEntities = new ArrayList<T>();
-
+
cdmEntitySessionManager.addToOwnerSessionMap(sessionOwner, this);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(T)
*/
@Override
- public <T extends Object> T load(T obj) {
- return (T) cdmTransientEntityCacher.load(obj,true);
+ public <T extends Object> T load(T obj) {
+ return cdmTransientEntityCacher.load(obj,true);
}
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(T)
*/
@Override
- public <T extends CdmBase> T load(T cdmBase) {
+ public <T extends CdmBase> T load(T cdmBase) {
return (T)cdmTransientEntityCacher.load(cdmBase,true);
}
*/
@Override
public <T extends CdmBase> Collection<T> load(Collection<T> cdmBaseList) {
-
+
return cdmTransientEntityCacher.load(cdmBaseList,true);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#setEntitiesAsLatest()
*/
@Override
public void setEntitiesAsLatest() {
- List<CdmBase> entities = cdmTransientEntityCacher.getAllEntities();
- for(CdmBase entity : entities) {
- cdmEntitySessionManager.setEntityAsLatest(entity);
- }
+ //FIXME:Remoting need to think more about whether we really need this
+// List<CdmBase> entities = cdmTransientEntityCacher.getAllEntities();
+// for(CdmBase entity : entities) {
+// cdmEntitySessionManager.setEntityAsLatest(entity);
+// }
}
-
-
+
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#dispose()
*/
rootEntities.clear();
cdmTransientEntityCacher.dispose();
}
-
-
+
+
}
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
-import eu.etaxonomy.cdm.api.cache.CdmTransientEntityCacher;
import eu.etaxonomy.cdm.model.common.CdmBase;
/**
* @date 16 Oct 2014
*
*/
-@Component("cdmEntitySessionManager")
+@Component
public class CdmEntitySessionManager implements ICdmEntitySessionManager {
private static final Logger logger = Logger.getLogger(CdmEntitySessionManager.class);
- private Map<ISessionEventListener, CdmEntitySession> ownerSessionMap =
+ private final Map<ISessionEventListener, CdmEntitySession> ownerSessionMap =
new HashMap<ISessionEventListener, CdmEntitySession>();
-
-// private HashMap<String, HashSet<CdmClientBase<T>>> entitiesMap =
-// new HashMap<String, HashSet<CdmClientBase<T>>>();
-
- private CdmTransientEntityCacher latestEntityCacher =
- new CdmTransientEntityCacher("latestEntityCacher", this);
-
+
+
private ICdmEntitySession activeSession;
-
-
+
+ public CdmEntitySessionManager() {
+
+ }
+
private ICdmEntitySession newSession(ISessionEventListener sessionOwner, boolean setAsActive) {
CdmEntitySession session = ownerSessionMap.get(sessionOwner);
- if(session == null) {
+ if(session == null) {
session = new CdmEntitySession(sessionOwner, this);
addToOwnerSessionMap(sessionOwner, session);
}
-
+
if(setAsActive) {
activeSession = session;
- }
+ }
return session;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#bind(eu.etaxonomy.taxeditor.session.ISessionEventListener)
*/
}
activeSession = session;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(eu.etaxonomy.taxeditor.session.ISessionEventListener, T)
*/
@Override
public <T extends Object> T load(ISessionEventListener sessionOwner, T obj) {
- ICdmEntitySession session = newSession(sessionOwner,true);
+ ICdmEntitySession session = newSession(sessionOwner,true);
return (T) session.load(obj);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(T)
*/
ICdmEntitySession session = newSession(sessionOwner,true);
return (T)session.load(cdmBase);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(T)
*/
}
return (T)activeSession.load(cdmBase);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(eu.etaxonomy.taxeditor.session.ISessionEventListener, java.util.Collection)
ICdmEntitySession session = newSession(sessionOwner,true);
return session.load(cdmBaseList);
}
-
-
+
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(java.util.Collection)
*/
return activeSession.load(cdmBaseList);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#dispose(eu.etaxonomy.taxeditor.session.ISessionEventListener)
*/
logger.info("No Session connected to owner, nothing to dispose");
return;
}
- session.dispose();
+ session.dispose();
}
-
+
void addToOwnerSessionMap(ISessionEventListener owner, CdmEntitySession session) {
ownerSessionMap.put(owner, session);
}
-
- void setEntityAsLatest(CdmBase cdmBase) {
- latestEntityCacher.put(cdmBase);
- }
-
- void promoteSessionEntitiesToLatest(ISessionEventListener owner) {
- ICdmEntitySession session = ownerSessionMap.get(owner);
- if(session != null) {
- session.setEntitiesAsLatest();
- }
- }
}
import java.util.Collection;
-import org.springframework.stereotype.Component;
-
-import eu.etaxonomy.cdm.api.service.IService;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
import eu.etaxonomy.taxeditor.session.ISessionEventListener;
@Override
- public void bind(ISessionEventListener sessionOwner) {
+ public void bind(ISessionEventListener sessionOwner) {
}
@Override
@Override
public void dispose(ISessionEventListener owner) {
-
+
}
}
import org.jboss.logging.Logger;
import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteConfiguration;
-import eu.etaxonomy.cdm.api.cache.CachedCommonServiceImpl.CollectionField;
-import eu.etaxonomy.cdm.api.cache.ICachedCommonService;
import eu.etaxonomy.taxeditor.remoting.CdmEagerLoadingException;
+import eu.etaxonomy.taxeditor.remoting.cache.ICachedCommonService;
+import eu.etaxonomy.taxeditor.remoting.cache.CachedCommonServiceImpl.CollectionField;
/**
* Base class implementing {@link org.hibernate.collection.spi.PersistentCollection}
import org.jboss.logging.Logger;
import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteConfiguration;
-import eu.etaxonomy.cdm.api.cache.ICachedCommonService;
import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.taxeditor.remoting.cache.ICachedCommonService;
/**
* Convenience base class for lazy initialization handlers. Centralizes the basic plumbing of doing lazy