[ 
https://issues.apache.org/jira/browse/WICKET-2013?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Juergen Donnerstag resolved WICKET-2013.
----------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.4-RC2
         Assignee: Juergen Donnerstag

fixed

> Session doesn't get invalidated when using RestartResponseException.
> --------------------------------------------------------------------
>
>                 Key: WICKET-2013
>                 URL: https://issues.apache.org/jira/browse/WICKET-2013
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.4-RC1
>            Reporter: Maarten Billemont
>            Assignee: Juergen Donnerstag
>             Fix For: 1.4-RC2
>
>
> When invalidating a session using Session.get().invalidateNow(), I normally 
> want to stop processing the current request.  When I do this in a constructor 
> of a page which might be extended by another page, I don't want any other 
> code to get exected.  Not my own, not that of any possible pages extending my 
> page.
> To do this, I throw an AbortException or a RestartResponseException.  
> However, it seems the session isn't actually properly cleaned this way.
> The following code demonstrates the problem:
> {code:title=TinyTests.java}
> package test.spike;
> 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;
> import org.junit.Test;
> public class TinyTests {
>     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 {
>         public MySession(Request request) {
>             super(request);
>         }
>         public static MySession get() {
>             return (MySession) Session.get();
>         }
>         private static final long serialVersionUID = 1L;
>         private String            name;
>         public void setName(String name) {
>             this.name = name;
>         }
>         public String getName() {
>             return name;
>         }
>     }
>     public static class MyPage extends WebPage {
>         public MyPage() {
>             if (MySession.get().getName() != null) {
>                 Session.get().invalidateNow();
>                 throw new RestartResponseException(getClass());
>             }
>         }
>     }
>     @Test
>     public void wicketTest() {
>         WicketTester wicket = new WicketTester(new MyApp());
>         wicket.processRequestCycle();
>         MySession.get().setName("foo");
>         wicket.processRequestCycle();
>     }
> }
> {code}
> {code:title=TinyTests$MyPage.html}
> <html>
> </html>
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to