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(&quot;/my/path&quot;, 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());
 	}
 }