-
Bug
-
Résolution: Non résolu
-
Mineur
-
master, branche 6.7, branche 6.8
-
Aucune
Lorsqu'on importe des fiches en utilisant un fichier dont le nom comporte des crochets, par exemple "test_fichier[2021].xml". La valeur suivante est insérée dans la colonne META_HISTORIQUE de la table METATAG_HISTORIQUE :
[CREATION/20210128123414/IMPORT.NOM.HISTORIQUE (test_fichier[2021].xml)/0003]
Or le scan site (notamment mais pas que) utilise la méthode :
com.univ.objetspartages.util.AffichageHistorique#instancierFicheHistoriqueDepuisInfoMeta
qui parse cette valeur comme ceci :
valeur = StringUtils.substringBetween(valeur, "[", "]"); final String[] valeursSplittes = valeur.split("/");
On se retrouve avec des "valeursSplittes" incorrectes, avec notamment un tableau de longueur 3 au lieu de 4.
On obtient ce type de log :
2021-01-26_01:59:01.390 [pool-5-thread-2] [] INFO com.univ.batch.process.ScanSite - ***** Formation ***** 2021-01-26_01:59:05.591 [pool-5-thread-2] [] ERROR com.univ.batch.process.ScanSite - Exception sur le traitement des fiches Formation java.lang.ArrayIndexOutOfBoundsException: 3 at com.univ.objetspartages.util.AffichageHistorique.instancierFicheHistoriqueDepuisInfoMeta(AffichageHistorique.java:94) at com.univ.objetspartages.util.AffichageHistorique.getHistorique(AffichageHistorique.java:71) at com.univ.batch.process.ScanSite.run(ScanSite.java:232) at com.univ.batch.process.ScanSite.perform(ScanSite.java:680) at com.kportal.scheduling.spring.quartz.LogReportJob.execute(LogReportJob.java:54) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
Le fix consiste je pense à transformer les crochets du nom d'un fichier en tirets par exemple avant insertion dans METATAG_HISTORIQUE.