Author: chatellier Date: 2009-06-05 13:20:47 +0000 (Fri, 05 Jun 2009) New Revision: 2327 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java Log: Fix ConcurrentModificationException. Evite de modifier la collection pendant son parcourt. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2009-06-05 12:18:16 UTC (rev 2326) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2009-06-05 13:20:47 UTC (rev 2327) @@ -123,7 +123,7 @@ /** * Map entity key to {@link TopiaEntity}. */ - protected Map<String, TopiaEntity> currentEntities = new HashMap<String, TopiaEntity>(); + protected HashMap<String, TopiaEntity> currentEntities = new HashMap<String, TopiaEntity>(); protected HashSet<InputContentUI> currentPanels = new HashSet<InputContentUI>(); protected InputUI rootUI; @@ -339,18 +339,17 @@ } /** - * Cancel all modification on entity (rollback), and force reload it and - * refresh all ui component that name match 'type'Tab + * Cancel all modification on entity (rollback), and force reload it. */ protected void topiaCancel() { try { noModif(); isisContext.rollbackTransaction(); - Map<String, TopiaEntity> canceledEntity = new HashMap<String, TopiaEntity>(); - for (Entry<String, TopiaEntity> currentEntity : currentEntities - .entrySet()) { - TopiaEntity t = isisContext.findByTopiaId(currentEntity - .getValue().getTopiaId()); + Map<String, TopiaEntity> canceledEntity = (Map<String, TopiaEntity>)currentEntities.clone(); + + currentEntities.clear(); + for (Entry<String, TopiaEntity> currentEntity : canceledEntity.entrySet()) { + TopiaEntity t = isisContext.findByTopiaId(currentEntity.getValue().getTopiaId()); // TODO a quoi ca sert de recharger les entités ? // desynchronise la précédente @@ -363,8 +362,7 @@ rootUI.setTreeSelection(currentNode.getContextPath()); String key = currentEntity.getKey(); - canceledEntity.put(key, t); - addCurrentEntity(t); + addCurrentEntity(t, key); } // refresh all registred panel
participants (1)
-
chatellier@users.labs.libre-entreprise.org