[
https://issues.apache.org/jira/browse/BEEHIVE-1059?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Russ Baker updated BEEHIVE-1059:
--------------------------------
Verified that Jpf.ExceptionHandler does not throw a ClassCastException when
using the 'FlowController.addActionError()' method in the implementation of the
ExceptionHandler. Verified using Carlin's attached repro against SVN 549584. I
recommend that this bug be closed.
> ClassCastException when InternalUtils.addActionError() casts ActionMessages
> for the Global.ERROR_KEY attribute to a sub class, ActionErrors
> -------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: BEEHIVE-1059
> URL: https://issues.apache.org/jira/browse/BEEHIVE-1059
> Project: Beehive
> Issue Type: Bug
> Components: NetUI
> Affects Versions: 1.0, 1.0.1, 1.0.2
> Reporter: Carlin Rogers
> Assignee: Julie Zhuo
> Fix For: 1.0.2
>
> Attachments: j1059-repro.zip
>
>
> The implementaion of InternalUtils.addActionError() casts the
> org.apache.struts.action.ActionMessages for the Global.ERROR_KEY attribute to
> a sub class of org.apache.struts.action.ActionErrors. However, in all the
> other code paths where we set the attribute for Global.ERROR_KEY, we use the
> parent class, ActionMessages.
> If a user implements @Jpf.ExceptionHandler method in a page flow and then
> calls FlowController.addActionError(), they will experience this
> ClassCastException. When an exception is thrown, the DefaultExceptionsHandler
> will set the attribute for Global.ERROR_KEY with a new instance
> ActionMessages that includes the ActionMessage with the exception message.
> Then it invokes the exception handler declared in the annotations of the page
> flow. When the FlowController.addActionError() is called, the internal code
> path will call InternalUtils.addActionError() and try to cast the
> ActionMessages to ActionErrors, giving a stack trace like this...
> 03 Feb 2006 14:55:19,987 ERROR DefaultExceptionsHandler []: Unhandled Page
> Flow Exception
> Throwable: java.lang.ClassCastException:
> org.apache.struts.action.ActionMessages
> Stack Trace:
> java.lang.ClassCastException: org.apache.struts.action.ActionMessages
> at
> org.apache.beehive.netui.pageflow.internal.InternalUtils.addActionError(InternalUtils.java:415)
> at
> org.apache.beehive.netui.pageflow.FlowController.addActionError(FlowController.java:1439)
> ...
> I will add a test to this shortly. To reproduce you really just need an
> implementation of an exception handler that calls addActionError(). Something
> like this...
> @Jpf.ExceptionHandler(
> forwards = {
> @Jpf.Forward(
> name = "handleError",
> path = "index.jsp")
> })
> protected Forward bogusExceptionHandler( Controller.BogusException ex,
> String actionName,
> String message, Object form ) {
> Object[] args = ex.getMessageArgs();
> addActionError("name", "messageKey_2", args);
> return new Forward( "handleError" );
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.