Skip to content

Commit e4a26ce

Browse files
authored
[Java] Support JsonNullable in JaxRS-spec (issue #9018) (#22412)
* Support JsonNullable in JaxRS-spec * Add sample files that are now modified (new import) * Fix build issue with jaxrs-spec-microprofile-openapi-annotations sample
1 parent 1d79f36 commit e4a26ce

File tree

446 files changed

+494
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

446 files changed

+494
-0
lines changed

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@
5050
{{#useMutiny}}
5151
<smallrye.rest.client.version>1.2.1</smallrye.rest.client.version>
5252
{{/useMutiny}}
53+
{{#openApiNullable}}
54+
<jackson-databind-nullable-version>0.2.8</jackson-databind-nullable-version>
55+
{{/openApiNullable}}
5356
</properties>
5457
<dependencyManagement>
5558
<dependencies>
@@ -137,6 +140,13 @@
137140
<scope>test</scope>
138141
</dependency>
139142
{{/useMutiny}}
143+
{{#openApiNullable}}
144+
<dependency>
145+
<groupId>org.openapitools</groupId>
146+
<artifactId>jackson-databind-nullable</artifactId>
147+
<version>${jackson-databind-nullable-version}</version>
148+
</dependency>
149+
{{/openApiNullable}}
140150
</dependencies>
141151
<build>
142152
<plugins>

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import com.fasterxml.jackson.annotation.JsonCreator;
1111
import com.fasterxml.jackson.annotation.JsonValue;
1212
import com.fasterxml.jackson.annotation.JsonTypeName;
1313
{{/jackson}}
14+
{{#openApiNullable}}
15+
import org.openapitools.jackson.nullable.JsonNullable;
16+
{{/openApiNullable}}
1417
{{#withXml}}
1518
import {{javaxPackage}}.xml.bind.annotation.XmlElement;
1619
import {{javaxPackage}}.xml.bind.annotation.XmlRootElement;
@@ -47,7 +50,17 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}} {{#vendorExtens
4750
{{#vendorExtensions.x-field-extra-annotation}}
4851
{{{.}}}
4952
{{/vendorExtensions.x-field-extra-annotation}}
53+
{{#vendorExtensions.x-is-jackson-optional-nullable}}
54+
{{#isContainer}}
55+
private JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>undefined();
56+
{{/isContainer}}
57+
{{^isContainer}}
58+
private JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
59+
{{/isContainer}}
60+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
61+
{{^vendorExtensions.x-is-jackson-optional-nullable}}
5062
private {{#isContainer}}{{#useBeanValidation}}@Valid {{/useBeanValidation}}{{/isContainer}}{{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
63+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
5164
{{/vars}}
5265

5366
{{#generateBuilders}}
@@ -105,7 +118,12 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}} {{#vendorExtens
105118
{{/maximum}}
106119
**/
107120
public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
121+
{{#vendorExtensions.x-is-jackson-optional-nullable}}
122+
this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});
123+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
124+
{{^vendorExtensions.x-is-jackson-optional-nullable}}
108125
this.{{name}} = {{name}};
126+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
109127
return this;
110128
}
111129

@@ -117,16 +135,28 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}} {{#vendorExtens
117135
@Schema({{#example}}example = "{{{.}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}description = "{{{description}}}"){{/useSwaggerV3Annotations}}{{#useMicroProfileOpenAPIAnnotations}}
118136
@org.eclipse.microprofile.openapi.annotations.media.Schema({{#example}}example = "{{{.}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}description = "{{{description}}}"){{/useMicroProfileOpenAPIAnnotations}}
119137
{{#jackson}}@JsonProperty({{#required}}required = {{required}}, value = {{/required}}"{{baseName}}"){{/jackson}}
138+
{{#vendorExtensions.x-is-jackson-optional-nullable}}
139+
public JsonNullable<{{{datatypeWithEnum}}}> {{getter}}() {
140+
return {{name}};
141+
}
142+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
143+
{{^vendorExtensions.x-is-jackson-optional-nullable}}
120144
{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}}public {{>beanValidatedType}} {{getter}}() {
121145
return {{name}};
122146
}
147+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
123148

124149
{{#jackson}}
125150
@JsonProperty({{#required}}required = {{required}}, value = {{/required}}"{{baseName}}")
126151
{{/jackson}}
127152
{{#vendorExtensions.x-setter-extra-annotation}}{{{vendorExtensions.x-setter-extra-annotation}}}
128153
{{/vendorExtensions.x-setter-extra-annotation}}public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
154+
{{#vendorExtensions.x-is-jackson-optional-nullable}}
155+
this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});
156+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
157+
{{^vendorExtensions.x-is-jackson-optional-nullable}}
129158
this.{{name}} = {{name}};
159+
{{/vendorExtensions.x-is-jackson-optional-nullable}}
130160
}
131161

132162
{{#isArray}}

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.fasterxml.jackson.annotation.JsonCreator;
1515
import com.fasterxml.jackson.annotation.JsonValue;
1616
import com.fasterxml.jackson.annotation.JsonTypeName;
17+
import org.openapitools.jackson.nullable.JsonNullable;
1718

1819

1920

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.fasterxml.jackson.annotation.JsonCreator;
1616
import com.fasterxml.jackson.annotation.JsonValue;
1717
import com.fasterxml.jackson.annotation.JsonTypeName;
18+
import org.openapitools.jackson.nullable.JsonNullable;
1819

1920

2021

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.fasterxml.jackson.annotation.JsonCreator;
1515
import com.fasterxml.jackson.annotation.JsonValue;
1616
import com.fasterxml.jackson.annotation.JsonTypeName;
17+
import org.openapitools.jackson.nullable.JsonNullable;
1718

1819

1920

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.fasterxml.jackson.annotation.JsonCreator;
1717
import com.fasterxml.jackson.annotation.JsonValue;
1818
import com.fasterxml.jackson.annotation.JsonTypeName;
19+
import org.openapitools.jackson.nullable.JsonNullable;
1920

2021

2122

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.fasterxml.jackson.annotation.JsonCreator;
1515
import com.fasterxml.jackson.annotation.JsonValue;
1616
import com.fasterxml.jackson.annotation.JsonTypeName;
17+
import org.openapitools.jackson.nullable.JsonNullable;
1718

1819

1920

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.fasterxml.jackson.annotation.JsonCreator;
1616
import com.fasterxml.jackson.annotation.JsonValue;
1717
import com.fasterxml.jackson.annotation.JsonTypeName;
18+
import org.openapitools.jackson.nullable.JsonNullable;
1819

1920

2021

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.fasterxml.jackson.annotation.JsonCreator;
1515
import com.fasterxml.jackson.annotation.JsonValue;
1616
import com.fasterxml.jackson.annotation.JsonTypeName;
17+
import org.openapitools.jackson.nullable.JsonNullable;
1718

1819

1920

samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.fasterxml.jackson.annotation.JsonCreator;
1515
import com.fasterxml.jackson.annotation.JsonValue;
1616
import com.fasterxml.jackson.annotation.JsonTypeName;
17+
import org.openapitools.jackson.nullable.JsonNullable;
1718

1819

1920

0 commit comments

Comments
 (0)