Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x ac369b16e -> bc88aca39


WICKET-6288 using the page_id to check if the page was expired


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/bc88aca3
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/bc88aca3
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/bc88aca3

Branch: refs/heads/wicket-6.x
Commit: bc88aca39f514ea9b166d339a9f8821a6d480f4a
Parents: ac369b1
Author: Pedro Henrique Oliveira dos Santos <[email protected]>
Authored: Mon Nov 28 03:23:37 2016 -0200
Committer: Pedro Henrique Oliveira dos Santos <[email protected]>
Committed: Mon Nov 28 03:23:37 2016 -0200

----------------------------------------------------------------------
 .../ListenerInterfaceRequestHandler.java        |  2 +-
 .../ListenerInterfaceRequestHandlerTest.java    | 54 ++++++++++++++++++++
 2 files changed, 55 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/bc88aca3/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
index 360a55d..e97ed76 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
@@ -191,7 +191,7 @@ public class ListenerInterfaceRequestHandler
                                : RedirectPolicy.AUTO_REDIRECT;
                final IPageProvider pageProvider = new PageProvider(page);
 
-               if (freshPage && (isStateless == false || component == null))
+               if (freshPage && pageComponentProvider.getPageId() != null && 
(isStateless == false || component == null))
                {
                        // A listener interface is invoked on an expired page.
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/bc88aca3/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
index 30416c8..306d65e 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.core.request.handler;
 
+import static org.hamcrest.CoreMatchers.is;
+
 import java.io.IOException;
 import java.text.ParseException;
 
@@ -27,16 +29,25 @@ import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.WicketTestCase;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.core.request.mapper.MountedMapper;
+import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.Markup;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.form.IOnChangeListener;
 import org.apache.wicket.markup.html.link.ILinkListener;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.link.StatelessLink;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.Url;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.resource.DummyPage;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
 import org.apache.wicket.util.resource.StringResourceStream;
+import org.hamcrest.CoreMatchers;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 /**
  * Tests for {@link ListenerInterfaceRequestHandler}
@@ -154,4 +165,47 @@ public class ListenerInterfaceRequestHandlerTest extends 
WicketTestCase
                assertFalse("Handler should not report a page instance is 
available ",
                        handler.isPageInstanceCreated());
        }
+
+       @Test
+       public void skipListenerIfExpiredPage()
+       {
+               
tester.getApplication().getRootRequestMapperAsCompound().add(new 
MountedMapper("/segment", NotExpiredPage.class));
+               tester.startPage(NotExpiredPage.class);
+               tester.clickLink("statelessLink");
+               NotExpiredPage page = 
(NotExpiredPage)tester.getLastRenderedPage();
+               assertThat(page.invoked, is(true));
+       }
+
+       public static class NotExpiredPage extends WebPage
+       {
+               public boolean invoked;
+               public NotExpiredPage(PageParameters pageParameters)
+               {
+                       super(pageParameters);
+                       add(new StatelessLink<Object>("statelessLink")
+                       {
+                               public void onClick()
+                               {
+                                       invoked = true;
+                               }
+                       });
+                       add(new Link<Object>("statefullLink")
+                       {
+                               public void onClick()
+                               {
+                               }
+                       });
+               }
+               @Override
+               public IMarkupFragment getMarkup()
+               {
+                       return Markup.of("<html><body><a 
wicket:id=\"statelessLink\"></a><a 
wicket:id=\"statefullLink\"></a></body></html>");
+               }
+               @Override
+               protected void onBeforeRender()
+               {
+                       get("statefullLink").setVisible(false);
+                       super.onBeforeRender();
+               }
+       }
 }

Reply via email to