Skip to content

Commit a05f684

Browse files
nickmeinholdwing328
authored andcommitted
[Dart] Avoid redundant null checking in fromJson (#3632)
* Move dart null checks inside mustache type checks - removed surrounding null check - added a conditional expression to each case except the redundant one * Run shell scripts so CIs can verify the change
1 parent 15f680e commit a05f684

27 files changed

Lines changed: 287 additions & 689 deletions

File tree

modules/openapi-generator/src/main/resources/dart2/class.mustache

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,63 @@ class {{classname}} {
1616
{{classname}}.fromJson(Map<String, dynamic> json) {
1717
if (json == null) return;
1818
{{#vars}}
19-
if (json['{{baseName}}'] == null) {
20-
{{name}} = null;
21-
} else {
2219
{{#isDateTime}}
23-
{{name}} = DateTime.parse(json['{{baseName}}']);
20+
{{name}} = (json['{{baseName}}'] == null) ?
21+
null :
22+
DateTime.parse(json['{{baseName}}']);
2423
{{/isDateTime}}
2524
{{#isDate}}
26-
{{name}} = DateTime.parse(json['{{baseName}}']);
25+
{{name}} = (json['{{baseName}}'] == null) ?
26+
null :
27+
DateTime.parse(json['{{baseName}}']);
2728
{{/isDate}}
2829
{{^isDateTime}}
2930
{{^isDate}}
3031
{{#complexType}}
3132
{{#isListContainer}}
32-
{{name}} = {{complexType}}.listFromJson(json['{{baseName}}']);
33+
{{name}} = (json['{{baseName}}'] == null) ?
34+
null :
35+
{{complexType}}.listFromJson(json['{{baseName}}']);
3336
{{/isListContainer}}
3437
{{^isListContainer}}
3538
{{#isMapContainer}}
36-
{{name}} = {{complexType}}.mapFromJson(json['{{baseName}}']);
39+
{{name}} = (json['{{baseName}}'] == null) ?
40+
null :
41+
{{complexType}}.mapFromJson(json['{{baseName}}']);
3742
{{/isMapContainer}}
3843
{{^isMapContainer}}
39-
{{name}} = {{complexType}}.fromJson(json['{{baseName}}']);
44+
{{name}} = (json['{{baseName}}'] == null) ?
45+
null :
46+
{{complexType}}.fromJson(json['{{baseName}}']);
4047
{{/isMapContainer}}
4148
{{/isListContainer}}
4249
{{/complexType}}
4350
{{^complexType}}
4451
{{#isListContainer}}
45-
{{name}} = (json['{{baseName}}'] as List).cast<{{items.datatype}}>();
52+
{{name}} = (json['{{baseName}}'] == null) ?
53+
null :
54+
(json['{{baseName}}'] as List).cast<{{items.datatype}}>();
4655
{{/isListContainer}}
4756
{{^isListContainer}}
4857
{{#isMapContainer}}
49-
{{name}} = (json['{{baseName}}'] as Map).cast<String, {{items.datatype}}>();
58+
{{name}} = (json['{{baseName}}'] == null) ?
59+
null :
60+
(json['{{baseName}}'] as Map).cast<String, {{items.datatype}}>();
5061
{{/isMapContainer}}
5162
{{^isMapContainer}}
52-
{{#isDouble}}
53-
{{name}} = json['{{baseName}}'].toDouble();
54-
{{/isDouble}}
55-
{{^isDouble}}
56-
{{name}} = json['{{baseName}}'];
57-
{{/isDouble}}
63+
{{#isDouble}}
64+
{{name}} = (json['{{baseName}}'] == null) ?
65+
null :
66+
json['{{baseName}}'].toDouble();
67+
{{/isDouble}}
68+
{{^isDouble}}
69+
{{name}} = json['{{baseName}}'];
70+
{{/isDouble}}
5871
{{/isMapContainer}}
5972
{{/isListContainer}}
6073
{{/complexType}}
6174
{{/isDate}}
6275
{{/isDateTime}}
63-
}
6476
{{/vars}}
6577
}
6678

samples/client/petstore/dart/flutter_petstore/openapi/lib/model/api_response.dart

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ part of openapi.api;
22

33
class ApiResponse {
44

5-
int code = null;
5+
int code = null;
66

7-
String type = null;
7+
String type = null;
88

9-
String message = null;
9+
String message = null;
1010
ApiResponse();
1111

1212
@override
@@ -16,21 +16,9 @@ class ApiResponse {
1616

1717
ApiResponse.fromJson(Map<String, dynamic> json) {
1818
if (json == null) return;
19-
if (json['code'] == null) {
20-
code = null;
21-
} else {
22-
code = json['code'];
23-
}
24-
if (json['type'] == null) {
25-
type = null;
26-
} else {
27-
type = json['type'];
28-
}
29-
if (json['message'] == null) {
30-
message = null;
31-
} else {
32-
message = json['message'];
33-
}
19+
code = json['code'];
20+
type = json['type'];
21+
message = json['message'];
3422
}
3523

3624
Map<String, dynamic> toJson() {

samples/client/petstore/dart/flutter_petstore/openapi/lib/model/category.dart

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ part of openapi.api;
22

33
class Category {
44

5-
int id = null;
5+
int id = null;
66

7-
String name = null;
7+
String name = null;
88
Category();
99

1010
@override
@@ -14,16 +14,8 @@ class Category {
1414

1515
Category.fromJson(Map<String, dynamic> json) {
1616
if (json == null) return;
17-
if (json['id'] == null) {
18-
id = null;
19-
} else {
20-
id = json['id'];
21-
}
22-
if (json['name'] == null) {
23-
name = null;
24-
} else {
25-
name = json['name'];
26-
}
17+
id = json['id'];
18+
name = json['name'];
2719
}
2820

2921
Map<String, dynamic> toJson() {

samples/client/petstore/dart/flutter_petstore/openapi/lib/model/inline_object.dart

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ part of openapi.api;
22

33
class InlineObject {
44
/* Updated name of the pet */
5-
String name = null;
5+
String name = null;
66
/* Updated status of the pet */
7-
String status = null;
7+
String status = null;
88
InlineObject();
99

1010
@override
@@ -14,16 +14,8 @@ class InlineObject {
1414

1515
InlineObject.fromJson(Map<String, dynamic> json) {
1616
if (json == null) return;
17-
if (json['name'] == null) {
18-
name = null;
19-
} else {
20-
name = json['name'];
21-
}
22-
if (json['status'] == null) {
23-
status = null;
24-
} else {
25-
status = json['status'];
26-
}
17+
name = json['name'];
18+
status = json['status'];
2719
}
2820

2921
Map<String, dynamic> toJson() {

samples/client/petstore/dart/flutter_petstore/openapi/lib/model/inline_object1.dart

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ part of openapi.api;
22

33
class InlineObject1 {
44
/* Additional data to pass to server */
5-
String additionalMetadata = null;
5+
String additionalMetadata = null;
66
/* file to upload */
7-
MultipartFile file = null;
7+
MultipartFile file = null;
88
InlineObject1();
99

1010
@override
@@ -14,16 +14,10 @@ class InlineObject1 {
1414

1515
InlineObject1.fromJson(Map<String, dynamic> json) {
1616
if (json == null) return;
17-
if (json['additionalMetadata'] == null) {
18-
additionalMetadata = null;
19-
} else {
20-
additionalMetadata = json['additionalMetadata'];
21-
}
22-
if (json['file'] == null) {
23-
file = null;
24-
} else {
25-
file = File.fromJson(json['file']);
26-
}
17+
additionalMetadata = json['additionalMetadata'];
18+
file = (json['file'] == null) ?
19+
null :
20+
File.fromJson(json['file']);
2721
}
2822

2923
Map<String, dynamic> toJson() {

samples/client/petstore/dart/flutter_petstore/openapi/lib/model/order.dart

Lines changed: 14 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ part of openapi.api;
22

33
class Order {
44

5-
int id = null;
5+
int id = null;
66

7-
int petId = null;
7+
int petId = null;
88

9-
int quantity = null;
9+
int quantity = null;
1010

11-
DateTime shipDate = null;
11+
DateTime shipDate = null;
1212
/* Order Status */
13-
String status = null;
13+
String status = null;
1414
//enum statusEnum { placed, approved, delivered, };{
1515

16-
bool complete = false;
16+
bool complete = false;
1717
Order();
1818

1919
@override
@@ -23,36 +23,14 @@ class Order {
2323

2424
Order.fromJson(Map<String, dynamic> json) {
2525
if (json == null) return;
26-
if (json['id'] == null) {
27-
id = null;
28-
} else {
29-
id = json['id'];
30-
}
31-
if (json['petId'] == null) {
32-
petId = null;
33-
} else {
34-
petId = json['petId'];
35-
}
36-
if (json['quantity'] == null) {
37-
quantity = null;
38-
} else {
39-
quantity = json['quantity'];
40-
}
41-
if (json['shipDate'] == null) {
42-
shipDate = null;
43-
} else {
44-
shipDate = DateTime.parse(json['shipDate']);
45-
}
46-
if (json['status'] == null) {
47-
status = null;
48-
} else {
49-
status = json['status'];
50-
}
51-
if (json['complete'] == null) {
52-
complete = null;
53-
} else {
54-
complete = json['complete'];
55-
}
26+
id = json['id'];
27+
petId = json['petId'];
28+
quantity = json['quantity'];
29+
shipDate = (json['shipDate'] == null) ?
30+
null :
31+
DateTime.parse(json['shipDate']);
32+
status = json['status'];
33+
complete = json['complete'];
5634
}
5735

5836
Map<String, dynamic> toJson() {

samples/client/petstore/dart/flutter_petstore/openapi/lib/model/pet.dart

Lines changed: 18 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ part of openapi.api;
22

33
class Pet {
44

5-
int id = null;
5+
int id = null;
66

7-
Category category = null;
7+
Category category = null;
88

9-
String name = null;
9+
String name = null;
1010

11-
List<String> photoUrls = [];
11+
List<String> photoUrls = [];
1212

13-
List<Tag> tags = [];
13+
List<Tag> tags = [];
1414
/* pet status in the store */
15-
String status = null;
15+
String status = null;
1616
//enum statusEnum { available, pending, sold, };{
1717
Pet();
1818

@@ -23,36 +23,18 @@ class Pet {
2323

2424
Pet.fromJson(Map<String, dynamic> json) {
2525
if (json == null) return;
26-
if (json['id'] == null) {
27-
id = null;
28-
} else {
29-
id = json['id'];
30-
}
31-
if (json['category'] == null) {
32-
category = null;
33-
} else {
34-
category = new Category.fromJson(json['category']);
35-
}
36-
if (json['name'] == null) {
37-
name = null;
38-
} else {
39-
name = json['name'];
40-
}
41-
if (json['photoUrls'] == null) {
42-
photoUrls = null;
43-
} else {
44-
photoUrls = (json['photoUrls'] as List).map((item) => item as String).toList();
45-
}
46-
if (json['tags'] == null) {
47-
tags = null;
48-
} else {
49-
tags = Tag.listFromJson(json['tags']);
50-
}
51-
if (json['status'] == null) {
52-
status = null;
53-
} else {
54-
status = json['status'];
55-
}
26+
id = json['id'];
27+
category = (json['category'] == null) ?
28+
null :
29+
Category.fromJson(json['category']);
30+
name = json['name'];
31+
photoUrls = (json['photoUrls'] == null) ?
32+
null :
33+
(json['photoUrls'] as List).cast<String>();
34+
tags = (json['tags'] == null) ?
35+
null :
36+
Tag.listFromJson(json['tags']);
37+
status = json['status'];
5638
}
5739

5840
Map<String, dynamic> toJson() {

samples/client/petstore/dart/flutter_petstore/openapi/lib/model/tag.dart

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ part of openapi.api;
22

33
class Tag {
44

5-
int id = null;
5+
int id = null;
66

7-
String name = null;
7+
String name = null;
88
Tag();
99

1010
@override
@@ -14,16 +14,8 @@ class Tag {
1414

1515
Tag.fromJson(Map<String, dynamic> json) {
1616
if (json == null) return;
17-
if (json['id'] == null) {
18-
id = null;
19-
} else {
20-
id = json['id'];
21-
}
22-
if (json['name'] == null) {
23-
name = null;
24-
} else {
25-
name = json['name'];
26-
}
17+
id = json['id'];
18+
name = json['name'];
2719
}
2820

2921
Map<String, dynamic> toJson() {

0 commit comments

Comments
 (0)