Skip to content

Can't read avro schemas as an array #684

@TheryMaxime

Description

@TheryMaxime

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions