private final List<ICdmEntitySessionManagerObserver> sessionObservers = new ArrayList<ICdmEntitySessionManagerObserver>();
- private ICdmEntitySession activeSession;
+ //private ICdmEntitySession activeSession;
+
+ private final InheritableThreadLocal<ICdmEntitySession> tlActiveSession = new InheritableThreadLocal<ICdmEntitySession>();
private NullSession nullSession;
@Override
public ICdmEntitySession getActiveSession() {
- return activeSession;
+ return tlActiveSession.get();
}
+
private void setActiveSession(ICdmEntitySession activeSession) {
- this.activeSession = activeSession;
+ this. tlActiveSession.set(activeSession);
notifyObservers();
}
*/
@Override
public <T extends Object> T load(T obj, boolean update) {
- if(activeSession == null) {
+ if(tlActiveSession.get() == null) {
return obj;
} else {
- return activeSession.load(obj, update);
+ return tlActiveSession.get().load(obj, update);
}
}
@Override
public <T extends CdmBase> void update() {
- if(activeSession != null) {
- activeSession.update();
+ if(tlActiveSession.get() != null) {
+ tlActiveSession.get().update();
}
}
*/
@Override
public <T extends CdmBase> T load(T cdmBase, boolean update) {
- if(activeSession == null) {
+ if(tlActiveSession.get() == null) {
return cdmBase;
}
- return activeSession.load(cdmBase, update);
+ return tlActiveSession.get().load(cdmBase, update);
}
*/
@Override
public UpdateResult load(UpdateResult updateResult, boolean update) {
- if(activeSession == null) {
+ if(tlActiveSession.get() == null) {
return updateResult;
}
- return activeSession.load(updateResult, update);
+ return tlActiveSession.get().load(updateResult, update);
}
*/
@Override
public MergeResult load(MergeResult mergeResult, boolean update) {
- if(activeSession == null) {
+ if(tlActiveSession.get() == null) {
return mergeResult;
}
- return activeSession.load(mergeResult, update);
+ return tlActiveSession.get().load(mergeResult, update);
}
*/
@Override
public <T extends CdmBase> Collection<T> load(Collection<T> cdmBaseList, boolean update) {
- if(activeSession == null) {
+ if(tlActiveSession.get() == null) {
return cdmBaseList;
}
- return activeSession.load(cdmBaseList, update);
+ return tlActiveSession.get().load(cdmBaseList, update);
}
logger.info("No Session connected to owner, nothing to do");
return;
}
- if(session == activeSession) {
+ if(session == tlActiveSession.get()) {
setActiveSession(null);
}
ownerSessionMap.remove(owner);