difi / sikker-digital-post-klient-java

Java klient for integrasjon mot Digital post til innbyggere
http://begrep.difi.no/SikkerDigitalPost/
Apache License 2.0
3 stars 5 forks source link

FysiskPost: Inkonsistens i dokumentasjon og klientbibliotek knyttet til Land og Landkode #24

Closed aberner closed 9 years ago

aberner commented 9 years ago

I Følgende klasse: https://github.com/difi/sikker-digital-post-java-klient/blob/master/src/main/java/no/difi/sdp/client/domain/fysisk_post/KonvoluttAdresse.java

metoden: KonvoluttAdresse.iUtlandet

Så er det implementert at en Avsender skal enten legge inn en Landkode eller et Land.

Mens i dokumentasjonen av Fysiskpostadresse så er det definert at både Land og Landkode er påkrevd. ref: http://begrep.difi.no/SikkerDigitalPost/1.2.0.RC1/begrep/FysiskPostadresse

Jeg har oppfattet at Land og Landkode brukes begge to når adressen skal skrives ut på brevet. Landkoden plasseres forran postnummer og Land på en egen linje. Ref: http://www.posten.no/produkter-og-tjenester/adressering-til-mottakere-i-utlandet

runeflobakk commented 9 years ago

Godt poeng! Da jeg implementerte klassen tok jeg utgangspunkt i XSDen, hvor dette er uttrykt som en choice mellom land og landkode. Ref: https://github.com/difi/begrep-SikkerDigitalPost/blob/master/xsd/sdp-melding.xsd#L288-L291

Kort oppsummert er dette for å tilby fleksibilitet til avsender, da det mest korrekte ville vært å tilby at avsender kun kan angi landkode. Landkoden angir utvetydig hvilket land det skal sendes til, også vil det være opp til tjenesten å generere en korrekt postadresse som printes på konvolutt ut fra dette. I korte trekk vil det si at det gjøres et oppslag på landkoden for å finne navnet på landet skrevet på det landets språk hvor brevet sendes fra. Hvis avsender angir land i stedet for landkode så vil dette bli brukt verbatimt på konvolutten.

Hvis vi endrer fra choice til at både land og landkode er mandatory så åpner dette for at avsender kan angi inkonsistente verdier, og det må gjøres en vurdering av hvordan dette skal håndteres av printleverandør-tjenesten. Er det en feilsituasjon, ettersom avsenderen har angitt verdier som ikke samsvarer med hverandre? For tjenesten sin del del så har vi en landkode, og det er all informasjon vi trenger for å lage "land-spesifikke" elementer av postadressen som printes på konvolutt.

Det kan gjerne dokumenteres at som default bør man bruke landkode, da dette utvetydig angir landet. Man har mulighet til å angi land dersom man f.eks. bruker systemer som ikke har noe forhold til landkoder, men da legges det mer ansvar på avsender om at landet angis korrekt. Formålet er at brevet kommer frem, og det gjør det i de aller, aller fleste tilfeller. Man skal rote det ganske grundig til før Posten gir opp å tolke hvilket land et brev skal sendes til. I de tilfeller man angir et land (ikke landkode) som Posten ikke skjønner, så vil returhåndtering slå til alt etter hva avsender har angitt her.

aberner commented 9 years ago

@runeflobakk XSD'n kommer nok fra Posten sin eksisterende løsning, og ikke et aktivt bevist valg fra min side. Jeg oppfatter står da at Choice'n i xsd'n er et godt alternativt. Jeg oppfatter også at Landkode er det beste for Avsendere å velge. Da må dette dokumenteres og også komme tydelig frem i klient biblioteket.

Jeg forventer dermed at Posten håndterer alle landkoder som legges inn også dersom ikke Enum'n Landkoder brukes. Altså at Land blir skrevet ut på brevet så lenge landkoden er hentet fra: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

Avsendere som ikke har en http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Landkode kan bruke Land.

Er dette riktig oppfattet?

runeflobakk commented 9 years ago

Dette stemmer på en prikk!

Landkoder.Predefinert inneholder et knippe landkoder "for convenience" dersom man trenger det. I tillegg kan man angi en _ISO 3166-1alpha-2 kode med Landkoder.landkode(String)-metoden.

Gitt at landkoden som angis er gyldig i.h.t. ISO 3166-1_alpha-2 så skal den passere validering hos oss, og føre til riktig printet adresse på konvolutt.

Som du sier så bør foretrukket måte å angi land dokumenteres. Ang. tydeliggjøring i klientbiblioteket av at landkode er foretrukket, så har jeg ikke noe bedre forslag enn at jeg legger på Javadoc på de to metodene for å angi utenlandsk adresse, og skrive hvilken av de som foretrekkes med referanse til http://begrep.difi.no/SikkerDigitalPost/1.2.0.RC1/begrep/FysiskPostadresse. Er det tilstrekkelig?

aberner commented 9 years ago

Ja, dette bør komme frem i javadoc'n (og tilsvarende i .net klienten)

aberner commented 9 years ago

dokumentasjonen på begrep.difi.no er nå oppdatert, ref. https://github.com/difi/begrep-SikkerDigitalPost/issues/169

Når javadoc er på plass i klientbiblioteket kan denne saken lukkes.