1 package org
.argeo
.cms
.internal
.http
;
3 import java
.io
.Serializable
;
5 import javax
.jcr
.Repository
;
6 import javax
.jcr
.RepositoryException
;
7 import javax
.jcr
.Session
;
8 import javax
.servlet
.ServletException
;
9 import javax
.servlet
.http
.HttpServletRequest
;
11 import org
.apache
.commons
.logging
.Log
;
12 import org
.apache
.commons
.logging
.LogFactory
;
13 import org
.apache
.jackrabbit
.server
.SessionProvider
;
14 import org
.argeo
.cms
.internal
.auth
.CmsSessionImpl
;
15 import org
.argeo
.jcr
.JcrUtils
;
18 * Implements an open session in view patter: a new JCR session is created for
21 public class CmsSessionProvider
implements SessionProvider
, Serializable
{
22 private static final long serialVersionUID
= -1358136599534938466L;
24 private final static Log log
= LogFactory
.getLog(CmsSessionProvider
.class);
26 private final String alias
;
28 // private LinkedHashMap<Session, CmsSessionImpl> cmsSessions = new LinkedHashMap<>();
30 public CmsSessionProvider(String alias
) {
34 public Session
getSession(HttpServletRequest request
, Repository rep
, String workspace
)
35 throws javax
.jcr
.LoginException
, ServletException
, RepositoryException
{
37 // a client is scanning parent URLs.
38 if (workspace
== null)
41 CmsSessionImpl cmsSession
= WebCmsSessionImpl
.getCmsSession(request
);
42 if (log
.isTraceEnabled()) {
43 log
.trace("Get JCR session from " + cmsSession
);
45 Session session
= cmsSession
.newDataSession(alias
, workspace
, rep
);
46 // cmsSessions.put(session, cmsSession);
50 public void releaseSession(Session session
) {
51 JcrUtils
.logoutQuietly(session
);
52 // if (cmsSessions.containsKey(session)) {
53 // CmsSessionImpl cmsSession = cmsSessions.get(session);
54 // cmsSession.releaseDataSession(alias, session);
56 // log.warn("JCR session " + session + " not found in CMS session list. Logging it out...");
57 // JcrUtils.logoutQuietly(session);