Hello,
Disclaimer: I am a relatively new Wicket user
I use a custom session to store the current user Id and I want to use
the request cycle to store the current user object which is fetched from
the DB on each request following advice from
http://wicket-users.markmail.org/search/?q=cart+thread+safe#query:cart%20thread%20safe+page:1+mid:m3kgdjxv2fmeebvt+state:results
and
http://wicket-users.markmail.org/search/?q=session+thread+safe#query:session%20thread%20safe+page:1+mid:oh4v4ivhubc3ao4s+state:results
To this end, I followed the instructions from
https://cwiki.apache.org/WICKET/migration-to-wicket-15.html#MigrationtoWicket1.5-RequestCycle
However, the method WebApplication#addRequestCycleListener() does not
exist. I searched for a replacement but only found
Application#getRequestCycleListeners() which gives access to the
listener list. Its Javadoc however states that the returned list is
unmodifiable so I avoided this route.
So instead I used Application#setRequestCycleProvider() to create my
CustomRequestCycle class. This class has the following method:
@Override
protected void onBeginRequest() {
super.onBeginRequest();
Long userId = (CustomSession)Session.get().getCurrentUserId();
if (userId != null)
// fetch user...
}
My problem is that I get a NullPointerException in Session#get(). When
first accessing a page, there is no session associated with the
TheadContext. So the following line is then executed in Session#get():
Application.get().fetchCreateAndSetSession(RequestCycle.get())
RequestCycle.get() returns null because ThreadContext.requestCycle has
not been set yet when onBeginRequest() is called.
I am doing something wrong? Is this a bug?
Thanks!
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]