Fout in StufUtil.hasKerngegevens(object, "NPS");

9 reacties / 0 nieuw
Lex Uijthof
Fout in StufUtil.hasKerngegevens(object, "NPS");

Goedemorgen,

Bij het verwerken van een npsLk01 bericht waarbij een NPS een sub.verblijfBuitenland element bevat en dus geen verblijfadres krijg ik een STV0000050 (Indien sleutelOntvangend ontbreekt dienen alle kerngegevens aanwezig te zijn.) 
Het maakt niet uit of ik een toevoeging of een mutatie bericht stuur overigens.
Volgens de schema's moet er of een verblijfadres in of een sub.verblijfBuitenland en niet beide.

Mijn bericht voldoet naar mijn mening volledig aan de specificatie, dus ben ik gaan kijken in hoe het STP tot een STV0000050 komt. 

In de foutmelding op het STP staat de volgende code in tab Implementatie van het testregel schermpje bij de bovengenoemde fout.

import nl.jnc.stv.util.XPathProcessor;
import nl.jnc.stv.common.ScriptStatus

def returnVal = new ScriptStatus();
returnVal.succeeded = true;

def proc = new XPathProcessor()
def pr = StufUtil.getSectormodelPrefix(request);
def nodesList = proc.getXPathNodeList(request, '//' + pr + ':object');

for (int i = 0; i < nodesList.size(); i++) {
    def object = nodesList.get(i);
    def attr = object.getAttributeNodeNS('http://www.egem.nl/StUF/StUF0301', 'sleutelOntvangend');
    returnVal.succeeded &= (attr != null);
}
if (returnVal.succeeded) {
    return returnVal;
}

returnVal.succeeded = true;
for (int i = 0; i < nodesList.size(); i++) {
    def object = nodesList.get(i);
    def type = object.getAttributeNS('http://www.egem.nl/StUF/StUF0301', 'entiteittype');
    def isOk = StufUtil.hasKerngegevens(object, type);
    returnVal.succeeded &= isOk;
}
return returnVal;

Aangezien ik geen sleutelOntvangend heb moet de foutmelding afkomstig zijn uit de functie "StufUtil.hasKerngegevens(object, type);"

Hier staat het volgende m.b.t. entiteitType "NPS" :

else if (entityType == 'NPS') {
def result1 = proc.getXPathNode(element, 'bg:inp.bsn') != null;
result1 = result && proc.getXPathNode(element, 'bg:authentiek') != null;
result = result1 | proc.getXPathNode(element, 'bg:ann.identificatie') != null;

result = result && proc.getXPathNode(element, 'bg:inp.a-nummer') != null;
result = result && proc.getXPathNode(element, 'bg:geslachtsnaam') != null;
result = result && proc.getXPathNode(element, 'bg:voorvoegselGeslachtsnaam') != null;
result = result && proc.getXPathNode(element, 'bg:voorletters') != null;
result = result && proc.getXPathNode(element, 'bg:voornamen') != null;
result = result && proc.getXPathNode(element, 'bg:geslachtsaanduiding') != null;
result = result && proc.getXPathNode(element, 'bg:geboortedatum') != null;

def result2 = proc.getXPathNode(element, 'bg:verblijfsadres') != null;
result2 |= proc.getXPathNode(element, 'bg:sub.verblijfBuitenland') != null;

result = result && result2;

// result = result && proc.getXPathNode(element, 'bg:gerelateerde') != null;
// result = result && proc.getXPathNode(element, 'bg:datumSluiting') != null;

result = result && proc.getXPathNode(element, './/bg:aoa.identificatie') != null;
result = result && proc.getXPathNode(element, './/bg:authentiek') != null;
result = result && proc.getXPathNode(element, './/bg:wpl.woonplaatsNaam') != null;
result = result && proc.getXPathNode(element, './/bg:gor.openbareRuimteNaam') != null;
result = result && proc.getXPathNode(element, './/bg:aoa.postcode') != null;
result = result && proc.getXPathNode(element, './/bg:aoa.huisnummer') != null;
result = result && proc.getXPathNode(element, './/bg:aoa.huisletter') != null;
result = result && proc.getXPathNode(element, './/bg:aoa.huisnummertoevoeging') != null;
result = result && proc.getXPathNode(element, './/bg:inp.locatiebeschrijving') != null;

Hier wordt gecontroleerd of er een bg:verblijfsadres of een bg:sub.verblijfBuitenland aanwezig is en ongeacht welke van de 2 aanwezig is wordt er vervolgens gecontroleerd of de kerngegevens bg:verblijfsadres aanwezig zijn.
In mijn bericht staat een sub.verblijfBuitenland en de STV0000050 wordt dus ten onrechte opgeworpen omdat ik de kerngegevens van bg:verblijfsadres niet heb.

Ik zou graag willen dat de functie StufUtil.hasKerngegevens voor type = "NPS" aangepast wordt dat de kerngegevens bg:verblijfsadres alleen gecontroleerd worden indien proc.getXPathNode(element, 'bg:verblijfsadres') != null

Mvg,

Lex

 

Frank Samwel

Beste Lex, dank voor de melding. We hebben de fout gecorrigeerd. De regel controleerde inderdaad de aanwezigheid van elementen uit verblijfsadres, terwijl die uiteraard niet verplicht kunnen zijn wanneer sub.verblijfBuitenland aanwezig is. Dit is nu aangepast, zodat de regel deze elementen niet meer verwacht wanneer sub.verblijfBuitenland in het bericht is opgenomen.

Lex Uijthof

Hallo Frank,

Bedankt voor het snel oppakken van dit issue.
Kan je mij ook vertellen wanneer deze fix geïmplementeerd wordt, gezien deze controle er op dit moment nog in zit?

Mvg,

Lex

 

Frank Samwel

Beste Lex, we hebben de fix inmiddels geïmplementeerd. Vriendelijke groeten, Frank Samwel

Lex Uijthof

Hallo Frank,

Bedankt voor de snelle fix.

Ik stuit nu tegen een andere en naar mijn idee onjuiste fout en ik weet niet of deze hiervoor ook gemeld werd.
WIl je dat ik hier een apart topic voor open, of kan ik deze hier nog kwijt?

Mvg,

Lex

 

Frank Samwel

Beste Lex, wanneer het echt een andere regel of ander issue betreft, zou je hiervoor dan een nieuw topic willen starten?

Maarten van den...

Binnen bg0310 en mogelijk ook binnen zkn0310 wordt op meer plaatsen de constructie met een choice gebruikt. Is het door Lex gemelde probleem inmiddels opgelost voor elk voorkomen van een choice of alleen voor het door hem aangedragen probleem?

Frank Samwel

Maarten,

Het probleem zat in specifieke code voor het controleren van entiteittype NPS, en is dus alleen daar gecorrigeerd. Heb je aanleiding te denken dat dit ook voor andere entiteittypen niet goed wordt gecontroleerd in het StUF Testplatform?

Maarten van den...

Hallo Frank,

Het feit dat het specifieke code is, was aanleiding voor mijn zorg. Op het moment dat het hier vergeten is om het correct te implementeren, zou dat ook wel eens het geval kunnen zijn op andere plaatsen. Ik zou op zijn minst een paar van die andere plaatsen checken.