[ http://issues.apache.org/jira/browse/TAPESTRY-671?page=all ]
Howard M. Lewis Ship reassigned TAPESTRY-671:
---------------------------------------------
Assign To: Howard M. Lewis Ship
> RedirectException being caught from page begin rendering method (in exception
> page) as an application exception rather than causing the redirect
> ------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: TAPESTRY-671
> URL: http://issues.apache.org/jira/browse/TAPESTRY-671
> Project: Tapestry
> Type: Bug
> Reporter: Leonardo Quijano Vincenzi
> Assignee: Howard M. Lewis Ship
> Priority: Minor
>
> As in TAPESTRY-647, my application is catching a RedirectException when I try
> to redirect from the Exception page.
> Such as this:
> /** @see PageBeginRenderListener#pageBeginRender(PageEvent) */
> public void pageBeginRender(PageEvent event) {
> Throwable value = getException();
> if((value instanceof PageNotFoundException)) {
> WebRequest request = getWebRequest();
> String activationPath = request.getActivationPath();
>
> redirectToExternalPage(event.getRequestCycle(),
> getExternalService(), "PageNotFound", activationPath);
> }
> redirectToExternalPage() just gets the appropiate link and throw() a
> RedirectException.
> This is the stack trace:
> org.apache.tapestry.RedirectException
> redirectLocation: /sigep/Index.html
> com.dtqsoftware.utils.web.WebUtils.redirectToPage(WebUtils.java:62)
> com.dtqsoftware.sigep.web.pages.Exception.pageBeginRender(Exception.java:83)
> org.apache.tapestry.AbstractPage.firePageBeginRender(AbstractPage.java:478)
> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:268)
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368)
> org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:71)
> $ResponseRenderer_1069ac67711.renderResponse($ResponseRenderer_1069ac67711.java)
> $ResponseRenderer_1069ac67710.renderResponse($ResponseRenderer_1069ac67710.java)
> org.apache.tapestry.error.ExceptionPresenterImpl.presentException(ExceptionPresenterImpl.java:46)
> $ExceptionPresenter_1069ac676ff.presentException($ExceptionPresenter_1069ac676ff.java)
> $ExceptionPresenter_1069ac676fe.presentException($ExceptionPresenter_1069ac676fe.java)
> org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:121)
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:280)
> org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
> ....
> etc()
> Following the code... seems the exception propagates down to
> ExceptionPresenterImpl. There it's nested in a more general
> ApplicationException, thereby losing its RedirectException status:
> public void presentException(IRequestCycle cycle, Throwable cause)
> {
> try
> {
> IPage exceptionPage = cycle.getPage(_exceptionPageName);
> exceptionPage.setProperty("exception", cause);
> cycle.activate(exceptionPage);
> _responseRenderer.renderResponse(cycle);
> }
> catch (Throwable ex)
> {
> // Worst case scenario. The exception page itself is broken,
> leaving
> // us with no option but to write the cause to the output.
> _requestExceptionReporter.reportRequestException(ErrorMessages
> .unableToProcessClientRequest(cause), cause);
> // Also, write the exception thrown when redendering the exception
> // page, so that can get fixed as well.
> _requestExceptionReporter.reportRequestException(ErrorMessages
> .unableToPresentExceptionPage(ex), ex);
> // And throw the exception.
> throw new ApplicationRuntimeException(ex.getMessage(), ex);
> }
> if (_verbose)
> _requestExceptionReporter.reportRequestException(ErrorMessages
> .unableToProcessClientRequest(cause), cause);
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]