diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache index c2b7f0c89dae..6d5fc85aa2d0 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache @@ -1,11 +1,16 @@ {{#jackson}} {{#discriminator.mappedModels}} {{#-first}} +{{^disableDiscriminatorJsonIgnoreProperties}} @JsonIgnoreProperties( value = "{{{discriminator.propertyBaseName}}}", // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization ) @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) +{{/disableDiscriminatorJsonIgnoreProperties}} +{{#disableDiscriminatorJsonIgnoreProperties}} + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) +{{/disableDiscriminatorJsonIgnoreProperties}} @JsonSubTypes({ {{/-first}} {{^vendorExtensions.x-discriminator-value}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 73ce5bf0a74e..5bf385895ac6 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -7596,4 +7596,20 @@ void oneOf_issue_14769() throws IOException { .isNormalClass() .extendsClass("VehicleDto"); } + + @Test + void disableDiscriminatorJsonIgnorePropertiesIsTrueThenJsonIgnorePropertiesShouldBeNotAdded() throws IOException { + final Map files = generateFromContract("src/test/resources/3_0/java/issue12777.yaml", SPRING_BOOT, + Map.of(DISABLE_DISCRIMINATOR_JSON_IGNORE_PROPERTIES, "true")); + JavaFileAssert.assertThat(files.get("BaseConfiguration.java")) + .assertTypeAnnotations().doesNotContainWithName("JsonIgnoreProperties"); + } + + @Test + void disableDiscriminatorJsonIgnorePropertiesIsTrueThenJsonIgnorePropertiesShouldBeAdded() throws IOException { + final Map files = generateFromContract("src/test/resources/3_0/java/issue12777.yaml", SPRING_BOOT, + Map.of(DISABLE_DISCRIMINATOR_JSON_IGNORE_PROPERTIES, "false")); + JavaFileAssert.assertThat(files.get("BaseConfiguration.java")) + .assertTypeAnnotations().containsWithName("JsonIgnoreProperties"); + } }