-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Non-nullable Long Kotlin data class field initialized with 0 when field is missing in payload #880
Comments
This issue seems to be related to this issue except for that
Please note that any default values in Kotlin data classes are ignored during deserialization in this issue. A possible workaround for returning 400 bad request when Long-value is missing in JSON, may be to use
Tests
|
Please create / update the sample app with your use case |
The behaviour is the same as a default in Jackson. The fix is a configuration to fail on null primitives. |
The test is reproducing Jackson's default behaviour with primitives and a way to change it micronaut-projects/micronaut-serialization#880
* fix(deps): update netty monorepo to v4.1.111.final (#10905) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Ensuring the deserialization has access to the ServerRequestContext (#10904) * Fixes #10665 Ensuring the deserialization has access to the ServerRequestContext * Adding a test to ensure that large request payloads still have access to the ServerRequestContext on deserialization. * Map of beans should always use bean definition to extract the name (#10908) * Improve the ControllerConstraintHandlerTest to accept more HttpRequest body types (#10909) * Add Kotlin+KSP+Jackson nullable tests (#10927) The test is reproducing Jackson's default behaviour with primitives and a way to change it micronaut-projects/micronaut-serialization#880 * Update common files (#10923) * Revert "Improve the ControllerConstraintHandlerTest to accept more HttpReques…" (#10922) This reverts commit 3744f17. * chore(deps): update plugin io.micronaut.build.shared.settings to v6.7.1 (#10770) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency io.github.classgraph:classgraph to v4.8.174 (#8882) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update vertx to v4.5.8 (#10863) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update groovy monorepo to v4.0.22 (#10939) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency me.champeau.gradle:japicmp-gradle-plugin to v0.4.3 (#10885) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update junit5 monorepo (#10945) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update Micronaut Maven Plugin coordinates (#10946) [skip ci] * include all non-accessible methods in reflection data (#10947) Fixes #10880 * Fix CompletableFuture responses without body (#10953) Fixes #10917 * fix(deps): update dependency com.fasterxml.jackson.dataformat:jackson-dataformat-yaml to v2.17.2 (#10954) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Merge remote-tracking branch 'origin/4.5.x' into merge_4_5_6 # Conflicts: # http-server-netty/src/main/java/io/micronaut/http/server/netty/binders/NettyBodyAnnotationBinder.java # inject/src/main/java/io/micronaut/context/DefaultBeanContext.java --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Luís Serralheiro <encavadas@gmail.com> Co-authored-by: Andriy Dmytruk <80816836+andriy-dmytruk@users.noreply.github.com> Co-authored-by: micronaut-build <65172877+micronaut-build@users.noreply.github.com> Co-authored-by: Jonas Konrad <jonas.konrad@oracle.com> Co-authored-by: Álvaro Sánchez-Mariscal <alvaro.sanchez-mariscal@oracle.com> Co-authored-by: Graeme Rocher <graeme.rocher@oracle.com>
Expected Behavior
Posting validated HTTP JSON Payloads with missing values for Non-nullable Long Kotlin data class fields should result in a 400 bad request response,
Actual Behaviour
Non-nullable Long Kotlin data class fields are initialized with 0 when the field is missing in the payload.
Strings for example behave differently. They don't get defaulted. Instead the result will be an 500 Internal server error with a NullPointerException happening on the server side.
Steps To Reproduce
Run tests in sample app
Environment Information
Windows 10 Java 21
Example Application
git@github.com:erkieh/demonullhandling.git
Version
4.5.0-SNAPSHOT
The text was updated successfully, but these errors were encountered: