private void parseAvroRecord()

in doc-architect/doc-architect-core/src/main/java/com/docarchitect/core/scanner/impl/schema/AvroSchemaScanner.java [224:279]


    private void parseAvroRecord(JsonNode recordNode, String componentId,
                                 List<DataEntity> dataEntities, List<MessageFlow> messageFlows) {
        if (!recordNode.has(FIELD_TYPE)) {
            return;
        }

        String type = recordNode.get(FIELD_TYPE).asText();
        if (!TYPE_RECORD.equals(type)) {
            return; // Only process record types
        }

        String name = recordNode.has(FIELD_NAME) ? recordNode.get(FIELD_NAME).asText() : DEFAULT_RECORD_NAME;
        String namespace = recordNode.has(FIELD_NAMESPACE) ? recordNode.get(FIELD_NAMESPACE).asText() : null;
        String fullName = namespace != null ? namespace + "." + name : name;
        String description = recordNode.has(FIELD_DOC) ? recordNode.get(FIELD_DOC).asText() : DEFAULT_DESCRIPTION_PREFIX + name;

        List<DataEntity.Field> fields = new ArrayList<>();

        // Extract fields
        if (recordNode.has(FIELD_FIELDS)) {
            JsonNode fieldsNode = recordNode.get(FIELD_FIELDS);
            for (JsonNode fieldNode : fieldsNode) {
                DataEntity.Field field = parseField(fieldNode);
                if (field != null) {
                    fields.add(field);
                }
            }
        }

        // Create data entity for this record
        DataEntity entity = new DataEntity(
            componentId,
            fullName,
            COMPONENT_TYPE_AVRO_RECORD,
            fields,
            null, // Avro doesn't have explicit primary keys
            description
        );

        dataEntities.add(entity);
        log.debug("Found Avro record: {} with {} fields", fullName, fields.size());

        // Create message flow if this appears to be an event/message schema
        if (isEventSchema(name, namespace)) {
            MessageFlow messageFlow = new MessageFlow(
                componentId, // publisher
                null, // subscriber unknown
                name, // topic derived from schema name
                fullName, // message type
                fullName, // schema
                MESSAGE_PROTOCOL_KAFKA // Avro commonly used with Kafka
            );
            messageFlows.add(messageFlow);
            log.debug("Created message flow for Avro schema: {}", fullName);
        }
    }