You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by "David Evans (JIRA)" <ji...@apache.org> on 2006/04/24 21:14:09 UTC

[jira] Closed: (STR-2025) FIFO ordering in ActionMessages

     [ http://issues.apache.org/struts/browse/STR-2025?page=all ]
     
David Evans closed STR-2025:
----------------------------

    Resolution: Fixed

> FIFO ordering in ActionMessages
> -------------------------------
>
>          Key: STR-2025
>          URL: http://issues.apache.org/struts/browse/STR-2025
>      Project: Struts Action 1
>         Type: Bug

>   Components: Action
>     Versions: Nightly Build
>  Environment: Operating System: other
> Platform: Other
>     Reporter: Haroon Rafique
>     Assignee: David Evans
>      Fix For: 1.2 Family
>  Attachments: action_message_order.diff, action_message_order_niall.diff
>
> I had posted to the struts-user list at:
> http://www.mail-archive.com/struts-user@jakarta.apache.org/msg97016.html
> and struts-dev list at:
> http://marc.theaimsgroup.com/?l=struts-dev&m=108031774812299&w=2
> I think I may have discovered a bug in
> src/share/org/apache/struts/action/ActionMessages.java
> ActionMessages are supposed to have FIFO ordering (as evidenced by the
> presenence of property iOrder in the class ActionMessageItem). However, I
> discovered a case whereby the ActionMessages would lose their order.
> Let's say validator returned some errors (I'll only show property keys and their
> order):
>     {postalCode[Order=1],number[Order=0]}
> As you can see they are in a weird order which is okay since its a HashMap and
> order is not guaranteed.
> Now, if I created another ActionErrors object with only 1 message:
>     {org.apache.struts.action.GLOBAL_MESSAGE[Order=0]}
> and then tried to add using something like:
>     newErrors.add(oldErrors);
> it would correclty keep the order and it would become something like:
>        
> {postalCode[Order=1],org.apache.struts.action.GLOBAL_MESSAGE[Order=0],number[Order=2]}
> So, struts is behaving correctly so far. It kept the order of the GLOBAL_MESSAGE
> 0 and created higher sequential order numbers for the other 2 added properties.
> However, unfortunately there are several other places later on in the struts
> sequence where an empty ActionErrors object is combined with what was returned
> from the validate() method. And this is where, automagically, the Order numbers
> start their sequencing all over again and become:
> {postalCode[Order=0],org.apache.struts.action.GLOBAL_MESSAGE[Order=1],number[Order=2]}
> The reason for this is that the properties() method only sends back an iterator
> to the unsorted HashMap. Instead it should send something back which is sorted
> according to the order of the properties (similar to how its done in the get()
> method).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org