package org.argeo.cms.internal.http;
import java.io.Serializable;
+import java.util.LinkedHashMap;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
private final String alias;
-// private LinkedHashMap<Session, CmsSessionImpl> cmsSessions = new LinkedHashMap<>();
+ private LinkedHashMap<Session, CmsSessionImpl> cmsSessions = new LinkedHashMap<>();
public CmsSessionProvider(String alias) {
this.alias = alias;
throws javax.jcr.LoginException, ServletException, RepositoryException {
// a client is scanning parent URLs.
- if (workspace == null)
- return null;
+// if (workspace == null)
+// return null;
CmsSessionImpl cmsSession = WebCmsSessionImpl.getCmsSession(request);
if (log.isTraceEnabled()) {
log.trace("Get JCR session from " + cmsSession);
}
- Session session = cmsSession.newDataSession(alias, workspace, rep);
-// cmsSessions.put(session, cmsSession);
+ if (cmsSession == null)
+ throw new IllegalStateException("Cannot find a session for request " + request.getRequestURI());
+ Session session = cmsSession.getDataSession(alias, workspace, rep);
+ cmsSessions.put(session, cmsSession);
return session;
}
public void releaseSession(Session session) {
- JcrUtils.logoutQuietly(session);
-// if (cmsSessions.containsKey(session)) {
-// CmsSessionImpl cmsSession = cmsSessions.get(session);
-// cmsSession.releaseDataSession(alias, session);
-// } else {
-// log.warn("JCR session " + session + " not found in CMS session list. Logging it out...");
-// JcrUtils.logoutQuietly(session);
-// }
+// JcrUtils.logoutQuietly(session);
+ if (cmsSessions.containsKey(session)) {
+ CmsSessionImpl cmsSession = cmsSessions.get(session);
+ cmsSession.releaseDataSession(alias, session);
+ } else {
+ log.warn("JCR session " + session + " not found in CMS session list. Logging it out...");
+ JcrUtils.logoutQuietly(session);
+ }
}
}