Image du projet 'Socle K-Sup' téléversée
  1. Socle K-Sup
  2. CORE-5698

A l'enregistrement d'une fiche, les cartes de layout sont supprimées de la bdd si la désérialisation du JSON échoue

XMLWordImprimable

    • Icon: Bug Bug
    • Résolution: Non résolu
    • Icon: Mineur Mineur
    • master, branche 6.8
    • master, branche 6.7, branche 6.8
    • Layout

      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

            arnaud.oisel Arnaud OISEL [X] (Inactif)
            arnaud.oisel Arnaud OISEL [X] (Inactif)
            Votes:
            0 Voter pour ce ticket
            Gérer les observateurs:
            1 Démarre l'observation de ce ticket

              Création:
              Mise à jour: