in src/main/java/com/epam/eco/commons/avro/converter/DefaultAvroConverters.java [394:417]
private void validate(Map<String, Object> value, Schema schema) {
List<Field> schemaFields = schema.getFields();
List<String> fieldsDisjunction = new ArrayList<>();
for (Field schemaField : schemaFields) {
if (!value.containsKey(schemaField.name()) && !isUnionWithNull(schemaField)) {
fieldsDisjunction.add(schemaField.name());
}
}
List<String> schemaFieldsNames = schemaFields.stream()
.map(Field::name)
.toList();
for (String valueName : value.keySet()) {
if (!schemaFieldsNames.contains(valueName)) {
fieldsDisjunction.add(valueName);
}
}
if (!fieldsDisjunction.isEmpty()) {
String message = String.join(", ", fieldsDisjunction);
throw new AvroConversionException(value, schema, "Fields disjunction: " + message);
}
}