beehive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carlin Rogers (JIRA)" <...@beehive.apache.org>
Subject [jira] Resolved: (BEEHIVE-1059) ClassCastException when InternalUtils.addActionError() casts ActionMessages for the Global.ERROR_KEY attribute to a sub class, ActionErrors
Date Sat, 18 Feb 2006 19:18:26 GMT
     [ 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


Mime
View raw message