X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jackrabbit%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjackrabbit%2Fwebdav%2FCachingSessionProvider.java;h=a8771ae68634918ffe24aeb6888811270e8c480a;hb=24652d1f8e6e8293ebae76121f0369a262ba503a;hp=ad301871d9070e5e791a7ad2d74b9910552f52b7;hpb=fea161ce3d77b81ae6ee0a7895f7bd64b4cb618e;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/CachingSessionProvider.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/CachingSessionProvider.java index ad301871d..a8771ae68 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/CachingSessionProvider.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/CachingSessionProvider.java @@ -4,6 +4,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import javax.jcr.Credentials; import javax.jcr.LoginException; import javax.jcr.Repository; import javax.jcr.RepositoryException; @@ -22,6 +23,15 @@ public class CachingSessionProvider implements SessionProvider { private final static Log log = LogFactory .getLog(CachingSessionProvider.class); + private Credentials credentials = null; + + public CachingSessionProvider() { + } + + public CachingSessionProvider(Credentials credentials) { + this.credentials = credentials; + } + @SuppressWarnings("unchecked") public Session getSession(HttpServletRequest request, Repository rep, String workspace) throws LoginException, ServletException, @@ -36,13 +46,15 @@ public class CachingSessionProvider implements SessionProvider { Map sessions = (Map) httpSession .getAttribute(JCR_SESSIONS_ATTRIBUTE); if (!sessions.containsKey(workspace)) { - Session session = rep.login(workspace); + Session session = rep.login(credentials, workspace); sessions.put(workspace, session); return session; } else { Session session = sessions.get(workspace); if (!session.isLive()) { - session = rep.login(workspace); + sessions.remove(workspace); + session = rep.login(credentials, workspace); + sessions.put(workspace, session); } return session; } @@ -51,7 +63,8 @@ public class CachingSessionProvider implements SessionProvider { public void releaseSession(Session session) { if (log.isDebugEnabled()) log.debug("Releasing JCR session " + session); - session.logout(); + // session.logout(); + // FIXME: find a way to log out when the HTTP session is expired } }