load method
Loads data items from external JSON file.
correlation_id
(optional) transaction id to trace execution through call chain. Return Future that receives loaded items Throws error.
Implementation
@override
Future<List<T>> load(String? correlation_id) async {
if (path == null || path == '') {
throw ConfigException(null, 'NO path', 'Data file path is not set');
}
var file = File(path!);
if (!file.existsSync()) {
return <T>[];
}
try {
var json = file.readAsStringSync();
var list = JsonConverter.toNullableMap(json);
var arr = ArrayConverter.listToArray(list);
try {
var objectsList = arr.map((item) {
var obj = TypeReflector.createInstanceByType(T, []);
obj.fromJson(item);
return obj as T;
}).toList();
return objectsList;
} on NoSuchMethodError {
throw Exception('Data class must have fromJson method for conversions');
}
} catch (ex) {
var err = FileException(correlation_id, 'READ_FAILED',
'Failed to read data file: ' + path.toString())
.withCause(ex);
throw err;
}
}