X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=jcr%2Forg.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Finternal%2Fservlet%2FCmsSessionProvider.java;h=4e067eea25a01653e1e7a0fbb318687628497091;hb=600afe220ae3bad9b2904f7a6d5529168e5c0f1b;hp=0f27fd005dca58aa2f17eea8d95ed59f40702159;hpb=ae3786244404433f609a71669eaf878a825717b9;p=lgpl%2Fargeo-commons.git diff --git a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsSessionProvider.java b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsSessionProvider.java index 0f27fd005..4e067eea2 100644 --- a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsSessionProvider.java +++ b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsSessionProvider.java @@ -17,9 +17,11 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.apache.jackrabbit.server.SessionProvider; -import org.argeo.api.cms.CmsSession; -import org.argeo.api.cms.CmsLog; import org.argeo.api.cms.CmsConstants; +import org.argeo.api.cms.CmsLog; +import org.argeo.api.cms.CmsSession; +import org.argeo.cms.auth.RemoteAuthUtils; +import org.argeo.cms.servlet.ServletHttpRequest; import org.argeo.jcr.JcrUtils; /** @@ -46,9 +48,8 @@ public class CmsSessionProvider implements SessionProvider, Serializable { // if (workspace == null) // return null; -// CmsSessionImpl cmsSession = WebCmsSessionImpl.getCmsSession(request); - // FIXME retrieve CMS session - CmsSession cmsSession = null; + CmsSession cmsSession = RemoteAuthUtils.getCmsSession(new ServletHttpRequest(request)); + // CmsSessionImpl cmsSession = WebCmsSessionImpl.getCmsSession(request); if (log.isTraceEnabled()) { log.trace("Get JCR session from " + cmsSession); } @@ -80,6 +81,7 @@ public class CmsSessionProvider implements SessionProvider, Serializable { private CmsDataSession(CmsSession cmsSession) { this.cmsSession = cmsSession; + cmsSession.addOnCloseCallback((sess) -> close()); } public Session newDataSession(String cn, String workspace, Repository repository) { @@ -160,8 +162,7 @@ public class CmsSessionProvider implements SessionProvider, Serializable { "CMS session " + cmsSession.getUuid() + " is not valid since " + cmsSession.getEnd()); } - private void close() { - // FIXME class this when CMS session is closed + protected void close() { synchronized (this) { // TODO check data session in use ? for (String path : dataSessions.keySet())