package org.argeo.cms.internal.http;
+import java.util.Locale;
+
import javax.security.auth.Subject;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
-import org.argeo.cms.auth.CmsSession;
import org.argeo.cms.internal.auth.CmsSessionImpl;
import org.osgi.service.useradmin.Authorization;
+/** CMS session implementation in a web context. */
public class WebCmsSessionImpl extends CmsSessionImpl {
+ // private final static Log log =
+ // LogFactory.getLog(WebCmsSessionImpl.class);
+
+ private HttpSession httpSession;
+
+ public WebCmsSessionImpl(Subject initialSubject, Authorization authorization, Locale locale,
+ HttpServletRequest request) {
+ super(initialSubject, authorization, locale, request.getSession(false).getId());
+ httpSession = request.getSession(false);
+ }
- public WebCmsSessionImpl(Subject initialSubject, Authorization authorization, String httpSessionId) {
- super(initialSubject, authorization, httpSessionId);
+ @Override
+ public boolean isValid() {
+ if (isClosed())
+ return false;
+ try {// test http session
+ httpSession.getCreationTime();
+ return true;
+ } catch (IllegalStateException ise) {
+ return false;
+ }
}
- public static CmsSession getCmsSession(HttpServletRequest request) {
- CmsSession cmsSession = (CmsSession) request.getAttribute(CmsSession.class.getName());
- if (cmsSession != null)
- return cmsSession;
- return CmsSessionImpl.getByLocalId(request.getSession().getId());
+ public static CmsSessionImpl getCmsSession(HttpServletRequest request) {
+ return CmsSessionImpl.getByLocalId(request.getSession(false).getId());
}
}