FasterXML / jackson-module-kotlin

Module that adds support for serialization/deserialization of Kotlin (http://kotlinlang.org) classes and data classes.
Apache License 2.0
1.11k stars 175 forks source link

Return multiple missing kotlin parameters at once #806

Open jasiustasiu opened 1 month ago

jasiustasiu commented 1 month ago

Use case

We expose public API and we want to to be as descriptive as possible returning bad request response. So we want to return all required null fields at once. By using KotlinValueInstantiator and MissingKotlinParameterException we are able to return just one at the time. So we use @NotNull annotation validation but this requires us to mark non-null fields as nullable and then use ugly !! in the code eg.

data class Task(
    @field:NotNull
    val taskType: TaskType?,
    @field:NotNull
    val createdAt: Instant?,
    @field:NotNull
    val updatedAt: Instant?,
)

Describe the solution you'd like

It would be much nicer if exception thrown by jackson kotlin module contained all fields that are invalid (MissingKotlinParametersException with a list of missing parameters?). Then we could simplify example above to

data class Task(
    val taskType: TaskType,
    val createdAt: Instant,
    val updatedAt: Instant,
)

It could be configurable with some kind of flag to keep backward compatibility and not iterate through all fields if not necessary.

Describe alternatives you've considered

No response

Additional context

No response