in log4j-docgen/src/main/java/org/apache/logging/log4j/docgen/generator/SchemaGenerator.java [246:286]
private static void writePluginElement(
final TypeLookup lookup, final PluginElement element, final XMLStreamWriter writer)
throws XMLStreamException {
final String type = element.getType();
@Nullable final String xmlType = getXmlType(lookup, type);
if (xmlType == null) {
return;
}
final ArtifactSourcedType sourcedType = lookup.get(type);
if (sourcedType == null) {
return;
}
final Type rawType = sourcedType.type;
if (!(rawType instanceof AbstractType)) {
return;
}
final AbstractType abstractType = (AbstractType) rawType;
final PluginType pluginType = abstractType instanceof PluginType ? (PluginType) abstractType : null;
/*
* If a plugin extends another plugin or has multiple aliases
* we use a <group> element.
*/
if (pluginType == null
|| !pluginType.getAliases().isEmpty()
|| !pluginType.getImplementations().isEmpty()) {
writer.writeStartElement(XSD_NAMESPACE, "group");
writer.writeAttribute("ref", xmlType);
writeMultiplicity(element.isRequired(), element.getMultiplicity(), writer);
writeDocumentation(element.getDescription(), writer);
writer.writeEndElement();
} else {
for (final String key : getKeyAndAliases(pluginType)) {
writer.writeStartElement(XSD_NAMESPACE, "element");
writer.writeAttribute("name", key);
writer.writeAttribute("type", xmlType);
writeMultiplicity(element.isRequired(), element.getMultiplicity(), writer);
writeDocumentation(element.getDescription(), writer);
writer.writeEndElement();
}
}
}