Skip to content

Update to CRDGenerator to use mbknor-jackson-jsonSchema #7447

@benkeil

Description

@benkeil

Is your enhancement related to a problem? Please describe

jackson-module-jsonSchema is deprecated and the docs suggest to switch to mbknor-jackson-jsonSchema.

It also has the benefit of allowing polymorphism, which actually produces unusable CRDs.

enum class ApplicationType {
  @JsonProperty("dbt") DBT,
  @JsonProperty("gravitas") GRAVITAS,
}

data class Application(
    val dataProductId: String,
    val type: ApplicationType,
    val config: ApplicationConfig,
)

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "type",
)
@JsonSubTypes(
    JsonSubTypes.Type(value = TbdApplicationConfig::class, name = "dbt"),
    JsonSubTypes.Type(value = GravitasApplicationConfig::class, name = "gravitas"),
)
sealed class ApplicationConfig

data class TbdApplicationConfig(
    val image: String,
    val startDate: OffsetDateTime,
    val schedule: String,
    val threads: Int = 1,
    val command: List<String>?,
    val arguments: List<String>?,
) : ApplicationConfig()

data class GravitasApplicationConfig(
    val threads: Int = 1,
) : ApplicationConfig()

Describe the solution you'd like

switch to the new, suggested module.

Describe alternatives you've considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions