Skip to content

Commit 3dd93be

Browse files
authored
Introduce changes necessary for Dart 3.0.0/Flutter 3.10.0 (#15516)
* Expose `deserialize` function. * Rename `json` argument. * Generate Petstore code. * Upgrade minimum version of `intl` dependency.
1 parent e0d89c3 commit 3dd93be

File tree

6 files changed

+75
-37
lines changed

6 files changed

+75
-37
lines changed

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

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -134,19 +134,19 @@ class ApiClient {
134134
}
135135
{{#native_serialization}}
136136
137-
Future<dynamic> deserializeAsync(String json, String targetType, {bool growable = false,}) async =>
137+
Future<dynamic> deserializeAsync(String value, String targetType, {bool growable = false,}) async =>
138138
// ignore: deprecated_member_use_from_same_package
139-
deserialize(json, targetType, growable: growable);
139+
deserialize(value, targetType, growable: growable);
140140
141141
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use deserializeAsync() instead.')
142-
dynamic deserialize(String json, String targetType, {bool growable = false,}) {
142+
dynamic deserialize(String value, String targetType, {bool growable = false,}) {
143143
// Remove all spaces. Necessary for regular expressions as well.
144144
targetType = targetType.replaceAll(' ', ''); // ignore: parameter_assignments
145145
146146
// If the expected target type is String, nothing to do...
147147
return targetType == 'String'
148-
? json
149-
: _deserialize(jsonDecode(json), targetType, growable: growable);
148+
? value
149+
: fromJson(json.decode(value), targetType, growable: growable);
150150
}
151151
{{/native_serialization}}
152152
@@ -157,7 +157,8 @@ class ApiClient {
157157
String serialize(Object? value) => value == null ? '' : json.encode(value);
158158
159159
{{#native_serialization}}
160-
static dynamic _deserialize(dynamic value, String targetType, {bool growable = false}) {
160+
/// Returns a native instance of an OpenAPI class matching the [specified type][targetType].
161+
static dynamic fromJson(dynamic value, String targetType, {bool growable = false,}) {
161162
try {
162163
switch (targetType) {
163164
case 'String':
@@ -189,18 +190,18 @@ class ApiClient {
189190
dynamic match;
190191
if (value is List && (match = _regList.firstMatch(targetType)?.group(1)) != null) {
191192
return value
192-
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
193+
.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,))
193194
.toList(growable: growable);
194195
}
195196
if (value is Set && (match = _regSet.firstMatch(targetType)?.group(1)) != null) {
196197
return value
197-
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
198+
.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,))
198199
.toSet();
199200
}
200201
if (value is Map && (match = _regMap.firstMatch(targetType)?.group(1)) != null) {
201202
return Map<String, dynamic>.fromIterables(
202203
value.keys.cast<String>(),
203-
value.values.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,)),
204+
value.values.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,)),
204205
);
205206
}
206207
}
@@ -231,6 +232,17 @@ class DeserializationMessage {
231232
final bool growable;
232233
}
233234

235+
/// Primarily intended for use in an isolate.
236+
Future<dynamic> decodeAsync(DeserializationMessage message) async {
237+
// Remove all spaces. Necessary for regular expressions as well.
238+
final targetType = message.targetType.replaceAll(' ', '');
239+
240+
// If the expected target type is String, nothing to do...
241+
return targetType == 'String'
242+
? message.json
243+
: json.decode(message.json);
244+
}
245+
234246
/// Primarily intended for use in an isolate.
235247
Future<dynamic> deserializeAsync(DeserializationMessage message) async {
236248
// Remove all spaces. Necessary for regular expressions as well.
@@ -239,8 +251,8 @@ Future<dynamic> deserializeAsync(DeserializationMessage message) async {
239251
// If the expected target type is String, nothing to do...
240252
return targetType == 'String'
241253
? message.json
242-
: ApiClient._deserialize(
243-
jsonDecode(message.json),
254+
: ApiClient.fromJson(
255+
json.decode(message.json),
244256
targetType,
245257
growable: message.growable,
246258
);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ environment:
1616
sdk: '>=2.12.0 <3.0.0'
1717
dependencies:
1818
http: '>=0.13.0 <0.14.0'
19-
intl: '^0.17.0'
19+
intl: '^0.18.0'
2020
meta: '^1.1.8'
2121
dev_dependencies:
2222
test: '>=1.16.0 <1.18.0'
2323
{{#json_serializable}}
2424
build_runner: '^1.10.9'
25-
json_serializable: '^3.5.1'{{/json_serializable}}
25+
json_serializable: '^3.5.1'{{/json_serializable}}

samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_client.dart

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,19 +143,19 @@ class ApiClient {
143143
);
144144
}
145145

146-
Future<dynamic> deserializeAsync(String json, String targetType, {bool growable = false,}) async =>
146+
Future<dynamic> deserializeAsync(String value, String targetType, {bool growable = false,}) async =>
147147
// ignore: deprecated_member_use_from_same_package
148-
deserialize(json, targetType, growable: growable);
148+
deserialize(value, targetType, growable: growable);
149149

150150
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use deserializeAsync() instead.')
151-
dynamic deserialize(String json, String targetType, {bool growable = false,}) {
151+
dynamic deserialize(String value, String targetType, {bool growable = false,}) {
152152
// Remove all spaces. Necessary for regular expressions as well.
153153
targetType = targetType.replaceAll(' ', ''); // ignore: parameter_assignments
154154

155155
// If the expected target type is String, nothing to do...
156156
return targetType == 'String'
157-
? json
158-
: _deserialize(jsonDecode(json), targetType, growable: growable);
157+
? value
158+
: fromJson(json.decode(value), targetType, growable: growable);
159159
}
160160

161161
// ignore: deprecated_member_use_from_same_package
@@ -164,7 +164,8 @@ class ApiClient {
164164
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use serializeAsync() instead.')
165165
String serialize(Object? value) => value == null ? '' : json.encode(value);
166166

167-
static dynamic _deserialize(dynamic value, String targetType, {bool growable = false}) {
167+
/// Returns a native instance of an OpenAPI class matching the [specified type][targetType].
168+
static dynamic fromJson(dynamic value, String targetType, {bool growable = false,}) {
168169
try {
169170
switch (targetType) {
170171
case 'String':
@@ -197,18 +198,18 @@ class ApiClient {
197198
dynamic match;
198199
if (value is List && (match = _regList.firstMatch(targetType)?.group(1)) != null) {
199200
return value
200-
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
201+
.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,))
201202
.toList(growable: growable);
202203
}
203204
if (value is Set && (match = _regSet.firstMatch(targetType)?.group(1)) != null) {
204205
return value
205-
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
206+
.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,))
206207
.toSet();
207208
}
208209
if (value is Map && (match = _regMap.firstMatch(targetType)?.group(1)) != null) {
209210
return Map<String, dynamic>.fromIterables(
210211
value.keys.cast<String>(),
211-
value.values.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,)),
212+
value.values.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,)),
212213
);
213214
}
214215
}
@@ -237,6 +238,17 @@ class DeserializationMessage {
237238
final bool growable;
238239
}
239240

241+
/// Primarily intended for use in an isolate.
242+
Future<dynamic> decodeAsync(DeserializationMessage message) async {
243+
// Remove all spaces. Necessary for regular expressions as well.
244+
final targetType = message.targetType.replaceAll(' ', '');
245+
246+
// If the expected target type is String, nothing to do...
247+
return targetType == 'String'
248+
? message.json
249+
: json.decode(message.json);
250+
}
251+
240252
/// Primarily intended for use in an isolate.
241253
Future<dynamic> deserializeAsync(DeserializationMessage message) async {
242254
// Remove all spaces. Necessary for regular expressions as well.
@@ -245,8 +257,8 @@ Future<dynamic> deserializeAsync(DeserializationMessage message) async {
245257
// If the expected target type is String, nothing to do...
246258
return targetType == 'String'
247259
? message.json
248-
: ApiClient._deserialize(
249-
jsonDecode(message.json),
260+
: ApiClient.fromJson(
261+
json.decode(message.json),
250262
targetType,
251263
growable: message.growable,
252264
);

samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ environment:
1010
sdk: '>=2.12.0 <3.0.0'
1111
dependencies:
1212
http: '>=0.13.0 <0.14.0'
13-
intl: '^0.17.0'
13+
intl: '^0.18.0'
1414
meta: '^1.1.8'
1515
dev_dependencies:
1616
test: '>=1.16.0 <1.18.0'
17+

samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,19 +143,19 @@ class ApiClient {
143143
);
144144
}
145145

146-
Future<dynamic> deserializeAsync(String json, String targetType, {bool growable = false,}) async =>
146+
Future<dynamic> deserializeAsync(String value, String targetType, {bool growable = false,}) async =>
147147
// ignore: deprecated_member_use_from_same_package
148-
deserialize(json, targetType, growable: growable);
148+
deserialize(value, targetType, growable: growable);
149149

150150
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use deserializeAsync() instead.')
151-
dynamic deserialize(String json, String targetType, {bool growable = false,}) {
151+
dynamic deserialize(String value, String targetType, {bool growable = false,}) {
152152
// Remove all spaces. Necessary for regular expressions as well.
153153
targetType = targetType.replaceAll(' ', ''); // ignore: parameter_assignments
154154

155155
// If the expected target type is String, nothing to do...
156156
return targetType == 'String'
157-
? json
158-
: _deserialize(jsonDecode(json), targetType, growable: growable);
157+
? value
158+
: fromJson(json.decode(value), targetType, growable: growable);
159159
}
160160

161161
// ignore: deprecated_member_use_from_same_package
@@ -164,7 +164,8 @@ class ApiClient {
164164
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use serializeAsync() instead.')
165165
String serialize(Object? value) => value == null ? '' : json.encode(value);
166166

167-
static dynamic _deserialize(dynamic value, String targetType, {bool growable = false}) {
167+
/// Returns a native instance of an OpenAPI class matching the [specified type][targetType].
168+
static dynamic fromJson(dynamic value, String targetType, {bool growable = false,}) {
168169
try {
169170
switch (targetType) {
170171
case 'String':
@@ -279,18 +280,18 @@ class ApiClient {
279280
dynamic match;
280281
if (value is List && (match = _regList.firstMatch(targetType)?.group(1)) != null) {
281282
return value
282-
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
283+
.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,))
283284
.toList(growable: growable);
284285
}
285286
if (value is Set && (match = _regSet.firstMatch(targetType)?.group(1)) != null) {
286287
return value
287-
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
288+
.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,))
288289
.toSet();
289290
}
290291
if (value is Map && (match = _regMap.firstMatch(targetType)?.group(1)) != null) {
291292
return Map<String, dynamic>.fromIterables(
292293
value.keys.cast<String>(),
293-
value.values.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,)),
294+
value.values.map<dynamic>((dynamic v) => fromJson(v, match, growable: growable,)),
294295
);
295296
}
296297
}
@@ -319,6 +320,17 @@ class DeserializationMessage {
319320
final bool growable;
320321
}
321322

323+
/// Primarily intended for use in an isolate.
324+
Future<dynamic> decodeAsync(DeserializationMessage message) async {
325+
// Remove all spaces. Necessary for regular expressions as well.
326+
final targetType = message.targetType.replaceAll(' ', '');
327+
328+
// If the expected target type is String, nothing to do...
329+
return targetType == 'String'
330+
? message.json
331+
: json.decode(message.json);
332+
}
333+
322334
/// Primarily intended for use in an isolate.
323335
Future<dynamic> deserializeAsync(DeserializationMessage message) async {
324336
// Remove all spaces. Necessary for regular expressions as well.
@@ -327,8 +339,8 @@ Future<dynamic> deserializeAsync(DeserializationMessage message) async {
327339
// If the expected target type is String, nothing to do...
328340
return targetType == 'String'
329341
? message.json
330-
: ApiClient._deserialize(
331-
jsonDecode(message.json),
342+
: ApiClient.fromJson(
343+
json.decode(message.json),
332344
targetType,
333345
growable: message.growable,
334346
);

samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ environment:
1010
sdk: '>=2.12.0 <3.0.0'
1111
dependencies:
1212
http: '>=0.13.0 <0.14.0'
13-
intl: '^0.17.0'
13+
intl: '^0.18.0'
1414
meta: '^1.1.8'
1515
dev_dependencies:
1616
test: '>=1.16.0 <1.18.0'
17+

0 commit comments

Comments
 (0)