[ http://issues.apache.org/jira/browse/BEEHIVE-1059?page=all ]
Carlin Rogers resolved BEEHIVE-1059:
------------------------------------
Resolution: Fixed
Assign To: Julie Zhuo (was: Carlin Rogers)
Fixed with revision 378760. See
http://svn.apache.org/viewcvs?rev=378760&view=rev
A test to cover this scenario was added to the BVT.
> ClassCastException when InternalUtils.addActionError() casts ActionMessages
> for the Global.ERROR_KEY attribute to a sub class, ActionErrors
> -------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: BEEHIVE-1059
> URL: http://issues.apache.org/jira/browse/BEEHIVE-1059
> Project: Beehive
> Type: Bug
> Components: NetUI
> Versions: V1, 1.0.1, v.next
> Reporter: Carlin Rogers
> Assignee: Julie Zhuo
> Fix For: v.next
> 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.
-
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