private static void fillUsedClasses()

in timescaledb-connector/src/main/java/com/epam/deltix/timebase/connector/util/RecordClassDescriptorUtils.java [91:129]


    private static void fillUsedClasses(RecordClassDescriptor descriptor, Set<String> usedClasses) {
        RecordClassDescriptor parent = descriptor.getParent();

        if (usedClasses.contains(descriptor.getName())) {
            return;
        }

        if (parent != null) {
            fillUsedClasses(parent, usedClasses);
            usedClasses.add(parent.getName());
        }

        DataField[] fields = descriptor.getFields();
        for (DataField field : fields) {
            var dataType = field.getType();

            if (dataType instanceof ClassDataType) {
                ClassDataType type = (ClassDataType) dataType;
                RecordClassDescriptor[] classDescriptors = type.getDescriptors();

                for (RecordClassDescriptor d : classDescriptors) {
                    fillUsedClasses(d, usedClasses);
                    usedClasses.add(d.getName());
                }
            } else if (dataType instanceof ArrayDataType) {
                ArrayDataType type = (ArrayDataType) dataType;
                DataType elementDataType = type.getElementDataType();

                if (elementDataType instanceof  ClassDataType) {
                    ClassDataType classElementType = (ClassDataType) elementDataType;
                    RecordClassDescriptor[] descriptors = classElementType.getDescriptors();
                    for (RecordClassDescriptor d : descriptors) {
                        fillUsedClasses(d, usedClasses);
                        usedClasses.add(d.getName());
                    }
                }
            }
        }
    }