Skip to content

Commit 42fe46c

Browse files
committed
fixup! feat!: improve deserialization logic
1 parent 7e7fc67 commit 42fe46c

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

lib/src/core/definitions/extensions/json_parser.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,19 @@ extension ParseField on Map<String, dynamic> {
205205
throw FormatException("$T");
206206
}
207207

208+
List<T> parseRequiredArrayField<T>(
209+
String name, [
210+
Set<String>? parsedFields,
211+
]) {
212+
final result = parseArrayField<T>(name, parsedFields);
213+
214+
if (result == null) {
215+
throw FormatException("Missing required field $name");
216+
}
217+
218+
return result;
219+
}
220+
208221
/// Parses a field with a given [name] as a [DataSchema].
209222
///
210223
/// Returns `null` if the field should not be present or if it is not a JSON

lib/src/core/definitions/thing_description.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import "package:curie/curie.dart";
88
import "package:meta/meta.dart";
99

10-
import "../exceptions.dart";
1110
import "additional_expected_response.dart";
1211
import "context.dart";
1312
import "data_schema.dart";
@@ -86,7 +85,7 @@ class ThingDescription {
8685
final id = json.parseField<String>("id", parsedFields);
8786

8887
final security =
89-
json.parseArrayField<String>("security", parsedFields) ?? [];
88+
json.parseRequiredArrayField<String>("security", parsedFields);
9089

9190
final securityDefinitions =
9291
json.parseSecurityDefinitions(prefixMapping, parsedFields) ?? {};

test/core/thing_description_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void main() {
5252

5353
expect(
5454
() => ThingDescription.fromJson(thingDescriptionJson),
55-
throwsA(isA<ValidationException>()),
55+
throwsA(isA<FormatException>()),
5656
);
5757
});
5858

0 commit comments

Comments
 (0)