Author: mgrigorov
Date: Tue May 10 07:09:37 2011
New Revision: 1101345
URL: http://svn.apache.org/viewvc?rev=1101345&view=rev
Log:
WICKET-3690 Session is invalidated more than once because
Session.sessionInvalidated is not reset
Moved the invocation of Session#detach() after the RequestCycleListener's
#onDetach(). This way there is no need of RCL for the session detaching and it
is executed always after the other listeners.
This way it looks like in 1.4 - there Session#detach() is called at the last
step of RequestCycle#detach() - #threadDetach().
Unit tests pass.
Authentication and authorization examples work as expected.
Our application also works as expected even without null-ifying the
'sessionInvalidated' flag.
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Session.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Session.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Session.java?rev=1101345&r1=1101344&r2=1101345&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Session.java
(original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Session.java Tue
May 10 07:09:37 2011
@@ -33,7 +33,6 @@ import org.apache.wicket.feedback.Feedba
import org.apache.wicket.page.IPageManager;
import org.apache.wicket.request.ClientInfo;
import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.session.ISessionStore;
import org.apache.wicket.util.lang.Objects;
@@ -458,18 +457,6 @@ public abstract class Session implements
*/
public void invalidate()
{
- if (sessionInvalidated == false)
- {
- RequestCycle.get().getListeners().add(new
AbstractRequestCycleListener()
- {
- @Override
- public void onDetach(final RequestCycle cycle)
- {
- detach();
- }
- });
- }
-
sessionInvalidated = true;
}
@@ -633,7 +620,6 @@ public abstract class Session implements
if (sessionInvalidated)
{
invalidateNow();
- sessionInvalidated = false;
}
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java?rev=1101345&r1=1101344&r2=1101345&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
Tue May 10 07:09:37 2011
@@ -513,8 +513,6 @@ public class RequestCycle implements IRe
*/
public void onDetach()
{
-
-
if (cleanupFeedbackMessagesOnDetach)
{
if (Session.exists())
@@ -523,11 +521,6 @@ public class RequestCycle implements IRe
}
}
- if (Session.exists())
- {
- Session.get().detach();
- }
-
try
{
onEndRequest();
@@ -546,6 +539,12 @@ public class RequestCycle implements IRe
{
listeners.onDetach(this);
}
+
+ if (Session.exists())
+ {
+ Session.get().detach();
+ }
+
}
/**