Steps to reproduce
- Having a content type with a lot of complicated fields, multiple tabs and imbricated repeaters, so interface can be a little slow.
- Create repeater entries
- Create a sub repeater entry on one repeater entry then move the order (of the principal entry) fastly to the top or the bottom (to be very fast, add the entry with the keyboard and prepare your mouse to move the principal entry or inversely)
- Try to save, you should get this error:
[...]Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "java.util.Map.get(Object)" is null at org.ametys.cms.workflow.EditContentFunction.lambda$_parseValues$10(EditContentFunction.java:652) at org.ametys.plugins.repository.model.ViewHelper.visitView(ViewHelper.java:76) at org.ametys.cms.workflow.EditContentFunction._parseValues(EditContentFunction.java:572) at org.ametys.cms.workflow.EditContentFunction.lambda$_parseValues$10(EditContentFunction.java:659) at org.ametys.plugins.repository.model.ViewHelper.visitView(ViewHelper.java:76) at org.ametys.cms.workflow.EditContentFunction._parseValues(EditContentFunction.java:572) at org.ametys.cms.workflow.EditContentFunction.lambda$_parseValues$11(EditContentFunction.java:666) at org.ametys.plugins.repository.model.ViewHelper.visitView(ViewHelper.java:81) at org.ametys.cms.workflow.EditContentFunction._parseValues(EditContentFunction.java:572) at org.ametys.cms.workflow.EditContentFunction.getValues(EditContentFunction.java:554) at org.ametys.cms.workflow.EditContentFunction.execute(EditContentFunction.java:247) [...]
Data send to the EditContentFunction contains a size for a repeater without any data:
_content.input.conditionAcces[5]/previous-position=6 content.input.conditionAcces[5]/libelle=toto content.input.conditionAcces[5]/anneeAdmission=null content.input.conditionAcces[5]/niveauEtude=null content.input.conditionAcces[5]/modalites=[] content.input.conditionAcces[5]/admissionCommune=null content.input.conditionAcces[5]/admissionSurDossier=false content.input.conditionAcces[5]/admissionSurTest=false content.input.conditionAcces[5]/admissionSurEntretien=false content.input.conditionAcces[5]/modaliteAdmission= content.input.conditionAcces[5]/url=null _content.input.conditionAcces[5]/calendrier/size=0 _content.input.conditionAcces[5]/statistiques/size=1 content.input.conditionAcces[5]/procedureAPB=false content.input.conditionAcces[5]/admissionDeDroit=false content.input.conditionAcces[5]/admissionSurConcoursPropre=false content.input.conditionAcces[5]/publicCible=[] content.input.conditionAcces[5]/aireGeographique=null content.input.conditionAcces[5]/anneeReference=null content.input.conditionAcces[5]/coutInscription=null content.input.conditionAcces[5]/devise=content://22506607-1e30-4e2b-a116-0db8440fb7b9 content.input.conditionAcces[5]/commentaireCoutInscription= content.input.conditionAcces[5]/typeDiplomeRequis=[] content.input.conditionAcces[5]/formationRequise=[] content.input.conditionAcces[5]/prerequis= content.input.conditionAcces[5]/ageMin=null content.input.conditionAcces[5]/ageMax=null content.input.conditionAcces[5]/commentaireAge=
If the "statistiques" field is real (I don't know because I didn't count before how many were there), it hasn't been validated either.