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/08/21 00:02:49 UTC
svn commit: r987648 -
/wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
Author: ivaynberg
Date: Fri Aug 20 22:02:49 2010
New Revision: 987648
URL: http://svn.apache.org/viewvc?rev=987648&view=rev
Log:
wicket should keep the url of a page that caused a runtime error
Issue: WICKET-3005
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java?rev=987648&r1=987647&r2=987648&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java Fri Aug 20 22:02:49 2010
@@ -41,22 +41,48 @@ public class DefaultExceptionMapper impl
{
private static final Logger logger = LoggerFactory.getLogger(DefaultExceptionMapper.class);
+ // default policy is to not change the URL in the address bar of the browser:
+ // - the url syntax eventually gives the user some indication of the error
+ // - the user can hit refresh in the browser to retry loading the page
+ private RenderPageRequestHandler.RedirectPolicy redirectPolicy = RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT;
+
+ /**
+ * get the redirect policy in case of error (controls if the URL changes in case of displaying an error)
+ *
+ * @return redirect policy
+ */
+ public RenderPageRequestHandler.RedirectPolicy getRedirectPolicy()
+ {
+ return redirectPolicy;
+ }
+
+ /**
+ * set the redirect policy in case of error (you can control if the URL changes in case of displaying an error)
+ *
+ * @param redirectPolicy redirection policy
+ */
+ public void setRedirectPolicy(RenderPageRequestHandler.RedirectPolicy redirectPolicy)
+ {
+ this.redirectPolicy = redirectPolicy;
+ }
+
public IRequestHandler map(Exception e)
{
if (e instanceof StalePageException)
{
// If the page was stale, just rerender it
+ // (the url should always be updated by an redirect in that case)
return new RenderPageRequestHandler(new PageProvider(((StalePageException)e).getPage()));
}
else if (e instanceof PageExpiredException)
{
- return new RenderPageRequestHandler(new PageProvider(Application.get()
+ return createPageRequestHandler(new PageProvider(Application.get()
.getApplicationSettings()
.getPageExpiredErrorPage()));
}
else if (e instanceof AuthorizationException)
{
- return new RenderPageRequestHandler(new PageProvider(Application.get()
+ return createPageRequestHandler(new PageProvider(Application.get()
.getApplicationSettings()
.getAccessDeniedPage()));
}
@@ -71,12 +97,11 @@ public class DefaultExceptionMapper impl
if (IExceptionSettings.SHOW_EXCEPTION_PAGE.equals(unexpectedExceptionDisplay))
{
Page currentPage = extractCurrentPage();
- return new RenderPageRequestHandler(new PageProvider(new ExceptionErrorPage(e,
- currentPage)));
+ return createPageRequestHandler(new PageProvider(new ExceptionErrorPage(e, currentPage)));
}
else if (IExceptionSettings.SHOW_INTERNAL_ERROR_PAGE.equals(unexpectedExceptionDisplay))
{
- return new RenderPageRequestHandler(new PageProvider(
+ return createPageRequestHandler(new PageProvider(
application.getApplicationSettings().getInternalErrorPage()));
}
else
@@ -87,6 +112,11 @@ public class DefaultExceptionMapper impl
}
}
+ private RenderPageRequestHandler createPageRequestHandler(PageProvider pageProvider)
+ {
+ return new RenderPageRequestHandler(pageProvider, redirectPolicy);
+ }
+
/**
* @return the page being rendered when the exception was thrown, or {@code null} if it cannot
* be extracted