-
Notifications
You must be signed in to change notification settings - Fork 39
Description
The current method 'an_avro_schema()' automatically cast the result as a Map.
We could improve this by allowing either Map or List.
Going from :
Map<String, Object> asMap = Mapper.read(objects.resolve(content)); String name = (String) asMap.get("name"); assertThat(name).isNotNull(); Schema schema = new Schema.Parser().parse(Mapper.toJson(asMap)); objects.add("_kafka.schemas." + name.toLowerCase(ROOT), schema);
to :
var avro = Mapper.read(objects.resolve(content)); if (avro == null) { return; } if (avro instanceof Map asMap) { String name = (String) asMap.get("name"); assertThat(name).isNotNull(); Schema schema = new Schema.Parser().parse(Mapper.toJson(asMap)); objects.add("_kafka.schemas." + name.toLowerCase(ROOT), schema); } if (avro instanceof List asList) { asList.forEach(( obj) -> { var asMap = (Map<String, Object>) obj; String name = (String) asMap.get("name"); assertThat(name).isNotNull(); Schema schema = new Schema.Parser().parse(Mapper.toJson(asMap)); objects.add("_kafka.schemas." + name.toLowerCase(ROOT), schema); }); }
Note here that as the library it built with SDK17, I could not make use of pattern matching.