Updated Branches: refs/heads/sandbox/bookmarkable-callback-url fba8bddd9 -> 1ec0b8b36
WICKET-4932: testing if the page is bookmarkable before to encode the callback url for a component inside it Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1ec0b8b3 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1ec0b8b3 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1ec0b8b3 Branch: refs/heads/sandbox/bookmarkable-callback-url Commit: 1ec0b8b3637feb19da4f87b485e96bfc7ce4e992 Parents: fba8bdd Author: Pedro Santos <[email protected]> Authored: Wed Jan 9 20:58:40 2013 -0200 Committer: Pedro Santos <[email protected]> Committed: Wed Jan 9 20:58:40 2013 -0200 ---------------------------------------------------------------------- .../request/mapper/AbstractBookmarkableMapper.java | 2 +- .../mapper/AbstractBookmarkableMapperTest.java | 70 ++++++++++++++- .../request/mapper/BookmarkableMapperTest.java | 6 ++ .../wicket/request/mapper/PackageMapperTest.java | 6 ++ 4 files changed, 80 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/1ec0b8b3/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java index 47ac13a..7e164dd 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java @@ -333,7 +333,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper protected boolean checkPageClass(Class<? extends IRequestablePage> pageClass) { - return true; + return Application.get().getPageFactory().isBookmarkable(pageClass); } public Url mapHandler(IRequestHandler requestHandler) http://git-wip-us.apache.org/repos/asf/wicket/blob/1ec0b8b3/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java index 693adec..705f14c 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java @@ -17,13 +17,22 @@ package org.apache.wicket.request.mapper; * limitations under the License. */ +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.nullValue; + import org.apache.wicket.MockPage; import org.apache.wicket.WicketTestCase; +import org.apache.wicket.markup.html.link.ILinkListener; import org.apache.wicket.protocol.http.PageExpiredException; import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; +import org.apache.wicket.request.component.IRequestableComponent; +import org.apache.wicket.request.handler.BookmarkableListenerInterfaceRequestHandler; +import org.apache.wicket.request.handler.ListenerInterfaceRequestHandler; +import org.apache.wicket.request.handler.PageAndComponentProvider; import org.apache.wicket.request.mapper.info.PageInfo; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; /** @@ -34,7 +43,14 @@ public class AbstractBookmarkableMapperTest extends WicketTestCase private static final int NOT_RENDERED_COUNT = 2; private static final int EXPIRED_ID = 2; + private AbstractBookmarkableMapperStub mapper; + /** */ + @Before + public void initialize() + { + mapper = new AbstractBookmarkableMapperStub(); + } /** * <a href="https://issues.apache.org/jira/browse/WICKET-4932">WICKET-4932</a> @@ -43,12 +59,54 @@ public class AbstractBookmarkableMapperTest extends WicketTestCase public void itFailsToProcessAnExpiredPageIfShouldNotRecreateMountedPagesAfterExpiry() { tester.getApplication().getPageSettings().setRecreateMountedPagesAfterExpiry(false); - AbstractBookmarkableMapperStub mapper = new AbstractBookmarkableMapperStub(); mapper.processHybrid(new PageInfo(EXPIRED_ID), MockPage.class, null, NOT_RENDERED_COUNT); Assert.fail("it shouldn't process expired pages if the app was flagged to not recreated mounted pages after expiry"); } - /** only a stub since we are testing an abstract class */ + /** */ + @Test + public void itDoenstEndodesBookmarkableInfoForCallbacksInNonBookmarkablePages() + { + assertThat(mapper.mapHandler(anInterfaceHandlerFor(new NonBookmarkablePage(1))), + nullValue()); + assertThat(mapper.mapHandler(anInterfaceHandlerFor(new BookmarkablePage())), notNullValue()); + } + + private ListenerInterfaceRequestHandler anInterfaceHandlerFor(MockPage page) + { + IRequestableComponent component = page.get("bar:foo"); + return new ListenerInterfaceRequestHandler(new PageAndComponentProvider(page, component), + ILinkListener.INTERFACE); + } + + /** + * An non bookmarkable page since there's no default constructor + */ + public static class NonBookmarkablePage extends MockPage + { + /** */ + private static final long serialVersionUID = 1L; + + /** + * @param aMandatoryParameter + */ + public NonBookmarkablePage(int aMandatoryParameter) + { + } + } + + /** + * An bookmarkable page since there's a default constructor + */ + public static class BookmarkablePage extends MockPage + { + /** */ + private static final long serialVersionUID = 1L; + } + + /** + * only a stub since we are testing an abstract class + */ private static class AbstractBookmarkableMapperStub extends AbstractBookmarkableMapper { @@ -61,7 +119,7 @@ public class AbstractBookmarkableMapperTest extends WicketTestCase @Override protected Url buildUrl(UrlInfo info) { - return null; + return new Url(); } @Override @@ -76,6 +134,12 @@ public class AbstractBookmarkableMapperTest extends WicketTestCase return 0; } + @Override + protected Url mapBookmarkableHandler(BookmarkableListenerInterfaceRequestHandler handler) + { + return super.mapBookmarkableHandler(handler); + } + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/1ec0b8b3/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java index 628ae04..c3b013d 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java @@ -48,6 +48,12 @@ public class BookmarkableMapperTest extends AbstractMapperTest { return context; } + + @Override + protected boolean checkPageClass(java.lang.Class<? extends IRequestablePage> pageClass) + { + return true; + } }; private static final String PAGE_CLASS_NAME = MockPage.class.getName(); http://git-wip-us.apache.org/repos/asf/wicket/blob/1ec0b8b3/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java index fa8e6c8..67bff94 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java @@ -52,6 +52,12 @@ public class PackageMapperTest extends AbstractMapperTest { return context; } + + @Override + protected boolean checkPageClass(java.lang.Class<? extends IRequestablePage> pageClass) + { + return true; + } }; private static final String PAGE_CLASS_NAME = MockPage.class.getSimpleName();
