package org.openntf.domino.helpers;
import java.io.Serializable;
import org.openntf.domino.Session;
import org.openntf.domino.session.ISessionFactory;
public class SessionHolder implements Serializable {
private static final long serialVersionUID = 1L;
private transient ThreadLocal<Session> threadSession = new ThreadLocal<Session>();
private ISessionFactory factory_;
public SessionHolder(final Session delegate, final ISessionFactory sessionFactory) {
threadSession.set(delegate);
factory_ = sessionFactory;
}
public Session getSession() {
synchronized (this) {
if (threadSession == null) {
threadSession = new ThreadLocal<Session>();
}
}
Session ret = threadSession.get();
if (ret == null || ret.isDead()) {
ret = factory_.createSession();
threadSession.set(ret);
return ret;
} else {
return ret;
}
}
}