Skip to content

Latest commit

 

History

History
96 lines (74 loc) · 3.08 KB

File metadata and controls

96 lines (74 loc) · 3.08 KB

✅ LØSNING FUNNET!

Problemet

Feilmeldingen:

Invalid content was found starting with element 'systemVersion'. 
One of 'koordinatsystemKodeId' is expected.

Årsaken

Vi setter ikke koordinatsystemKodeId i MatrikkelContext!

I vår kode (NedlastningClientWrapper.java):

MatrikkelContext context = new MatrikkelContext();
context.setLocale("no_NO");
context.setBrukOriginaleKoordinater(false);
context.setSystemVersion("1.0");  // ← Vi setter systemVersion
// ❌ MANGLER: context.setKoordinatsystemKodeId(...);
context.setKlientIdentifikasjon("BergenKommune-Java-Client");

I generert Java-klasse (MatrikkelContext.java):

@XmlType(name = "MatrikkelContext", propOrder = {
    "locale",
    "brukOriginaleKoordinater",
    "koordinatsystemKodeId",  // ← Denne MÅ settes (required=true)
    "systemVersion",           // ← Vi setter kun denne
    "klientIdentifikasjon",
    "snapshotVersion"
})
public class MatrikkelContext {
    @XmlElement(required = true)
    protected KoordinatsystemKodeId koordinatsystemKodeId;  // ← PÅKREVD!
}

Hvorfor feilen oppstår

Når JAX-WS serialiserer MatrikkelContext til XML:

  1. Den prøver å skrive koordinatsystemKodeId (required field)
  2. Men feltet er null fordi vi aldri satte det
  3. Den hopper over det og går til systemVersion
  4. Serveren får XML som starter med <systemVersion> i stedet for <koordinatsystemKodeId>
  5. Server/unmarshaller klager: "Expected koordinatsystemKodeId, found systemVersion"

Løsningen

Koordinatsystem-verdier for Norge (fra gammelt PHP-prosjekt):

9  = EUREF89 UTM Sone 31 (Vestlandet - Bergen)
10 = EUREF89 UTM Sone 32 (Østlandet - Oslo)
11 = EUREF89 UTM Sone 33 (Nordland/Troms)
24 = EUREF89 Geografisk

Riktig kode:

MatrikkelContext context = new MatrikkelContext();
context.setLocale("no_NO");
context.setBrukOriginaleKoordinater(false);

// ✅ LØSNING: Sett koordinatsystem FØRST (før systemVersion)
KoordinatsystemKodeId koordinatsystem = new KoordinatsystemKodeId();
koordinatsystem.setValue(9); // UTM Sone 31 (Bergen/Vestlandet)
context.setKoordinatsystemKodeId(koordinatsystem);

context.setSystemVersion("1.0");
context.setKlientIdentifikasjon("BergenKommune-Java-Client");

Hvorfor vi ikke oppdaget dette tidligere

  • XSD-filen viser at koordinatsystemKodeId eksisterer
  • Vi antok at alle felter var optional (minOccurs="0")
  • Men koordinatsystemKodeId har IKKE minOccurs="0" - den er påkrevd!
  • JAX-WS annotations bekrefter: @XmlElement(required = true)

Konklusjon

Problemet var IKKE i XSD-filene eller WSDL-versjonene.

Problemet var i vår Java-kode: Vi glemte å sette et påkrevd felt (koordinatsystemKodeId).


Til Support-henvendelse

Hvis dere fortsatt ønsker å kontakte support, kan dere nevne:

"Vi fant løsningen selv - vi hadde glemt å sette påkrevd felt koordinatsystemKodeId i MatrikkelContext. Det ville vært nyttig om WSDL/XSD-dokumentasjonen hadde en liste over påkrevde vs. valgfrie felter, eller et Java-eksempel som viser hvordan man skal opprette MatrikkelContext korrekt."