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

Leonardo Uribe reopened MYFACES-2840:
-------------------------------------


The solution committed is ok, but thinking about it and in a report done in 
TOMAHAWK-1515, it seems it is not really necessary to use a copied iterator on 
all cases.

There are maps that extends from AbstractAttributeMap like InitParameterMap or 
RequestParameterMap that are read only maps. That means, remove() method will 
never be executed so we don't need to do this stuff. I think we should create a 
new class called AbstractReadOnlyAttributeMap.

> Use a copied Iterator instead of the real Enumeration in 
> AbstractAttributeMap.AbstractAttributeIterator
> -------------------------------------------------------------------------------------------------------
>
>                 Key: MYFACES-2840
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2840
>             Project: MyFaces Core
>          Issue Type: Task
>    Affects Versions: 1.1.8, 1.2.9, 2.0.1
>            Reporter: Jakob Korherr
>            Assignee: Jakob Korherr
>             Fix For: 1.1.9-SNAPSHOT, 1.2.10-SNAPSHOT, 2.0.2-SNAPSHOT
>
>
> We can use a copied version of the Enumeration from getAttributeNames() here, 
> because directly using it might cause a ConcurrentModificationException  when 
> performing remove(). Note that we can do this since the Enumeration from 
> getAttributeNames() will contain exactly the attribute names from the time 
> getAttributeNames() was called and it will not be updated if attributes are 
> removed or added.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to