[ http://issues.apache.org/jira/browse/COCOON-1867?page=all ]

Antonio Gallardo reassigned COCOON-1867:
----------------------------------------

    Assignee: Antonio Gallardo  (was: Simone Gianni)

> BeanConvertor uses a WeakHashMap in the wrong way.
> --------------------------------------------------
>
>                 Key: COCOON-1867
>                 URL: http://issues.apache.org/jira/browse/COCOON-1867
>             Project: Cocoon
>          Issue Type: Bug
>          Components: Blocks: Forms
>    Affects Versions: 2.1.9, 2.1.10-dev (current SVN)
>            Reporter: Simone Gianni
>         Assigned To: Antonio Gallardo
>            Priority: Critical
>         Attachments: BeanConvertor-1867.diff
>
>
> In the BeanConvertor, when a bean is converted to a string, the bean is 
> stored in a WeakHashMap this way :
> m_objects.put(idValue, value);
> Actually idValue is a string representing the bean (toString or evalued on 
> id_path) while the value is the bean.
> WeakHashMap DOES NOT remove a mapping when the bean is garbage collected, but 
> actually removes it when the KEY is garbage collected. This means that since 
> the string is serialized to XML in the form instance and then dropped, the 
> mapping could be removed even while the user is filling the form, with the 
> conseguence that the convertor stops working, see a null value, reports a 
> validation error, even if the user correctly filled the form.
> This is even worse when you are using a selection list of beans, because in 
> that case the bean has no chanches to enter the m_objects map anymore, since 
> the selection list has been generated and stored st the beginning of the form 
> (maybe thru flow, or on-create) and is not asking the convertor to convert 
> the beans anymore.
> A better solution (and IMMO what the author intended to do) is to remove the 
> mapping (so that the map does not hold references for everything) when the 
> BEAN gets garbage collected. In this case I'm experimenting with apache 
> commons ReferenceMap, which actually can remove mappings when the value 
> (bean) is garbage collected.

-- 
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

        

Reply via email to