You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/10/19 17:21:48 UTC
svn commit: r1024271 - in /wicket/trunk:
wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/
wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/
wicket-examples/src/main/java/org/apache/wicket/examples/stateless/ wicke...
Author: ivaynberg
Date: Tue Oct 19 15:21:46 2010
New Revision: 1024271
URL: http://svn.apache.org/viewvc?rev=1024271&view=rev
Log:
fixed package mapper
Issue: WICKET-3114
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/NiceUrlApplication.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/RequestMapperApplication.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessApplication.java
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/NiceUrlApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/NiceUrlApplication.java?rev=1024271&r1=1024270&r2=1024271&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/NiceUrlApplication.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/NiceUrlApplication.java Tue Oct 19 15:21:46 2010
@@ -20,6 +20,7 @@ import org.apache.wicket.Page;
import org.apache.wicket.examples.WicketExampleApplication;
import org.apache.wicket.examples.niceurl.mounted.Page3;
import org.apache.wicket.request.mapper.PackageMapper;
+import org.apache.wicket.request.mapper.mount.MountMapper;
import org.apache.wicket.util.lang.PackageName;
@@ -76,7 +77,8 @@ public class NiceUrlApplication extends
// that any refactoring (like a package rename) will automatically
// be applied here.
getRootRequestMapperAsCompound().add(
- new PackageMapper("/my/mounted/package", PackageName.forClass(Page3.class)));
+ new MountMapper("/my/mounted/package", new PackageMapper(
+ PackageName.forClass(Page3.class))));
}
/**
* Sets up a request coding strategy that uses case-insensitive mounts
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/RequestMapperApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/RequestMapperApplication.java?rev=1024271&r1=1024270&r2=1024271&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/RequestMapperApplication.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/RequestMapperApplication.java Tue Oct 19 15:21:46 2010
@@ -24,6 +24,7 @@ import org.apache.wicket.protocol.https.
import org.apache.wicket.protocol.https.HttpsMapper;
import org.apache.wicket.request.mapper.MountedMapper;
import org.apache.wicket.request.mapper.PackageMapper;
+import org.apache.wicket.request.mapper.mount.MountMapper;
import org.apache.wicket.util.lang.PackageName;
/**
@@ -58,7 +59,8 @@ public class RequestMapperApplication ex
getRootRequestMapperAsCompound().add(new MountedMapper("secured", HttpsPage.class));
getRootRequestMapperAsCompound().add(
- new PackageMapper("pMount", PackageName.forClass(PackageMountedPage.class)));
+ new MountMapper("pMount", new PackageMapper(
+ PackageName.forClass(PackageMountedPage.class))));
setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig()));
}
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessApplication.java?rev=1024271&r1=1024270&r2=1024271&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessApplication.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessApplication.java Tue Oct 19 15:21:46 2010
@@ -19,6 +19,7 @@ package org.apache.wicket.examples.state
import org.apache.wicket.Page;
import org.apache.wicket.examples.WicketExampleApplication;
import org.apache.wicket.request.mapper.PackageMapper;
+import org.apache.wicket.request.mapper.mount.MountMapper;
import org.apache.wicket.util.lang.PackageName;
/**
@@ -57,7 +58,8 @@ public class StatelessApplication extend
mountPage("/mixed", StatelessPage2.class);
mountPage("/state-in-url", StatelessPage3.class);
getRootRequestMapperAsCompound().add(
- new PackageMapper("/public", PackageName.forClass(StatelessApplication.class)));
+ new MountMapper("/public", new PackageMapper(
+ PackageName.forClass(StatelessApplication.class))));
mountPage("foo", StatelessPage.class);
}
}
Modified: wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java?rev=1024271&r1=1024270&r2=1024271&view=diff
==============================================================================
--- wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java (original)
+++ wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java Tue Oct 19 15:21:46 2010
@@ -26,7 +26,7 @@ import org.apache.wicket.request.mapper.
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.string.Strings;
-public abstract class AbstractMapper
+public abstract class AbstractMapper implements IRequestMapper
{
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java?rev=1024271&r1=1024270&r2=1024271&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java Tue Oct 19 15:21:46 2010
@@ -20,6 +20,7 @@ import org.apache.wicket.request.Request
import org.apache.wicket.request.Url;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.mapper.info.PageComponentInfo;
+import org.apache.wicket.request.mapper.mount.MountMapper;
import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
@@ -27,27 +28,33 @@ import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.lang.PackageName;
/**
- * A request mapper that mounts all bookmarkable pages at a given package.
+ * A request mapper that mounts all bookmarkable pages in a given package.
+ * <p>
+ * To mount this mapper onto a path use the {@link MountMapper}, ex:
+ *
+ * <pre>
+ * new MountMapper("/my/path", new packageMapper(PackageName.forClass(MyPage.class)));
+ * </pre>
+ *
+ * will result in urls like {@code /my/path/MyPage}
+ * </p>
*
* <pre>
* Page Class - Render (BookmarkablePageRequestHandler)
- * /mountPath/MyPage
+ * /MyPage
* (will redirect to hybrid alternative if page is not stateless)
*
* Page Instance - Render Hybrid (RenderPageRequestHandler for pages that were created using bookmarkable URLs)
- * /mountPath/MyPage?2
+ * /MyPage?2
*
* Page Instance - Bookmarkable Listener (BookmarkableListenerInterfaceRequestHandler)
- * /mountPath/MyPage?2-click-foo-bar-baz
- * /mountPath/MyPage?2-click.1-foo-bar-baz (1 is behavior index)
+ * /MyPage?2-click-foo-bar-baz
+ * /MyPage?2-click.1-foo-bar-baz (1 is behavior index)
* (these will redirect to hybrid if page is not stateless)
* </pre>
*/
public class PackageMapper extends AbstractBookmarkableMapper
{
- /** the path to mount the bookmarkable page classes on */
- private final String mountPath;
-
/**
* the name of the package for which all bookmarkable pages should be mounted
*/
@@ -59,29 +66,25 @@ public class PackageMapper extends Abstr
/**
* Construct.
*
- * @param mountPath
* @param packageName
*/
- public PackageMapper(final String mountPath, final PackageName packageName)
+ public PackageMapper(final PackageName packageName)
{
- this(mountPath, packageName, new PageParametersEncoder());
+ this(packageName, new PageParametersEncoder());
}
/**
* Construct.
*
- * @param mountPath
* @param packageName
* @param pageParametersEncoder
*/
- public PackageMapper(final String mountPath, final PackageName packageName,
+ public PackageMapper(final PackageName packageName,
final IPageParametersEncoder pageParametersEncoder)
{
- Args.notNull(mountPath, "mountPath");
Args.notNull(packageName, "packageName");
Args.notNull(pageParametersEncoder, "pageParametersEncoder");
- this.mountPath = mountPath;
this.packageName = packageName;
this.pageParametersEncoder = pageParametersEncoder;
}
@@ -96,11 +99,8 @@ public class PackageMapper extends Abstr
if (PackageName.forClass(pageClass).equals(packageName))
{
Url url = new Url();
- url.getSegments().add(mountPath);
url.getSegments().add(pageClass.getSimpleName());
-
encodePageComponentInfo(url, info.getPageComponentInfo());
-
return encodePageParameters(url, info.getPageParameters(), pageParametersEncoder);
}
@@ -114,20 +114,20 @@ public class PackageMapper extends Abstr
protected UrlInfo parseRequest(Request request)
{
Url url = request.getUrl();
- if (url.getSegments().size() >= 1 && urlStartsWith(url, mountPath))
+ if (url.getSegments().size() >= 1)
{
// try to extract page and component information from URL
PageComponentInfo info = getPageComponentInfo(url);
// load the page class
- String className = url.getSegments().get(1);
+ String className = url.getSegments().get(0);
String fullyQualifiedClassName = packageName.getName() + '.' + className;
Class<? extends IRequestablePage> pageClass = getPageClass(fullyQualifiedClassName);
if (pageClass != null && IRequestablePage.class.isAssignableFrom(pageClass))
{
// extract the PageParameters from URL if there are any
- PageParameters pageParameters = extractPageParameters(request, 2,
+ PageParameters pageParameters = extractPageParameters(request, 1,
pageParametersEncoder);
return new UrlInfo(info, pageClass, pageParameters);
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java?rev=1024271&r1=1024270&r2=1024271&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java Tue Oct 19 15:21:46 2010
@@ -39,8 +39,6 @@ import org.apache.wicket.util.lang.Packa
public class PackageMapperTest extends AbstractMapperTest
{
- private static final String MOUNT_PATH = "mountPath";
-
/**
* Construct.
*/
@@ -48,8 +46,7 @@ public class PackageMapperTest extends A
{
}
- private final PackageMapper encoder = new PackageMapper(MOUNT_PATH,
- PackageName.forClass(MockPage.class))
+ private final PackageMapper encoder = new PackageMapper(PackageName.forClass(MockPage.class))
{
@Override
protected IMapperContext getContext()
@@ -65,7 +62,7 @@ public class PackageMapperTest extends A
*/
public void testDecode1()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME);
+ Url url = Url.parse(PAGE_CLASS_NAME);
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertTrue(handler instanceof RenderPageRequestHandler);
@@ -80,7 +77,7 @@ public class PackageMapperTest extends A
*/
public void testDecode2()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "/indexed1?a=b&b=c");
+ Url url = Url.parse(PAGE_CLASS_NAME + "/indexed1?a=b&b=c");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertTrue(handler instanceof RenderPageRequestHandler);
@@ -101,7 +98,7 @@ public class PackageMapperTest extends A
*/
public void testDecode3()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "?15");
+ Url url = Url.parse(PAGE_CLASS_NAME + "?15");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertTrue(handler instanceof RenderPageRequestHandler);
@@ -114,7 +111,7 @@ public class PackageMapperTest extends A
*/
public void testDecode4()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c");
+ Url url = Url.parse(PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertTrue(handler instanceof RenderPageRequestHandler);
@@ -136,7 +133,7 @@ public class PackageMapperTest extends A
*/
public void testDecode5()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "?15-ILinkListener-foo-bar");
+ Url url = Url.parse(PAGE_CLASS_NAME + "?15-ILinkListener-foo-bar");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertTrue(handler instanceof ListenerInterfaceRequestHandler);
@@ -156,8 +153,7 @@ public class PackageMapperTest extends A
*/
public void testDecode6()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME +
- "/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
+ Url url = Url.parse(PAGE_CLASS_NAME + "/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertTrue(handler instanceof ListenerInterfaceRequestHandler);
@@ -184,7 +180,7 @@ public class PackageMapperTest extends A
*/
public void testDecode7()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "?15-ILinkListener.4-foo-bar");
+ Url url = Url.parse(PAGE_CLASS_NAME + "?15-ILinkListener.4-foo-bar");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertTrue(handler instanceof ListenerInterfaceRequestHandler);
@@ -204,8 +200,7 @@ public class PackageMapperTest extends A
*/
public void testDecode8()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME +
- "/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
+ Url url = Url.parse(PAGE_CLASS_NAME + "/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
context.setNextPageRenderCount(5);
@@ -223,8 +218,7 @@ public class PackageMapperTest extends A
*/
public void testDecode9()
{
- Url url = Url.parse(MOUNT_PATH + "/" + PAGE_CLASS_NAME +
- "/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
+ Url url = Url.parse(PAGE_CLASS_NAME + "/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
context.setNextPageRenderCount(6);
@@ -249,7 +243,7 @@ public class PackageMapperTest extends A
public void testDecode10()
{
// use String.class but any other non-Page will do the job as well
- Url url = Url.parse(MOUNT_PATH + "/" + String.class.getSimpleName());
+ Url url = Url.parse(String.class.getSimpleName());
IRequestHandler handler = encoder.mapRequest(getRequest(url));
assertNull("A non-page class should not create a request handler!", handler);
@@ -264,7 +258,7 @@ public class PackageMapperTest extends A
provider.setPageSource(context);
IRequestHandler handler = new BookmarkablePageRequestHandler(provider);
Url url = encoder.mapHandler(handler);
- assertEquals(MOUNT_PATH + "/" + PAGE_CLASS_NAME, url.toString());
+ assertEquals(PAGE_CLASS_NAME, url.toString());
}
/**
@@ -281,7 +275,7 @@ public class PackageMapperTest extends A
provider.setPageSource(context);
IRequestHandler handler = new BookmarkablePageRequestHandler(provider);
Url url = encoder.mapHandler(handler);
- assertEquals(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "/i1/i2?a=b&b=c", url.toString());
+ assertEquals(PAGE_CLASS_NAME + "/i1/i2?a=b&b=c", url.toString());
}
/**
@@ -300,7 +294,7 @@ public class PackageMapperTest extends A
IRequestHandler handler = new BookmarkablePageRequestHandler(provider);
Url url = encoder.mapHandler(handler);
- assertEquals(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "/i1/i2?a=b&b=c", url.toString());
+ assertEquals(PAGE_CLASS_NAME + "/i1/i2?a=b&b=c", url.toString());
}
/**
@@ -319,7 +313,7 @@ public class PackageMapperTest extends A
IRequestHandler handler = new RenderPageRequestHandler(provider);
Url url = encoder.mapHandler(handler);
- assertEquals(MOUNT_PATH + "/" + PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c", url.toString());
+ assertEquals(PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c", url.toString());
}
/**
@@ -368,8 +362,7 @@ public class PackageMapperTest extends A
Url url = encoder.mapHandler(handler);
- assertEquals(MOUNT_PATH + "/" + PAGE_CLASS_NAME +
- "/i1/i2?15-0.ILinkListener-foo-bar&a=b&b=c", url.toString());
+ assertEquals(PAGE_CLASS_NAME + "/i1/i2?15-0.ILinkListener-foo-bar&a=b&b=c", url.toString());
}
/**
@@ -395,8 +388,8 @@ public class PackageMapperTest extends A
Url url = encoder.mapHandler(handler);
- assertEquals(MOUNT_PATH + "/" + PAGE_CLASS_NAME +
- "/i1/i2?15-0.ILinkListener.4-foo-bar&a=b&b=c", url.toString());
+ assertEquals(PAGE_CLASS_NAME + "/i1/i2?15-0.ILinkListener.4-foo-bar&a=b&b=c",
+ url.toString());
}
/**
@@ -414,6 +407,6 @@ public class PackageMapperTest extends A
Url url = encoder.mapHandler(handler);
- assertEquals(MOUNT_PATH + "/" + PAGE_CLASS_NAME, url.toString());
+ assertEquals(PAGE_CLASS_NAME, url.toString());
}
}