Skip to content
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

Add Kotlin reflection support to ModelOptionsUtils #1667

Open
sdeleuze opened this issue Nov 4, 2024 · 1 comment
Open

Add Kotlin reflection support to ModelOptionsUtils #1667

sdeleuze opened this issue Nov 4, 2024 · 1 comment
Labels
enhancement New feature or request kotlin

Comments

@sdeleuze
Copy link
Contributor

sdeleuze commented Nov 4, 2024

As documented via #1666, schema generation from Kotlin classes currently requires using non idiomatic
code like data class Foo(@get:JsonProperty(required = true, value = "output") val bar: String) while the required information can be inferred from Kotlin null-safety and the value inferred from Kotlin reflection.

A related com.github.victools.jsonschema.generator.Module instance could be implemented and created when KotlinDetector.isKotlinReflectPresent() == true to provide those information automatically here.

That would allow to perform schema generation with just data class Foo(val bar: String).

@devcrocod
Copy link

Hi,

I have some question regarding this issue, please clarify follow points:

  • In a data class like data class Foo(val bar: String, val baz: String?), should the property baz be not marked as required in the generated JSON schema because it's nullable, even though it doesn't have a default value? Or should it only be considered not required if it has a default value, like in data class Foo(val bar: String, val baz: String? = null)?

  • Also about properties with default values: How should the module handle non-nullable properties with default values, such as in data class Foo(val bar: String, val baz: Int = 10)?

  • Should the same logic be handled for functions?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request kotlin
Projects
None yet
Development

No branches or pull requests

2 participants