nvdb-vegdata / nvdb-api-client

BSD-licensed open source Java library for consuming NVDB REST API
BSD 2-Clause "Simplified" License
13 stars 9 forks source link

NPE i RoadObjectRequest::toMutable #105

Closed okkero closed 3 years ago

okkero commented 3 years ago

RoadObjectRequest::toMutable kaster en NPE hvis allVersions ikke har blitt satt (f.eks ved å kalle withAllVersions på builderen).

Problemet bryter ned til bruk av Boolean wrapper-typen i feltene, mens parameteret til withAllVersions bruker boolean-primitiven. Så hvis et RoadObjectRequest-objekt har blitt bygget uten at allVersions har blitt satt, ender man opp med allVersions lik null. toMutable prøver så å kalle RoadObjectRequest.Builder::withAllVersions med RoadObjectRequest-objektets allVersions-verdi som umiddelbart konverteres til boolean, som ender opp med å kaste en NPE fordi null ikke er en gyldig boolean-verdi.

https://github.com/nvdb-vegdata/nvdb-api-client/blob/master/src/main/java/no/vegvesen/nvdbapi/client/clients/RoadObjectRequest.java#L532

johannsl commented 3 years ago

@okkero Tror du vi slipper unna med å bare bytte parameter typen til referansetypen Boolean?

Det kan jo potensielt brekke systemene til brukere, men det er jo ikke all verden å endre feks. true til Boolean.TRUE

okkero commented 3 years ago

Den løsningen skal være 100% bakoverkompatibel. Autoboxing tar seg av konverteringen fra true/false.

johannsl commented 3 years ago

https://github.com/nvdb-vegdata/nvdb-api-client/commit/ab914bfdd923abe09ae3c6ad5dfe8ece0f93a300 https://bintray.com/nvdb-vegdata/vegdata/nvdb-read-api-v3-client/1.16.2