Closed vbombaerts closed 2 years ago
To reproduce
curl 'http://localhost:8080/geonetwork/srv/api/records/batchediting/preview?diffType=patch&uuids=db07463b-6769-401e-944b-f22e2e3bcc26' \
-H 'Accept: application/json, text/plain, */*' \
-H 'X-XSRF-TOKEN: 8ad98c39-e5fc-487e-8f52-6b208a116caa' \
-H 'Accept-Language: eng' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Cookie: XSRF-TOKEN=8ad98c39-e5fc-487e-8f52-6b208a116caa; JSESSIONID=node015sjv31fmd9af1urywim8a048p1.node0; serverTime=1649321454718; sessionExpiry=1649323554718' \
--data-raw $'[{"xpath":"/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor[1]","value":"<gn_add><mrd:distributor xmlns:mrd=\\"http://standards.iso.org/iso/19115/-3/mrd/1.0\\" xmlns:cit=\\"http://standards.iso.org/iso/19115/-3/cit/2.0\\" xmlns:gco=\\"http://standards.iso.org/iso/19115/-3/gco/1.0\\"><mrd:MD_Distributor><mrd:distributorContact><cit:CI_Responsibility><cit:role><cit:CI_RoleCode codeList=\\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\\" codeListValue=\\"distributor\\"/></cit:role><cit:party><cit:CI_Organisation><cit:name><gco:CharacterString>Institut Wallon de l\'Evaluation, de la Prospective et de la Statistique (IWEPS)</gco:CharacterString></cit:name><cit:contactInfo><cit:CI_Contact><cit:address><cit:CI_Address><cit:deliveryPoint><gco:CharacterString>Route de Louvain-la-neuve, 2</gco:CharacterString></cit:deliveryPoint><cit:city><gco:CharacterString>Namur</gco:CharacterString></cit:city><cit:postalCode><gco:CharacterString>5001</gco:CharacterString></cit:postalCode><cit:country><gco:CharacterString>Belgique</gco:CharacterString></cit:country><cit:electronicMailAddress><gco:CharacterString>info@iweps.be</gco:CharacterString></cit:electronicMailAddress></cit:CI_Address></cit:address><cit:onlineResource><cit:CI_OnlineResource><cit:linkage><gco:CharacterString>https://www.iweps.be/</gco:CharacterString></cit:linkage><cit:name><gco:CharacterString>https://www.iweps.be/</gco:CharacterString></cit:name></cit:CI_OnlineResource></cit:onlineResource></cit:CI_Contact></cit:contactInfo></cit:CI_Organisation></cit:party></cit:CI_Responsibility></mrd:distributorContact><mrd:distributionOrderProcess><mrd:MD_StandardOrderProcess><mrd:orderingInstructions><gco:CharacterString>Les données sont librement téléchargeables sur le portail Walstat ou via les liens fournis dans la fiche de métadonnées.</gco:CharacterString></mrd:orderingInstructions></mrd:MD_StandardOrderProcess></mrd:distributionOrderProcess></mrd:MD_Distributor></mrd:distributor></gn_add>"}]' \
--compressed
Distrbution section is created properly but an empty <mrd:distributor />
is inserted
</mrd:MD_Distributor>
</mrd:distributor>
<mrd:distributor />
</mrd:MD_Distribution>
</mdb:distributionInfo>
En fait, avec /mdb:distributionInfo/mrd:MD_Distribution
c'est bon. Ca pointe vers le parent qui va être créé et on fait l'insertion dedans en dernière position pour les éléments du même type.
Ensuite, si on ajoute une position `/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor[1] > en première place et va décaler l'existant. Mais s'il y a rien, ca ajoute un élément vide.
A voir si gérer via le parent mrd:MD_Distribution
est suffisant ?
/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor[111]
NullPointerException car l'élément cible n'existe pas - je sais pas bien ce qu'on devrait faire dans ce cas là?
Cf. https://github.com/geonetwork/core-geonetwork/pull/6239
Si vous avez des idées/retours sur les interfaces, n'hésitez pas.
A déployer en test.
Nickel
Quand joue un process add et que l'élément n'existe pas encore dans le xml, le process en ajoute 2 (dont un vide)
Originally posted by @vbombaerts in https://github.com/SPW-DIG/metawal-core-geonetwork/issues/728#issuecomment-1085659194