Author: ivaynberg Date: Fri Mar 12 17:17:40 2010 New Revision: 922356 URL: http://svn.apache.org/viewvc?rev=922356&view=rev Log: WICKET-2778 Set Application ThreadLocal in WicketSessionFilter Issue: WICKET-2778
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/WicketSessionFilter.java Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/WicketSessionFilter.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/WicketSessionFilter.java?rev=922356&r1=922355&r2=922356&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/WicketSessionFilter.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/WicketSessionFilter.java Fri Mar 12 17:17:40 2010 @@ -147,11 +147,13 @@ public class WicketSessionFilter impleme { HttpServletRequest httpServletRequest = ((HttpServletRequest)request); HttpSession httpSession = httpServletRequest.getSession(false); + WebApplication application = null; + Session session = null; if (httpSession != null) { if (sessionKey == null) { - WebApplication application = (WebApplication)Application.get(filterName); + application = (WebApplication)Application.get(filterName); if (application == null) { throw new IllegalStateException( @@ -160,34 +162,14 @@ public class WicketSessionFilter impleme ". Make sure you set filterName attribute to the name of the wicket filter " + "for the wicket application whose session you want to access."); } + sessionKey = application.getSessionAttributePrefix(null, filterName) + Session.SESSION_ATTRIBUTE_NAME; log.debug("will use {} as the session key to get the Wicket session", sessionKey); } - Session session = (Session)httpSession.getAttribute(sessionKey); - if (session != null) - { - // set the session's threadlocal - ThreadContext.setSession(session); - - if (log.isDebugEnabled()) - { - log.debug("session " + session + " set as current for " + - httpServletRequest.getContextPath() + "," + - httpServletRequest.getServerName()); - } - } - else - { - if (log.isDebugEnabled()) - { - log.debug("could not set Wicket session: key " + sessionKey + - " not found in http session for " + httpServletRequest.getContextPath() + - "," + httpServletRequest.getServerName()); - } - } + session = (Session)httpSession.getAttribute(sessionKey); } else { @@ -195,14 +177,38 @@ public class WicketSessionFilter impleme httpServletRequest.getContextPath(), httpServletRequest.getServerName()); } - try + if (session == null) { + // no session found + + if (log.isDebugEnabled()) + { + log.debug("could not set Wicket session: key " + sessionKey + + " not found in http session for " + httpServletRequest.getContextPath() + "," + + httpServletRequest.getServerName()); + } + // go on with processing chain.doFilter(request, response); } - finally + else { - ThreadContext.detach(); + // session found + + try + { + ThreadContext.setApplication(application); + ThreadContext.setSession(session); + log.debug("session " + session + " set as current for " + + httpServletRequest.getContextPath() + "," + httpServletRequest.getServerName()); + + // go on with processing + chain.doFilter(request, response); + } + finally + { + ThreadContext.detach(); + } } }