Author: knopp
Date: Thu Sep 18 09:49:02 2008
New Revision: 696703
URL: http://svn.apache.org/viewvc?rev=696703&view=rev
Log:
redirect from home page
Modified:
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/EncoderContext.java
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/MountedEncoder.java
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/MountedEncoderTest.java
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/TestEncoderContext.java
Modified:
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/EncoderContext.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/EncoderContext.java?rev=696703&r1=696702&r2=696703&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/EncoderContext.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/EncoderContext.java
Thu Sep 18 09:49:02 2008
@@ -80,4 +80,11 @@
* @return listener interface
*/
public RequestListenerInterface
requestListenerInterfaceFromString(String interfaceName);
+
+ /**
+ * Returns the home page class.
+ *
+ * @return home page class
+ */
+ public Class<? extends IPage> getHomePageClass();
}
Modified:
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/MountedEncoder.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/MountedEncoder.java?rev=696703&r1=696702&r2=696703&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/MountedEncoder.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/encoder/MountedEncoder.java
Thu Sep 18 09:49:02 2008
@@ -32,6 +32,7 @@
import org.apache._wicket.request.handler.impl.BookmarkablePageRequestHandler;
import org.apache._wicket.request.handler.impl.ListenerInterfaceRequestHandler;
import org.apache._wicket.request.handler.impl.RenderPageRequestHandler;
+import
org.apache._wicket.request.handler.impl.RenderPageRequestHandler.RedirectPolicy;
import org.apache._wicket.request.request.Request;
import org.apache.wicket.RequestListenerInterface;
@@ -155,10 +156,49 @@
componentInfo.getBehaviorIndex());
}
+ /**
+ * Check if the URL is for home page and the home page class match
mounted class. If so,
+ * redirect to mounted URL.
+ *
+ * @param url
+ * @return request handler or <code>null</code>
+ */
+ private RequestHandler checkHomePage(Url url)
+ {
+ if (url.getSegments().isEmpty() &&
url.getQueryParameters().isEmpty())
+ {
+ // this is home page
+ if
(pageClass.get().equals(getContext().getHomePageClass()) &&
redirectFromHomePage())
+ {
+ IPage page = newPageInstance(null,
pageClass.get(), new PageParameters());
+ return new RenderPageRequestHandler(page,
RedirectPolicy.ALWAYS_REDIRECT);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * If this method returns true and application home page class is same
as the class mounted with
+ * this encoder, request to home page will create a redirect to the
mounted path.
+ *
+ * @return whether this encode should respond to home page request when
home page class is same
+ * as mounted class.
+ */
+ protected boolean redirectFromHomePage()
+ {
+ return true;
+ }
+
public RequestHandler decode(Request request)
{
Url url = request.getUrl();
+ RequestHandler handler = checkHomePage(url);
+ if (handler != null)
+ {
+ return handler;
+ }
+
// check if the URL is long enough and starts with the proper
segments
if (url.getSegments().size() >= mountSegments.length &&
urlStartsWith(url, mountSegments))
{
Modified:
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/MountedEncoderTest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/MountedEncoderTest.java?rev=696703&r1=696702&r2=696703&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/MountedEncoderTest.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/MountedEncoderTest.java
Thu Sep 18 09:49:02 2008
@@ -192,6 +192,28 @@
/**
*
*/
+ public void testDecode8()
+ {
+ Url url =
Url.parse("some/mmount/path?15-ILinkListener.4-foo-bar");
+ RequestHandler handler = encoder.decode(getRequest(url));
+
+ assertNull(handler);
+ }
+
+ /**
+ *
+ */
+ public void testDecode9()
+ {
+ // capture the home page
+ Url url = Url.parse("");
+ RequestHandler handler = encoder.decode(getRequest(url));
+ assertTrue(handler instanceof RenderPageRequestHandler);
+ }
+
+ /**
+ *
+ */
public void testEncode1()
{
RequestHandler handler = new
BookmarkablePageRequestHandler(MockPage.class, null,
Modified:
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/TestEncoderContext.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/TestEncoderContext.java?rev=696703&r1=696702&r2=696703&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/TestEncoderContext.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/encoder/TestEncoderContext.java
Thu Sep 18 09:49:02 2008
@@ -118,5 +118,10 @@
{
return listenerInterface.getName();
}
+
+ public Class<? extends IPage> getHomePageClass()
+ {
+ return MockPage.class;
+ }
}