You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by rd...@apache.org on 2011/11/02 16:20:38 UTC
svn commit: r1196620 -
/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/AbstractNameMapperAwareFactory.java
Author: rdebusscher
Date: Wed Nov 2 15:20:37 2011
New Revision: 1196620
URL: http://svn.apache.org/viewvc?rev=1196620&view=rev
Log:
EXTVAL-137 : Deregistering a class from the NameMapperFactory results in unsupported operation on CopyOnWriteArrayList
Modified:
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/AbstractNameMapperAwareFactory.java
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/AbstractNameMapperAwareFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/AbstractNameMapperAwareFactory.java?rev=1196620&r1=1196619&r2=1196620&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/AbstractNameMapperAwareFactory.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/AbstractNameMapperAwareFactory.java Wed Nov 2 15:20:37 2011
@@ -84,7 +84,18 @@ public abstract class AbstractNameMapper
subNameMapper = true;
}
- Iterator<NameMapper<T>> nameMapperIterator = getNameMapperList().iterator();
+ List<NameMapper<T>> nameMapperList = getNameMapperList();
+ List<NameMapper<T>> changeableList;
+ if (!subNameMapper && (getNameMapperList() instanceof CopyOnWriteArrayList))
+ {
+ // If we have a CopyOnWriteArrayList, we can't remove it so copy it to a temporary list
+ changeableList = new ArrayList<NameMapper<T>>(nameMapperList);
+ }
+ else
+ {
+ changeableList = nameMapperList;
+ }
+ Iterator<NameMapper<T>> nameMapperIterator = changeableList.iterator();
while (nameMapperIterator.hasNext())
{
if (subNameMapper)
@@ -104,6 +115,13 @@ public abstract class AbstractNameMapper
//break;
}
}
+ if (!subNameMapper && (getNameMapperList() instanceof CopyOnWriteArrayList))
+ {
+ // Set the correct content back in the CopyOnWriteArrayList
+ getNameMapperList().clear();
+ getNameMapperList().addAll(changeableList);
+ }
+
}
}