public static List getBaseClassDescriptors()

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


    public static List<com.epam.deltix.timebase.messages.schema.RecordClassDescriptor> getBaseClassDescriptors(com.epam.deltix.timebase.messages.schema.ClassDescriptorInfo[] descriptors) {
        if (descriptors.length == 0) {
            throw new IllegalArgumentException("Could not find base RecordClassDescriptor for empty input descriptors.");
        }

        if (descriptors.length == 1) {
            if (descriptors[0] instanceof com.epam.deltix.timebase.messages.schema.EnumClassDescriptor) {
                throw new IllegalArgumentException("Could not find base RecordClassDescriptor. Only EnumClassDescriptor found.");
            }

            return Collections.singletonList((com.epam.deltix.timebase.messages.schema.RecordClassDescriptor) descriptors[0]);
        }

        Set<String> usedClasses = new HashSet<>();

        List<com.epam.deltix.timebase.messages.schema.RecordClassDescriptor> descriptorsList = Arrays.asList(descriptors).stream()
                .filter(descriptor -> descriptor instanceof com.epam.deltix.timebase.messages.schema.RecordClassDescriptor)
                .map(descriptor -> (com.epam.deltix.timebase.messages.schema.RecordClassDescriptor) descriptor)
                .collect(Collectors.toList());
        Map<CharSequence, com.epam.deltix.timebase.messages.schema.RecordClassDescriptor> descriptorsMap = descriptorsList.stream()
                .collect(Collectors.toMap(com.epam.deltix.timebase.messages.schema.RecordClassDescriptor::getName, Function.identity()));
        descriptorsList.forEach(descriptor -> fillUsedClasses(descriptor, usedClasses, descriptorsMap));

        return descriptorsList.stream()
                .filter(descriptor -> !usedClasses.contains(descriptor.getName()))
                .collect(Collectors.toList());
    }