in rest/src/main/java/com/epam/eco/schemacatalog/rest/utils/SchemaProfileCreator.java [76:112]
private Set<SchemaEntity> getAllSchemaEntities(FullSchemaInfo schemaInfo, PartFormatter formatter) {
Validate.notNull(schemaInfo, "Schema info can't be null");
MetadataBrowser<FullSchemaInfo> metadataBrowser = schemaInfo.getMetadataBrowser();
Map<String, SchemaEntity.Builder> builders = new HashMap<>();
List<FieldInfo> fieldInfoList = schemaInfo.getSchemaFieldInfosAsList();
for (FieldInfo fieldInfo : fieldInfoList) {
Schema parent = fieldInfo.getParent();
Schema.Field field = fieldInfo.getField();
SchemaEntity.Builder builder = builders.get(parent.getFullName());
if (builder == null) {
builder = new SchemaEntity.Builder();
builder.name(parent.getName()).namespace(parent.getNamespace());
if (schemaInfo.getSchemaAvro().equals(parent)) {
builder.root(true);
}
builders.put(parent.getFullName(), builder);
}
builder.addField(SchemaField.builder()
.name(field.name())
.type(constructSchemaFieldType(parent, field.schema()))
.defaultValue(jsonNullToJava(field.defaultVal()))
.defaultValuePresent(field.defaultVal() != null)
.nativeDoc(field.doc())
.metadata(
FormattedMetadata.with(
metadataBrowser.
getFieldMetadata(parent.getFullName(), field.name()).orElse(null),
formatter))
.build());
}
return builders.values().stream()
.map(SchemaEntity.Builder::build)
.collect(Collectors.toSet());
}