You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Sven Meier (JIRA)" <ji...@apache.org> on 2013/02/14 15:12:13 UTC
[jira] [Commented] (WICKET-5040) Session.exists() returns false
when ThreadContext#session is not set to current session
[ https://issues.apache.org/jira/browse/WICKET-5040?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13578390#comment-13578390 ]
Sven Meier commented on WICKET-5040:
------------------------------------
With commit:80adc54 RestartResponseAtInterceptPageException.InterceptData#get() checks for existence of a session with Session#exists() before calling Session#get():
if (Session.exists())
{
return Session.get().getMetaData(key);
}
return null;
This was changed so that RestartResponseAtInterceptPageException#MAPPER doesn't create a (temporary) session if not needed (e.g. when a resource is requested).
Note that Session#exists()'s javadoc is ambiguous about this detail:
/**
* Checks if the <code>Session</code> threadlocal is set in this thread
*
* @return true if {@link Session#get()} can return the instance of session, false otherwise
*/
public static boolean exists()
It claims to return true if #get() can return the session. If there's a current session but it is not set on the ThreadContext yet, #exists() will return false, but #get() will return the session from the session store.
> Session.exists() returns false when ThreadContext#session is not set to current session
> ---------------------------------------------------------------------------------------
>
> Key: WICKET-5040
> URL: https://issues.apache.org/jira/browse/WICKET-5040
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 6.5.0
> Reporter: Sven Meier
> Assignee: Sven Meier
>
> There are several places in Wicket which check for the existence of a Session before actually getting a reference to it, e.g. FeedbackCollector:
> public final List<FeedbackMessage> collect(final IFeedbackMessageFilter filter)
> {
> ...
> if (includeSession && Session.exists())
> {
> messages.addAll(Session.get().getFeedbackMessages().messages(filter));
> }
> }
> If no one has called Session#get(), all calls to Session#exists() return false although a session might exist in the session store, i.e. it might just not be set to ThreadContext#session already.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira