Decathlon / Decathlon/tzatziki

Can't read avro schemas as an array

Open
#684 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
87
Forks
42
Avg merge
4d 7h
Merged PRs (30d)
32

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 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) 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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.