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());
}