[ 
https://issues.apache.org/jira/browse/MYFACES-3248?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonardo Uribe resolved MYFACES-3248.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 2.1.2
                   2.0.8

> UIComponentBase.getFacets() should support all Map methods
> ----------------------------------------------------------
>
>                 Key: MYFACES-3248
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3248
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>            Reporter: Leonardo Uribe
>            Assignee: Leonardo Uribe
>             Fix For: 2.0.8, 2.1.2
>
>
> The javadoc of UIComponent.getFacets() says this:
> "... Return a mutable Map representing the facet UIComponents associated with 
> this UIComponent, keyed by facet name (which must be a String). The returned 
> implementation must support all of the standard and optional Map methods, 
> plus support the following additional requirements: 
> - The Map implementation must implement the java.io.Serializable interface.
> - Any attempt to add a null key or value must throw a NullPointerException.
> - Any attempt to add a key that is not a String must throw a 
> ClassCastException.
> - Any attempt to add a value that is not a UIComponent must throw a 
> ClassCastException.
> - Whenever a new facet UIComponent is added:
>       - The parent property of the component must be set to this component 
> instance.
>       -  If the parent property of the component was already non-null, the 
> component must first be removed from its previous parent (where it may have 
> been either a child or a facet).
> - Whenever an existing facet UIComponent is removed:
>       - The parent property of the facet must be set to null.
> ...."
> The current implementation is not strict about "... the returned 
> implementation must support all of the standard and optional Map methods 
> ...". There are ways to modify facet map indirectly, using iterator.remove(), 
> or entry.setValue() or removing some key, value from entrySet(), keySet() or 
> values() collection.
> These methods are not very common, so in normal use cases there is no problem 
> at all, but at the end this should be done to prevent bug reports like 
> MYFACES-3227, MYFACES-3175 or MYFACES-2407.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to