in log4j-docgen/src/main/java/org/apache/logging/log4j/docgen/processor/DescriptorGenerator.java [444:482]
private void populateConfigurationProperties(
final ElementImports imports,
final String qualifiedClassName,
final Iterable<? extends Element> members,
final Map<? super String, String> descriptions,
final PluginType pluginType) {
final Collection<PluginAttribute> pluginAttributes =
new TreeSet<>(Comparator.comparing(a -> defaultString(a.getName())));
final Collection<PluginElement> pluginElements =
new TreeSet<>(Comparator.comparing(e -> defaultString(e.getType())));
// Gather documentation, which can be on any member.
for (final Element member : members) {
final String name = getAttributeOrPropertyName(member);
final String asciiDoc = converter.toAsciiDoc(member, imports, qualifiedClassName);
descriptions.compute(name, (key, value) -> Stream.of(value, asciiDoc)
.filter(StringUtils::isNotEmpty)
.collect(Collectors.joining("\n")));
}
// Creates attributes and elements
for (final Element member : members) {
final String description = descriptions.get(getAttributeOrPropertyName(member));
for (final AnnotationMirror annotation : annotations.findAttributeAndPropertyAnnotations(member)) {
if (annotations.isAttributeAnnotation(annotation)) {
pluginAttributes.add(createPluginAttribute(
member,
imports,
qualifiedClassName,
description,
annotations
.getAttributeSpecifiedName(annotation)
.orElseGet(() -> getAttributeOrPropertyName(member))));
} else {
pluginElements.add(createPluginElement(member, imports, qualifiedClassName, description));
}
}
}
pluginAttributes.forEach(pluginType::addAttribute);
pluginElements.forEach(pluginType::addElement);
}