in src/main/java/com/epam/eco/commons/avro/AvroUtils.java [341:373]
public static Type effectiveTypeOfGenericSchema(Object genericSchema) throws UnknownTypeException {
Validate.notNull(genericSchema, "Generic schema is null");
if (genericSchema instanceof Map) {
Type type = typeForName(
((Map<String, Object>)genericSchema).get(AvroConstants.SCHEMA_KEY_TYPE).toString());
if (type == Type.MAP) {
return effectiveTypeOfGenericSchema(
((Map<String, Object>)genericSchema).get(AvroConstants.SCHEMA_KEY_MAP_VALUES));
} else if (type == Type.ARRAY) {
return effectiveTypeOfGenericSchema(
((Map<String, Object>)genericSchema).get(AvroConstants.SCHEMA_KEY_ARRAY_ITEMS));
} else {
return type;
}
} else if (genericSchema instanceof List) {
List<Object> genericUnionSchema = (List<Object>)genericSchema;
if (genericUnionSchema.size() == 1) {
return effectiveTypeOfGenericSchema(genericUnionSchema.get(0));
} else if (genericUnionSchema.size() == 2) {
Object first = genericUnionSchema.get(0);
Object second = genericUnionSchema.get(1);
if (Type.NULL.getName().equals(first)) {
return effectiveTypeOfGenericSchema(second);
} else if (Type.NULL.getName().equals(second)) {
return effectiveTypeOfGenericSchema(first);
}
}
return Type.UNION;
} else {
return typeForName(genericSchema.toString());
}
}