Author: jdonnerstag
Date: Sun Jan 11 13:51:13 2009
New Revision: 733523
URL: http://svn.apache.org/viewvc?rev=733523&view=rev
Log:
fixed wicket-2013: Session doesn't get invalidated when using
RestartResponseException
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest$MyPage.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java?rev=733523&r1=733522&r2=733523&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java Sun
Jan 11 13:51:13 2009
@@ -1054,7 +1054,7 @@
*
* <p>
* Clean up the request cycle.
- * </p>
+ * </p>
*/
public void detach()
{
@@ -1378,6 +1378,13 @@
// stack
response.reset();
currentStep = RESPOND;
+
+ // wicket-2013: create a new session if
invalidated
+ if (getSession().isSessionInvalidated())
+ {
+ session = null;
+ Session.unset();
+ }
}
}
}
@@ -1412,6 +1419,8 @@
{
log.error("there was an error detaching the
session", re);
}
+
+ session = null;
}
if (isRedirect())
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java?rev=733523&r1=733522&r2=733523&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java Sun Jan 11
13:51:13 2009
@@ -400,7 +400,9 @@
// If there is no request cycle then this is not a normal
request but for example a last
// modified call.
if (RequestCycle.get() == null)
+ {
return;
+ }
ISessionStore store = getSessionStore();
Request request = RequestCycle.get().getRequest();
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest$MyPage.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest%24MyPage.html?rev=733523&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest$MyPage.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest$MyPage.html
Sun Jan 11 13:51:13 2009
@@ -0,0 +1,2 @@
+<html>
+</html>
\ No newline at end of file
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest.java?rev=733523&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/session/InvalidateSessionTest.java
Sun Jan 11 13:51:13 2009
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.session;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.Request;
+import org.apache.wicket.Response;
+import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.Session;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.WebSession;
+import org.apache.wicket.util.tester.WicketTester;
+
+/**
+ *
+ */
+public class InvalidateSessionTest extends TestCase
+{
+ /** */
+ public static class MyApp extends WebApplication
+ {
+ /**
+ * {...@inheritdoc}
+ */
+ @Override
+ public Class<? extends Page> getHomePage()
+ {
+ return MyPage.class;
+ }
+
+ /**
+ * {...@inheritdoc}
+ */
+ @Override
+ public Session newSession(Request request, Response response)
+ {
+ return new MySession(request);
+ }
+ }
+
+ /** */
+ public static class MySession extends WebSession
+ {
+ private static final long serialVersionUID = 1L;
+
+ private String name;
+
+ /**
+ * Construct.
+ *
+ * @param request
+ */
+ public MySession(Request request)
+ {
+ super(request);
+ }
+
+ public static MySession get()
+ {
+ return (MySession)Session.get();
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+ }
+
+ /**
+ *
+ */
+ public static class MyPage extends WebPage
+ {
+ /**
+ * Construct.
+ */
+ public MyPage()
+ {
+ boolean sessionInvalid =
Session.get().isSessionInvalidated();
+
+ MySession sess = MySession.get();
+ if (sess.getName() != null)
+ {
+ Session.get().invalidateNow();
+ throw new RestartResponseException(getClass());
+ // throw new AbortException();
+ }
+ }
+ }
+
+ /**
+ *
+ */
+ public void test_1()
+ {
+ WicketTester wicket = new WicketTester(new MyApp());
+ wicket.processRequestCycle();
+
+ MySession.get().setName("foo");
+ wicket.processRequestCycle();
+ }
+}