|
13 | 13 | import java.io.IOException; |
14 | 14 | import java.lang.reflect.Field; |
15 | 15 | import java.nio.charset.StandardCharsets; |
16 | | -import java.util.*; |
| 16 | +import java.util.Arrays; |
| 17 | +import java.util.Collections; |
| 18 | +import java.util.Comparator; |
| 19 | +import java.util.List; |
| 20 | +import java.util.Locale; |
| 21 | +import java.util.Map; |
| 22 | +import java.util.Optional; |
17 | 23 | import java.util.function.Supplier; |
| 24 | +import java.util.stream.Collector; |
18 | 25 | import java.util.stream.Collectors; |
19 | 26 |
|
20 | 27 | public class ConfigurationDocsGenerator { |
@@ -88,11 +95,27 @@ private static ConfigurationSection beanToConfigSections(Object configurationBea |
88 | 95 |
|
89 | 96 | @Nonnull |
90 | 97 | private static List<ConfigurationSection> sectionsFromEntries(List<ConfigurationEntryWithSection> entries) { |
91 | | - final Collection<ConfigurationSection> sections = entries.stream() |
| 98 | + return entries.stream() |
92 | 99 | .filter(ConfigurationEntryWithSection::hasSection) |
93 | | - .collect(Collectors.groupingBy(ConfigurationEntryWithSection::sectionHeading, Collectors.collectingAndThen(Collectors.toList(), list -> new ConfigurationSection(list.iterator().next().sectionHeading(), list.iterator().next().sectionDescription(), Collections.emptyList(), list.stream().map(ConfigurationEntryWithSection::entry).collect(Collectors.toList()))))).values(); |
94 | | - return sections.stream() |
95 | | - .sorted(Comparator.comparing(ConfigurationSection::hasPriority, Comparator.reverseOrder())).toList(); |
| 100 | + .collect(groupBySection()) |
| 101 | + .values() |
| 102 | + .stream() |
| 103 | + .sorted(sortByPriority()) |
| 104 | + .toList(); |
| 105 | + } |
| 106 | + |
| 107 | + private static Comparator<ConfigurationSection> sortByPriority() { |
| 108 | + return Comparator.comparing(ConfigurationSection::hasPriority, Comparator.reverseOrder()); |
| 109 | + } |
| 110 | + |
| 111 | + private static Collector<ConfigurationEntryWithSection, ?, Map<String, ConfigurationSection>> groupBySection() { |
| 112 | + return Collectors.groupingBy(ConfigurationEntryWithSection::sectionHeading, Collectors.collectingAndThen(Collectors.toList(), ConfigurationDocsGenerator::toConfigurationSection)); |
| 113 | + } |
| 114 | + |
| 115 | + private static ConfigurationSection toConfigurationSection(List<ConfigurationEntryWithSection> list) { |
| 116 | + final ConfigurationEntryWithSection section = list.stream().findFirst().orElseThrow(() -> new IllegalArgumentException("No configuration section found but expected!")); |
| 117 | + final List<ConfigurationEntry> entries = list.stream().map(ConfigurationEntryWithSection::entry).collect(Collectors.toList()); |
| 118 | + return new ConfigurationSection(section.sectionHeading(), section.sectionDescription(), Collections.emptyList(), entries); |
96 | 119 | } |
97 | 120 |
|
98 | 121 | @Nonnull |
|
0 commit comments