Skip to content

Commit cf58a42

Browse files
Slavek Kabrdawing328
authored andcommitted
[java][client] Don't include nullable attributes twice in serialized JSON (#3923)
* [java][client] Don't include nullable attributes twice in serialized JSON * Get rid of the extra added whitespace * Regenerate samples
1 parent 00c6e0a commit cf58a42

File tree

945 files changed

+19
-3349
lines changed

Some content is hidden

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

945 files changed

+19
-3349
lines changed

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -676,15 +676,17 @@ public Map<String, Object> postProcessModels(Map<String, Object> objs) {
676676
var.getVendorExtensions().put("isJacksonOptionalNullable", isOptionalNullable);
677677
}
678678
if (addImports) {
679-
cm.imports.add("JsonNullable");
680-
Map<String, String> itemJsonNullable = new HashMap<String, String>();
681-
itemJsonNullable.put("import", "org.openapitools.jackson.nullable.JsonNullable");
682-
imports.add(itemJsonNullable);
683-
684-
cm.imports.add("NoSuchElementException");
685-
Map<String, String> itemExc = new HashMap<String, String>();
686-
itemExc.put("import", "java.util.NoSuchElementException");
687-
imports.add(itemExc);
679+
Map<String, String> imports2Classnames = new HashMap<String, String>() {{
680+
put("JsonNullable", "org.openapitools.jackson.nullable.JsonNullable");
681+
put("NoSuchElementException", "java.util.NoSuchElementException");
682+
put("JsonIgnore", "com.fasterxml.jackson.annotation.JsonIgnore");
683+
}};
684+
for (Map.Entry<String, String> entry : imports2Classnames.entrySet()) {
685+
cm.imports.add(entry.getKey());
686+
Map<String, String> importsItem = new HashMap<String, String>();
687+
importsItem.put("import", entry.getValue());
688+
imports.add(importsItem);
689+
}
688690
}
689691
}
690692
}

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,10 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#parcela
182182
{{#vendorExtensions.extraAnnotation}}
183183
{{{vendorExtensions.extraAnnotation}}}
184184
{{/vendorExtensions.extraAnnotation}}
185+
{{#vendorExtensions.isJacksonOptionalNullable}}
186+
{{!unannotated, Jackson would pick this up automatically and add it *in addition* to the _JsonNullable getter field}}
187+
@JsonIgnore
188+
{{/vendorExtensions.isJacksonOptionalNullable}}
185189
{{^vendorExtensions.isJacksonOptionalNullable}}{{#jackson}}{{> jackson_annotations}}{{/jackson}}{{/vendorExtensions.isJacksonOptionalNullable}}
186190
public {{{datatypeWithEnum}}} {{getter}}() {
187191
{{#vendorExtensions.isJacksonOptionalNullable}}
@@ -202,16 +206,15 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#parcela
202206
public JsonNullable<{{{datatypeWithEnum}}}> {{getter}}_JsonNullable() {
203207
return {{name}};
204208
}
205-
{{/vendorExtensions.isJacksonOptionalNullable}}
206-
207-
{{^isReadOnly}}
208-
{{#vendorExtensions.isJacksonOptionalNullable}}
209+
{{/vendorExtensions.isJacksonOptionalNullable}}{{#vendorExtensions.isJacksonOptionalNullable}}
209210
@JsonProperty(JSON_PROPERTY_{{nameInSnakeCase}})
210-
public void {{setter}}_JsonNullable(JsonNullable<{{{datatypeWithEnum}}}> {{name}}) {
211+
{{#isReadOnly}}private{{/isReadOnly}}{{^isReadOnly}}public{{/isReadOnly}} void {{setter}}_JsonNullable(JsonNullable<{{{datatypeWithEnum}}}> {{name}}) {
212+
{{! For getters/setters that have name differing from attribute name, we must include setter (albeit private) for jackson to be able to set the attribute}}
211213
this.{{name}} = {{name}};
212214
}
213215
{{/vendorExtensions.isJacksonOptionalNullable}}
214216
217+
{{^isReadOnly}}
215218
public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
216219
{{#vendorExtensions.isJacksonOptionalNullable}}
217220
this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public String getName() {
5757
}
5858

5959

60-
6160
public void setName(String name) {
6261
this.name = name;
6362
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public String getName() {
5858
}
5959

6060

61-
6261
public void setName(String name) {
6362
this.name = name;
6463
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public String getName() {
5757
}
5858

5959

60-
6160
public void setName(String name) {
6261
this.name = name;
6362
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ public Map<String, String> getMapString() {
107107
}
108108

109109

110-
111110
public void setMapString(Map<String, String> mapString) {
112111
this.mapString = mapString;
113112
}
@@ -141,7 +140,6 @@ public Map<String, BigDecimal> getMapNumber() {
141140
}
142141

143142

144-
145143
public void setMapNumber(Map<String, BigDecimal> mapNumber) {
146144
this.mapNumber = mapNumber;
147145
}
@@ -175,7 +173,6 @@ public Map<String, Integer> getMapInteger() {
175173
}
176174

177175

178-
179176
public void setMapInteger(Map<String, Integer> mapInteger) {
180177
this.mapInteger = mapInteger;
181178
}
@@ -209,7 +206,6 @@ public Map<String, Boolean> getMapBoolean() {
209206
}
210207

211208

212-
213209
public void setMapBoolean(Map<String, Boolean> mapBoolean) {
214210
this.mapBoolean = mapBoolean;
215211
}
@@ -243,7 +239,6 @@ public Map<String, List<Integer>> getMapArrayInteger() {
243239
}
244240

245241

246-
247242
public void setMapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
248243
this.mapArrayInteger = mapArrayInteger;
249244
}
@@ -277,7 +272,6 @@ public Map<String, List<Object>> getMapArrayAnytype() {
277272
}
278273

279274

280-
281275
public void setMapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
282276
this.mapArrayAnytype = mapArrayAnytype;
283277
}
@@ -311,7 +305,6 @@ public Map<String, Map<String, String>> getMapMapString() {
311305
}
312306

313307

314-
315308
public void setMapMapString(Map<String, Map<String, String>> mapMapString) {
316309
this.mapMapString = mapMapString;
317310
}
@@ -345,7 +338,6 @@ public Map<String, Map<String, Object>> getMapMapAnytype() {
345338
}
346339

347340

348-
349341
public void setMapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
350342
this.mapMapAnytype = mapMapAnytype;
351343
}
@@ -371,7 +363,6 @@ public Object getAnytype1() {
371363
}
372364

373365

374-
375366
public void setAnytype1(Object anytype1) {
376367
this.anytype1 = anytype1;
377368
}
@@ -397,7 +388,6 @@ public Object getAnytype2() {
397388
}
398389

399390

400-
401391
public void setAnytype2(Object anytype2) {
402392
this.anytype2 = anytype2;
403393
}
@@ -423,7 +413,6 @@ public Object getAnytype3() {
423413
}
424414

425415

426-
427416
public void setAnytype3(Object anytype3) {
428417
this.anytype3 = anytype3;
429418
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public String getName() {
5757
}
5858

5959

60-
6160
public void setName(String name) {
6261
this.name = name;
6362
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public String getName() {
5858
}
5959

6060

61-
6261
public void setName(String name) {
6362
this.name = name;
6463
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public String getName() {
5757
}
5858

5959

60-
6160
public void setName(String name) {
6261
this.name = name;
6362
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public String getName() {
5757
}
5858

5959

60-
6160
public void setName(String name) {
6261
this.name = name;
6362
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Animal.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public String getClassName() {
6666
}
6767

6868

69-
7069
public void setClassName(String className) {
7170
this.className = className;
7271
}
@@ -92,7 +91,6 @@ public String getColor() {
9291
}
9392

9493

95-
9694
public void setColor(String color) {
9795
this.color = color;
9896
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public List<List<BigDecimal>> getArrayArrayNumber() {
6666
}
6767

6868

69-
7069
public void setArrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
7170
this.arrayArrayNumber = arrayArrayNumber;
7271
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public List<BigDecimal> getArrayNumber() {
6666
}
6767

6868

69-
7069
public void setArrayNumber(List<BigDecimal> arrayNumber) {
7170
this.arrayNumber = arrayNumber;
7271
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ public List<String> getArrayOfString() {
7474
}
7575

7676

77-
7877
public void setArrayOfString(List<String> arrayOfString) {
7978
this.arrayOfString = arrayOfString;
8079
}
@@ -108,7 +107,6 @@ public List<List<Long>> getArrayArrayOfInteger() {
108107
}
109108

110109

111-
112110
public void setArrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
113111
this.arrayArrayOfInteger = arrayArrayOfInteger;
114112
}
@@ -142,7 +140,6 @@ public List<List<ReadOnlyFirst>> getArrayArrayOfModel() {
142140
}
143141

144142

145-
146143
public void setArrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
147144
this.arrayArrayOfModel = arrayArrayOfModel;
148145
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Capitalization.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ public String getSmallCamel() {
7575
}
7676

7777

78-
7978
public void setSmallCamel(String smallCamel) {
8079
this.smallCamel = smallCamel;
8180
}
@@ -101,7 +100,6 @@ public String getCapitalCamel() {
101100
}
102101

103102

104-
105103
public void setCapitalCamel(String capitalCamel) {
106104
this.capitalCamel = capitalCamel;
107105
}
@@ -127,7 +125,6 @@ public String getSmallSnake() {
127125
}
128126

129127

130-
131128
public void setSmallSnake(String smallSnake) {
132129
this.smallSnake = smallSnake;
133130
}
@@ -153,7 +150,6 @@ public String getCapitalSnake() {
153150
}
154151

155152

156-
157153
public void setCapitalSnake(String capitalSnake) {
158154
this.capitalSnake = capitalSnake;
159155
}
@@ -179,7 +175,6 @@ public String getScAETHFlowPoints() {
179175
}
180176

181177

182-
183178
public void setScAETHFlowPoints(String scAETHFlowPoints) {
184179
this.scAETHFlowPoints = scAETHFlowPoints;
185180
}
@@ -205,7 +200,6 @@ public String getATTNAME() {
205200
}
206201

207202

208-
209203
public void setATTNAME(String ATT_NAME) {
210204
this.ATT_NAME = ATT_NAME;
211205
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Cat.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public Boolean isDeclawed() {
5757
}
5858

5959

60-
6160
public void setDeclawed(Boolean declawed) {
6261
this.declawed = declawed;
6362
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/CatAllOf.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public Boolean isDeclawed() {
5555
}
5656

5757

58-
5958
public void setDeclawed(Boolean declawed) {
6059
this.declawed = declawed;
6160
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Category.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ public Long getId() {
5959
}
6060

6161

62-
6362
public void setId(Long id) {
6463
this.id = id;
6564
}
@@ -84,7 +83,6 @@ public String getName() {
8483
}
8584

8685

87-
8886
public void setName(String name) {
8987
this.name = name;
9088
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ClassModel.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ public String getPropertyClass() {
5656
}
5757

5858

59-
6059
public void setPropertyClass(String propertyClass) {
6160
this.propertyClass = propertyClass;
6261
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Client.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public String getClient() {
5555
}
5656

5757

58-
5958
public void setClient(String client) {
6059
this.client = client;
6160
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Dog.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public String getBreed() {
5757
}
5858

5959

60-
6160
public void setBreed(String breed) {
6261
this.breed = breed;
6362
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/DogAllOf.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public String getBreed() {
5555
}
5656

5757

58-
5958
public void setBreed(String breed) {
6059
this.breed = breed;
6160
}

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ public JustSymbolEnum getJustSymbol() {
131131
}
132132

133133

134-
135134
public void setJustSymbol(JustSymbolEnum justSymbol) {
136135
this.justSymbol = justSymbol;
137136
}
@@ -165,7 +164,6 @@ public List<ArrayEnumEnum> getArrayEnum() {
165164
}
166165

167166

168-
169167
public void setArrayEnum(List<ArrayEnumEnum> arrayEnum) {
170168
this.arrayEnum = arrayEnum;
171169
}

0 commit comments

Comments
 (0)