You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2013/01/10 19:19:29 UTC
git commit: WICKET-4932: asserting bookmarkable mapper doesn't encode
page's class name at callback urls for its components
Updated Branches:
refs/heads/sandbox/bookmarkable-callback-url f222fac11 -> c658316ce
WICKET-4932: asserting bookmarkable mapper doesn't encode page's class
name at callback urls for its components
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c658316c
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c658316c
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c658316c
Branch: refs/heads/sandbox/bookmarkable-callback-url
Commit: c658316ce5a70678ca5d79873d2930fb7b2e6ac7
Parents: f222fac
Author: Pedro Santos <pe...@apache.com>
Authored: Thu Jan 10 16:19:18 2013 -0200
Committer: Pedro Santos <pe...@apache.com>
Committed: Thu Jan 10 16:19:18 2013 -0200
----------------------------------------------------------------------
.../mapper/AbstractBookmarkableMapperTest.java | 7 -
.../request/mapper/BookmarkableMapperTest.java | 155 +++++++++------
2 files changed, 94 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/c658316c/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 5a63991..a4b9cb9 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
@@ -27,7 +27,6 @@ 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;
@@ -134,12 +133,6 @@ 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/c658316c/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 c3b013d..b53620a 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
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.request.mapper;
+import static org.hamcrest.CoreMatchers.nullValue;
+
import org.apache.wicket.MockPage;
import org.apache.wicket.markup.html.link.ILinkListener;
import org.apache.wicket.request.IRequestHandler;
@@ -32,6 +34,8 @@ import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.settings.IPageSettings;
+import org.apache.wicket.settings.def.PageSettings;
import org.junit.Test;
/**
@@ -40,21 +44,17 @@ import org.junit.Test;
public class BookmarkableMapperTest extends AbstractMapperTest
{
- private final BookmarkableMapper encoder = new BookmarkableMapper(new PageParametersEncoder(),
- settings)
- {
- @Override
- protected IMapperContext getContext()
- {
- return context;
- }
+ private static final String FIRST_INDEXED_PARAMETER = "i1";
+ private static final String SECOND_INDEXED_PARAMETER = "i2";
+
+ private static final String SECOND_PARAMETER_NAME = "b";
+ private static final String SECOND_NAMED_PARAMETER_VALUE = "c";
+
+ private static final String FIRST_PARAMETER_NAME = "a";
+ private static final String FIRST_NAMED_PARAMETER_VALUE = "b";
+
+ private final BookmarkableMapper encoder = new BookmarkableMapperStub(settings);
- @Override
- protected boolean checkPageClass(java.lang.Class<? extends IRequestablePage> pageClass)
- {
- return true;
- }
- };
private static final String PAGE_CLASS_NAME = MockPage.class.getName();
@@ -92,8 +92,8 @@ public class BookmarkableMapperTest extends AbstractMapperTest
assertEquals("indexed1", p.get(0).toString());
assertEquals(2, p.getNamedKeys().size());
- assertEquals("b", p.get("a").toString());
- assertEquals("c", p.get("b").toString());
+ assertEquals(FIRST_NAMED_PARAMETER_VALUE, p.get(FIRST_PARAMETER_NAME).toString());
+ assertEquals(SECOND_NAMED_PARAMETER_VALUE, p.get(SECOND_PARAMETER_NAME).toString());
}
/**
@@ -221,7 +221,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
*
*/
@Test(expected = StalePageException.class)
- public void decode9()
+ public void mappedPageHandlerShouldntResolveAPageIfItsRenderCountIsAheadFromTheRequestedOne()
{
Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME +
"/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
@@ -264,11 +264,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Test
public void encode2()
{
- PageParameters parameters = new PageParameters();
- parameters.set(0, "i1");
- parameters.set(1, "i2");
- parameters.set("a", "b");
- parameters.set("b", "c");
+ PageParameters parameters = aPageParameters();
PageProvider provider = new PageProvider(MockPage.class, parameters);
provider.setPageSource(context);
IRequestHandler handler = new BookmarkablePageRequestHandler(provider);
@@ -282,11 +278,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Test
public void encode3()
{
- PageParameters parameters = new PageParameters();
- parameters.set(0, "i1");
- parameters.set(1, "i2");
- parameters.set("a", "b");
- parameters.set("b", "c");
+ PageParameters parameters = aPageParameters();
PageProvider provider = new PageProvider(MockPage.class, parameters);
provider.setPageSource(context);
@@ -296,17 +288,14 @@ public class BookmarkableMapperTest extends AbstractMapperTest
assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME + "/i1/i2?a=b&b=c", url.toString());
}
+
/**
*
*/
@Test
public void encode4()
{
- MockPage page = new MockPage(15);
- page.getPageParameters().set(0, "i1");
- page.getPageParameters().set(1, "i2");
- page.getPageParameters().set("a", "b");
- page.getPageParameters().set("b", "c");
+ MockPage page = aPageInstance();
page.setCreatedBookmarkable(true);
IPageProvider provider = new PageProvider(page);
@@ -322,11 +311,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Test
public void encode5()
{
- MockPage page = new MockPage(15);
- page.getPageParameters().set(0, "i1");
- page.getPageParameters().set(1, "i2");
- page.getPageParameters().set("a", "b");
- page.getPageParameters().set("b", "c");
+ MockPage page = aPageInstance();
page.setCreatedBookmarkable(false);
@@ -346,19 +331,9 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Test
public void encode6()
{
- MockPage page = new MockPage(15);
- page.getPageParameters().set(0, "i1");
- page.getPageParameters().set(1, "i2");
- page.getPageParameters().set("a", "b");
- page.getPageParameters().set("b", "c");
-
- // shouldn't make any difference for BookmarkableListenerInterfaceRequestHandler,
- // as this explicitely says the url must be bookmarkable
- page.setCreatedBookmarkable(false);
+ IRequestableComponent c = aComponent();
- IRequestableComponent c = page.get("foo:bar");
-
- PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
+ PageAndComponentProvider provider = new PageAndComponentProvider(c.getPage(), c);
IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
ILinkListener.INTERFACE);
@@ -374,19 +349,9 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Test
public void encode7()
{
- MockPage page = new MockPage(15);
- page.getPageParameters().set(0, "i1");
- page.getPageParameters().set(1, "i2");
- page.getPageParameters().set("a", "b");
- page.getPageParameters().set("b", "c");
-
- // shouldn't make any difference for BookmarkableListenerInterfaceRequestHandler,
- // as this explicitely says the url must be bookmarkable
- page.setCreatedBookmarkable(false);
+ IRequestableComponent c = aComponent();
- IRequestableComponent c = page.get("foo:bar");
-
- PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
+ PageAndComponentProvider provider = new PageAndComponentProvider(c.getPage(), c);
IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
ILinkListener.INTERFACE, 4);
@@ -396,6 +361,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
"/i1/i2?15-0.ILinkListener.4-foo-bar&a=b&b=c", url.toString());
}
+
/**
*
*/
@@ -414,4 +380,71 @@ public class BookmarkableMapperTest extends AbstractMapperTest
assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME, url.toString());
}
+
+ /**
+ *
+ */
+ @Test
+ public void itShouldntEncodeClassNameAtCallbackUrlsIfPageSettingsDoesntPreventPageExpiration()
+ {
+ IPageSettings expireableSettings = new PageSettings();
+ expireableSettings.setRecreateMountedPagesAfterExpiry(false);
+ BookmarkableMapper expirableEncoder = new BookmarkableMapperStub(expireableSettings);
+
+
+ IRequestableComponent component = aComponent();
+ ListenerInterfaceRequestHandler handler = new ListenerInterfaceRequestHandler(
+ new PageAndComponentProvider(component.getPage(), component), ILinkListener.INTERFACE);
+
+ assertThat(expirableEncoder.mapHandler(handler), nullValue());
+ }
+
+ protected MockPage aPageInstance()
+ {
+ MockPage page = new MockPage(15);
+ page.getPageParameters().mergeWith(aPageParameters());
+ return page;
+ }
+
+ protected PageParameters aPageParameters()
+ {
+ PageParameters parameters = new PageParameters();
+ parameters.set(0, FIRST_INDEXED_PARAMETER);
+ parameters.set(1, SECOND_INDEXED_PARAMETER);
+ parameters.set(FIRST_PARAMETER_NAME, "b");
+ parameters.set(SECOND_PARAMETER_NAME, SECOND_NAMED_PARAMETER_VALUE);
+ return parameters;
+ }
+
+ protected IRequestableComponent aComponent()
+ {
+ MockPage page = aPageInstance();
+
+ // shouldn't make any difference for BookmarkableListenerInterfaceRequestHandler,
+ // as this explicitely says the url must be bookmarkable
+ page.setCreatedBookmarkable(false);
+
+ IRequestableComponent c = page.get("foo:bar");
+ return c;
+ }
+
+ private class BookmarkableMapperStub extends BookmarkableMapper
+ {
+ public BookmarkableMapperStub(IPageSettings settings)
+ {
+ super(new PageParametersEncoder(), settings);
+ }
+
+ @Override
+ protected IMapperContext getContext()
+ {
+ return context;
+ }
+
+ @Override
+ protected boolean checkPageClass(java.lang.Class<? extends IRequestablePage> pageClass)
+ {
+ return true;
+ }
+ }
}