X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fhttp%2FCmsSessionProvider.java;h=f21f72441c0c549f349bf98ef838b0452789ef28;hb=3779305ca2c08e66d9ba2061c76eb79e278860fb;hp=14f311f3796903721987b8c197f8cd4d3f0ca690;hpb=b6cad136dfd4589bc2a8f48ec9168732517f451b;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/http/CmsSessionProvider.java b/org.argeo.cms/src/org/argeo/cms/internal/http/CmsSessionProvider.java index 14f311f37..f21f72441 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/http/CmsSessionProvider.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/http/CmsSessionProvider.java @@ -1,6 +1,7 @@ package org.argeo.cms.internal.http; import java.io.Serializable; +import java.util.LinkedHashMap; import javax.jcr.Repository; import javax.jcr.RepositoryException; @@ -25,7 +26,7 @@ public class CmsSessionProvider implements SessionProvider, Serializable { private final String alias; -// private LinkedHashMap cmsSessions = new LinkedHashMap<>(); + private LinkedHashMap cmsSessions = new LinkedHashMap<>(); public CmsSessionProvider(String alias) { this.alias = alias; @@ -35,26 +36,28 @@ public class CmsSessionProvider implements SessionProvider, Serializable { 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); + } } }