Я использую общий конвертер сущностей в своем проекте.Я заметил, что иногда конвертер выдает java.util.ConcurrentModificationException
Существует также 4 года Пост , на который нет ответа.
Я пытался использовать Iterator
вместо простого for-loop
но это не помогло.
Есть ли способ создать поточно-ориентированный конвертер?
@FacesConverter(value = "entityConverter")
public class EntityConverter implements Converter {
private static Map<Object, String> entities = new WeakHashMap<Object, String>();
@Override
public String getAsString(FacesContext context, UIComponent component, Object entity) {
synchronized (entities) {
if (!entities.containsKey(entity)) {
String uuid = UUID.randomUUID().toString();
entities.put(entity, uuid);
return uuid;
} else {
return entities.get(entity);
}
}
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String uuid) {
Iterator<Map.Entry<Object, String>> tempIt = entities.entrySet().iterator();
while (tempIt.hasNext()) {
Map.Entry<Object, String> nextObj = tempIt.next();
if (nextObj.getValue().equals(uuid)) {
return nextObj.getKey();
}
}
return null;
}
}