-
Bug
-
Résolution: Non résolu
-
Mineur
-
master, branche 6.7, branche 6.8
Description
Lorsqu'on enregistre une fiche avec une carte de layout avec un JSON corrompu pour X raisons (erreur lors de la désérialisation) , alors la carte est ignorée et n'est pas recréée.
Sachant que tel que conçu actuellement, l'enregistrement des cartes passe par une étape de suppression de toutes les cartes avant ça.
On se retrouve avec les cartes supprimées en base.
La cause racine du problème est bien le JSON corrompu mais même avec ce problème on ne devrait pas supprimer des cartes de la base de donnée à cause de cela.
Code à modifier
LayoutFichePluginHelper.java
public static Map<String, CardBean> retrieveModelFromDatas(Map<String, Object> datas, Layout layout, boolean resetIds) { final Map<String, CardBean> inputedModel = new HashMap<>(); for (Slot currentSlot : layout.getSlots()) { final String currentModel = (String) datas.get(String.format("jsonModel-%s", currentSlot.getKey().toString())); if (StringUtils.isNotBlank(currentModel)) { final CardBean currentInputedCard; try { currentInputedCard = CardUtil.getCardFromJson(currentModel); if (resetIds) { currentInputedCard.setId(null); } inputedModel.put(currentInputedCard.getKey().toString(), currentInputedCard); } catch (IOException e) { LOG.error(String.format("Une erreur est survenue lors de la récupération de la carte depuis le json \"%s\"", currentModel), e); } } } return inputedModel; }
Proposition de modification
Enlever le catch