[
https://issues.apache.org/jira/browse/MYFACES-2840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12892273#action_12892273
]
Jakob Korherr commented on MYFACES-2840:
----------------------------------------
Hi Bernd,
I ran into this problem while refactoring the current FlashImpl. This impl uses
the SubKeyMap. Take a look at its implementation of Entries.clear() and also
the implementation of clear() from AbstractMap:
public void clear() {
entrySet().clear();
}
@Override
public void clear()
{
Iterator<String> keys = _base.keySet().iterator();
while (keys.hasNext())
{
String key = keys.next();
if (key != null && key.startsWith(_prefix))
{
keys.remove();
}
}
}
There we have the call to keys.remove() and keys beeing the Iterator of the
AbstractAttributeMap's keySet (in this case it's a SessionMap).
However the change is just an improvement, because you won't get a
ConcurrentModificationException anymore, but the keySet iterator behaves
exactly the same in any other scenario.
Regards,
Jakob
> 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.