in core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/AbstractNameMapperAwareFactory.java [77:125]
public synchronized void deregister(Class<? extends NameMapper> classToDeregister)
{
boolean subNameMapper = false;
if (classToDeregister != null && classToDeregister.isAnnotationPresent(Nested.class))
{
subNameMapper = true;
}
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)
{
NameMapper<T> nameMapper = nameMapperIterator.next();
if (nameMapper instanceof SubMapperAwareNameMapper)
{
((SubMapperAwareNameMapper) nameMapper).removeNameMapper(classToDeregister);
}
}
else
{
if (nameMapperIterator.next().getClass().getName().equals(classToDeregister.getName()))
{
nameMapperIterator.remove();
//don't break - e.g. to deregister all wrappers...
//break;
}
}
if (!subNameMapper && (getNameMapperList() instanceof CopyOnWriteArrayList))
{
// Set the correct content back in the CopyOnWriteArrayList
getNameMapperList().clear();
getNameMapperList().addAll(changeableList);
}
}
}