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(); + } + } }
