Skip to content

Commit ecbb9cb

Browse files
committed
feat: propagate discriminator property to subtype models for optional getters
1 parent f1c6dde commit ecbb9cb

9 files changed

Lines changed: 63 additions & 29 deletions

File tree

  • modules/openapi-generator/src
  • samples/client/petstore/java
    • restclient-springBoot4-jackson3-jspecify-optional-getters/src/main/java/org/openapitools/client/model
    • resttemplate-springBoot4-jackson3-jspecify-optional-getters/src/main/java/org/openapitools/client/model
    • webclient-springBoot4-jackson3-jspecify-optional-getters/src/main/java/org/openapitools/client/model

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,39 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
806806
}
807807
}
808808

809+
// When optionalGettersForNullableFieldsOnly is enabled, propagate isDiscriminator=true
810+
// to subtype models that redefine a discriminator property from a parent/interface.
811+
// Without this, the template would generate Optional<T> for those fields, causing a
812+
// return-type incompatibility with the abstract getter declared by the parent interface.
813+
if (optionalGettersForNullableFieldsOnly) {
814+
for (ModelsMap modelsAttrs : objs.values()) {
815+
for (ModelMap mo : modelsAttrs.getModels()) {
816+
CodegenModel cm = mo.getModel();
817+
if (cm.discriminator != null) {
818+
String discPropName = cm.discriminator.getPropertyBaseName();
819+
// propagate to all known subtype models
820+
if (cm.discriminator.getMappedModels() != null) {
821+
for (CodegenDiscriminator.MappedModel mapped : cm.discriminator.getMappedModels()) {
822+
CodegenModel subModel = allModels.get(mapped.getModelName());
823+
if (subModel != null) {
824+
for (CodegenProperty var : subModel.vars) {
825+
if (discPropName.equals(var.baseName)) {
826+
var.isDiscriminator = true;
827+
}
828+
}
829+
for (CodegenProperty var : subModel.allVars) {
830+
if (discPropName.equals(var.baseName)) {
831+
var.isDiscriminator = true;
832+
}
833+
}
834+
}
835+
}
836+
}
837+
}
838+
}
839+
}
840+
}
841+
809842
if (isGenerateConstructorWithAllArgs()) {
810843
// conditionally force the generation of all args constructor.
811844
for (CodegenModel cm : allModels.values()) {

modules/openapi-generator/src/main/resources/Java/libraries/restclient/pojo.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v
218218
{{#deprecated}}
219219
@Deprecated
220220
{{/deprecated}}
221-
{{>nullable_var_annotations}}{{! prevent indent}}
221+
{{^optionalGettersForNullableFieldsOnly}}{{>nullable_var_annotations}}{{/optionalGettersForNullableFieldsOnly}}{{#optionalGettersForNullableFieldsOnly}}{{#required}}{{>nullable_var_annotations}}{{/required}}{{^required}}{{#isInherited}}{{>nullable_var_annotations}}{{/isInherited}}{{#isDiscriminator}}{{>nullable_var_annotations}}{{/isDiscriminator}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{! prevent indent}}
222222
{{#jsonb}}
223223
@JsonbProperty("{{baseName}}")
224224
{{/jsonb}}
@@ -240,12 +240,12 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v
240240
@JsonIgnore
241241
{{/vendorExtensions.x-is-jackson-optional-nullable}}
242242
{{^vendorExtensions.x-is-jackson-optional-nullable}}{{#jackson}}{{> jackson_annotations}}{{/jackson}}{{/vendorExtensions.x-is-jackson-optional-nullable}}
243-
public {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^vendorExtensions.x-is-jackson-optional-nullable}}java.util.Optional<{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDatatypeWithEnum}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^vendorExtensions.x-is-jackson-optional-nullable}}>{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
243+
public {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^vendorExtensions.x-is-jackson-optional-nullable}}java.util.Optional<{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDatatypeWithEnum}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^vendorExtensions.x-is-jackson-optional-nullable}}>{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
244244
{{#vendorExtensions.x-is-jackson-optional-nullable}}{{#isReadOnly}}{{! A readonly attribute doesn't have setter => jackson will set null directly if explicitly returned by API, so make sure we have an empty JsonNullable}}
245245
if ({{name}} == null) {
246246
{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
247247
}
248-
{{/isReadOnly}}return {{name}}.orElse(null);{{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}return {{#optionalGettersForNullableFieldsOnly}}{{^required}}java.util.Optional.ofNullable({{name}}){{/required}}{{#required}}{{name}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}{{name}}{{/optionalGettersForNullableFieldsOnly}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
248+
{{/isReadOnly}}return {{name}}.orElse(null);{{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}return {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}java.util.Optional.ofNullable({{name}}){{/isDiscriminator}}{{#isDiscriminator}}{{name}}{{/isDiscriminator}}{{/isInherited}}{{#isInherited}}{{name}}{{/isInherited}}{{/required}}{{#required}}{{name}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}{{name}}{{/optionalGettersForNullableFieldsOnly}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
249249
}
250250
251251
{{#vendorExtensions.x-is-jackson-optional-nullable}}

modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pojo.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
218218
{{#deprecated}}
219219
@Deprecated
220220
{{/deprecated}}
221-
{{>nullable_var_annotations}}{{! prevent indent}}
221+
{{^optionalGettersForNullableFieldsOnly}}{{>nullable_var_annotations}}{{/optionalGettersForNullableFieldsOnly}}{{#optionalGettersForNullableFieldsOnly}}{{#required}}{{>nullable_var_annotations}}{{/required}}{{^required}}{{#isInherited}}{{>nullable_var_annotations}}{{/isInherited}}{{#isDiscriminator}}{{>nullable_var_annotations}}{{/isDiscriminator}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{! prevent indent}}
222222
{{#jsonb}}
223223
@JsonbProperty("{{baseName}}")
224224
{{/jsonb}}
@@ -240,12 +240,12 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
240240
@JsonIgnore
241241
{{/vendorExtensions.x-is-jackson-optional-nullable}}
242242
{{^vendorExtensions.x-is-jackson-optional-nullable}}{{#jackson}}{{> jackson_annotations}}{{/jackson}}{{/vendorExtensions.x-is-jackson-optional-nullable}}
243-
public {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^vendorExtensions.x-is-jackson-optional-nullable}}java.util.Optional<{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDatatypeWithEnum}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^vendorExtensions.x-is-jackson-optional-nullable}}>{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
243+
public {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^vendorExtensions.x-is-jackson-optional-nullable}}java.util.Optional<{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDatatypeWithEnum}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^vendorExtensions.x-is-jackson-optional-nullable}}>{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
244244
{{#vendorExtensions.x-is-jackson-optional-nullable}}{{#isReadOnly}}{{! A readonly attribute doesn't have setter => jackson will set null directly if explicitly returned by API, so make sure we have an empty JsonNullable}}
245245
if ({{name}} == null) {
246246
{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
247247
}
248-
{{/isReadOnly}}return {{name}}.orElse(null);{{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}return {{#optionalGettersForNullableFieldsOnly}}{{^required}}java.util.Optional.ofNullable({{name}}){{/required}}{{#required}}{{name}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}{{name}}{{/optionalGettersForNullableFieldsOnly}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
248+
{{/isReadOnly}}return {{name}}.orElse(null);{{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}return {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}java.util.Optional.ofNullable({{name}}){{/isDiscriminator}}{{#isDiscriminator}}{{name}}{{/isDiscriminator}}{{/isInherited}}{{#isInherited}}{{name}}{{/isInherited}}{{/required}}{{#required}}{{name}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}{{name}}{{/optionalGettersForNullableFieldsOnly}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
249249
}
250250
251251
{{#vendorExtensions.x-is-jackson-optional-nullable}}

modules/openapi-generator/src/main/resources/Java/libraries/webclient/pojo.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v
218218
{{#deprecated}}
219219
@Deprecated
220220
{{/deprecated}}
221-
{{>nullable_var_annotations}}{{! prevent indent}}
221+
{{^optionalGettersForNullableFieldsOnly}}{{>nullable_var_annotations}}{{/optionalGettersForNullableFieldsOnly}}{{#optionalGettersForNullableFieldsOnly}}{{#required}}{{>nullable_var_annotations}}{{/required}}{{^required}}{{#isInherited}}{{>nullable_var_annotations}}{{/isInherited}}{{#isDiscriminator}}{{>nullable_var_annotations}}{{/isDiscriminator}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{! prevent indent}}
222222
{{#jsonb}}
223223
@JsonbProperty("{{baseName}}")
224224
{{/jsonb}}
@@ -240,12 +240,12 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v
240240
@JsonIgnore
241241
{{/vendorExtensions.x-is-jackson-optional-nullable}}
242242
{{^vendorExtensions.x-is-jackson-optional-nullable}}{{#jackson}}{{> jackson_annotations}}{{/jackson}}{{/vendorExtensions.x-is-jackson-optional-nullable}}
243-
public {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^vendorExtensions.x-is-jackson-optional-nullable}}java.util.Optional<{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDatatypeWithEnum}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^vendorExtensions.x-is-jackson-optional-nullable}}>{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
243+
public {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^vendorExtensions.x-is-jackson-optional-nullable}}java.util.Optional<{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDatatypeWithEnum}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^vendorExtensions.x-is-jackson-optional-nullable}}>{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
244244
{{#vendorExtensions.x-is-jackson-optional-nullable}}{{#isReadOnly}}{{! A readonly attribute doesn't have setter => jackson will set null directly if explicitly returned by API, so make sure we have an empty JsonNullable}}
245245
if ({{name}} == null) {
246246
{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
247247
}
248-
{{/isReadOnly}}return {{name}}.orElse(null);{{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}return {{#optionalGettersForNullableFieldsOnly}}{{^required}}java.util.Optional.ofNullable({{name}}){{/required}}{{#required}}{{name}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}{{name}}{{/optionalGettersForNullableFieldsOnly}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
248+
{{/isReadOnly}}return {{name}}.orElse(null);{{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}return {{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}java.util.Optional.ofNullable({{name}}){{/isDiscriminator}}{{#isDiscriminator}}{{name}}{{/isDiscriminator}}{{/isInherited}}{{#isInherited}}{{name}}{{/isInherited}}{{/required}}{{#required}}{{name}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}{{name}}{{/optionalGettersForNullableFieldsOnly}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
249249
}
250250
251251
{{#vendorExtensions.x-is-jackson-optional-nullable}}

modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,8 @@ public {{>sealed}}class {{classname}}{{#parent}} extends {{{parent}}}{{/parent}}
235235
{{#deprecated}}
236236
@Deprecated
237237
{{/deprecated}}
238-
{{#jackson}}{{>jackson_annotations}}{{/jackson}}{{#withXml}}{{>xmlAccessorAnnotation}}{{/withXml}} public {{>nullableAnnotation}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isNullable}}java.util.Optional<{{/isNullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDataTypeBeanValidation}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isNullable}}>{{/isNullable}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
239-
{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isNullable}}return java.util.Optional.ofNullable({{name}});{{/isNullable}}{{#isNullable}}return {{name}};{{/isNullable}}{{/required}}{{#required}}return {{name}};{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}return {{name}};{{/optionalGettersForNullableFieldsOnly}}
238+
{{#jackson}}{{>jackson_annotations}}{{/jackson}}{{#withXml}}{{>xmlAccessorAnnotation}}{{/withXml}} public {{^optionalGettersForNullableFieldsOnly}}{{>nullableAnnotation}}{{/optionalGettersForNullableFieldsOnly}}{{#optionalGettersForNullableFieldsOnly}}{{#required}}{{>nullableAnnotation}}{{/required}}{{^required}}{{#isInherited}}{{>nullableAnnotation}}{{/isInherited}}{{#isDiscriminator}}{{>nullableAnnotation}}{{/isDiscriminator}}{{^isInherited}}{{^isDiscriminator}}{{^isNullable}}java.util.Optional<{{/isNullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{>nullableDataTypeBeanValidation}}{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^isNullable}}>{{/isNullable}}{{/isDiscriminator}}{{/isInherited}}{{/required}}{{/optionalGettersForNullableFieldsOnly}} {{getter}}() {
239+
{{#optionalGettersForNullableFieldsOnly}}{{^required}}{{^isInherited}}{{^isDiscriminator}}{{^isNullable}}return java.util.Optional.ofNullable({{name}});{{/isNullable}}{{#isNullable}}return {{name}};{{/isNullable}}{{/isDiscriminator}}{{#isDiscriminator}}return {{name}};{{/isDiscriminator}}{{/isInherited}}{{#isInherited}}return {{name}};{{/isInherited}}{{/required}}{{#required}}return {{name}};{{/required}}{{/optionalGettersForNullableFieldsOnly}}{{^optionalGettersForNullableFieldsOnly}}return {{name}};{{/optionalGettersForNullableFieldsOnly}}
240240
}
241241
{{/lombok.Getter}}
242242

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5382,15 +5382,16 @@ void testOptionalGettersForNullableFieldsOnly() throws IOException {
53825382
)
53835383
);
53845384

5385-
// Non-required, non-nullable fields: getter returns Optional, field and setter stay raw.
5385+
// Non-required, non-nullable fields: getter returns Optional without @Nullable, field and setter stay raw.
53865386
JavaFileAssert.assertThat(files.get("SimpleObject.java"))
53875387
.fileContains(
5388-
"public @Nullable java.util.Optional<String> getSimple() {",
5388+
"public java.util.Optional<String> getSimple() {",
53895389
"return java.util.Optional.ofNullable(simple);",
53905390
"private @Nullable String simple;",
53915391
"public void setSimple(@Nullable String simple) {")
5392-
// The backing field and setter must remain the raw type, never Optional.
5392+
// @Nullable must NOT appear on the getter returning Optional (invalid with jspecify).
53935393
.fileDoesNotContain(
5394+
"public @Nullable java.util.Optional<String> getSimple()",
53945395
"private @Nullable java.util.Optional<String> simple;",
53955396
"public void setSimple(java.util.Optional<String> simple)");
53965397

samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify-optional-getters/src/main/java/org/openapitools/client/model/Foo.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public Foo dt(java.time.@Nullable Instant dt) {
8484
@JsonProperty(value = JSON_PROPERTY_DT, required = false)
8585
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
8686

87-
public java.util.Optional<java.time.@Nullable Instant> getDt() {
87+
public java.util.Optional<java.time.Instant> getDt() {
8888
return java.util.Optional.ofNullable(dt);
8989
}
9090

@@ -109,7 +109,7 @@ public Foo binary(@Nullable File binary) {
109109
@JsonProperty(value = JSON_PROPERTY_BINARY, required = false)
110110
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
111111

112-
public java.util.Optional<@Nullable File> getBinary() {
112+
public java.util.Optional<File> getBinary() {
113113
return java.util.Optional.ofNullable(binary);
114114
}
115115

@@ -142,7 +142,7 @@ public Foo addListOfDtItem(java.time.Instant listOfDtItem) {
142142
@JsonProperty(value = JSON_PROPERTY_LIST_OF_DT, required = false)
143143
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
144144

145-
public java.util.Optional<List<java.time.@Nullable Instant>> getListOfDt() {
145+
public java.util.Optional<List<java.time.Instant>> getListOfDt() {
146146
return java.util.Optional.ofNullable(listOfDt);
147147
}
148148

@@ -175,7 +175,7 @@ public Foo addListMinIntemsItem(java.time.Instant listMinIntemsItem) {
175175
@JsonProperty(value = JSON_PROPERTY_LIST_MIN_INTEMS, required = false)
176176
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
177177

178-
public java.util.Optional<List<java.time.@Nullable Instant>> getListMinIntems() {
178+
public java.util.Optional<List<java.time.Instant>> getListMinIntems() {
179179
return java.util.Optional.ofNullable(listMinIntems);
180180
}
181181

@@ -225,7 +225,7 @@ public Foo number(java.math.@Nullable BigDecimal number) {
225225
@JsonProperty(value = JSON_PROPERTY_NUMBER, required = false)
226226
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
227227

228-
public java.util.Optional<java.math.@Nullable BigDecimal> getNumber() {
228+
public java.util.Optional<java.math.BigDecimal> getNumber() {
229229
return java.util.Optional.ofNullable(number);
230230
}
231231

0 commit comments

Comments
 (0)